JP2018521385A - 共有システムキャッシュの仮想化制御のための方法および装置 - Google Patents

共有システムキャッシュの仮想化制御のための方法および装置 Download PDF

Info

Publication number
JP2018521385A
JP2018521385A JP2017558413A JP2017558413A JP2018521385A JP 2018521385 A JP2018521385 A JP 2018521385A JP 2017558413 A JP2017558413 A JP 2017558413A JP 2017558413 A JP2017558413 A JP 2017558413A JP 2018521385 A JP2018521385 A JP 2018521385A
Authority
JP
Japan
Prior art keywords
cache
component
maintenance
memory
status command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017558413A
Other languages
English (en)
Inventor
ヤンル・リ
スッバラオ・パラチャルラ
モイヌル・カーン
アラン・アルティエリ
アゼディン・トウズニ
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2018521385A publication Critical patent/JP2018521385A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

態様は、システムキャッシュのコンポーネントキャッシュに対するキャッシュ保守またはステータス動作を実施するためのコンピューティングデバイス、システム、および方法を含む。コンピューティングデバイスは、コンポーネントキャッシュ構成テーブルを生成してよく、コンポーネントキャッシュの少なくとも1つのコンポーネントキャッシュインジケータをコンポーネントキャッシュのマスタに割り当ててよく、少なくとも1つの制御レジスタを集中制御エンティティによってコンポーネントキャッシュインジケータにマッピングしてよい。コンピューティングデバイスは、集中制御エンティティをバイパスして、システムキャッシュの仮想化ビューを発見するとともにコンポーネントキャッシュに対するキャッシュ保守またはステータスコマンドを発行するために、コンポーネントキャッシュインジケータがコンポーネントキャッシュのマスタによってアクセス可能であるようなコンポーネントキャッシュインジケータを記憶してよい。コンピューティングデバイスは、集中制御エンティティをバイパスして、キャッシュ保守またはステータスコマンドおよびコンポーネントキャッシュに関連付けられた制御レジスタによってキャッシュ保守またはステータスコマンドを受け取ってよい。

Description

本発明は、共有システムキャッシュの仮想化制御のための方法および装置に関する。
今日のモバイルシステムオンチップ(SoC)は、DRAM技術に基づく共通のメインメモリを共有する複数のサブシステム、たとえば、アプリケーションCPU(Apps CPU)、GPU、およびビデオを含む。サブシステムの各々は、頻繁に使用されるデータへの高速アクセスのために、またメインメモリへのアクセスを最小限に抑えるために、1つまたは複数のローカルメモリを採用する。ローカルメモリは、通常、サブシステムの必要に応じてソフトウェア管理されるかまたはハードウェア管理されるかのいずれかである、キャッシュとして構成される。製品世代にわたる性能スケーリングは、ローカルメモリのサイズを増大させる必要がある。このスケーリング方式は、面積および静的電力が増大するという欠点がある。また、大部分のユースケースでは、サブシステムのすべてが同時にアクティブであるとは限らないため、ローカルメモリの利用は少なくすることができる。
共有システムキャッシュは、ローカルメモリのすべてを共有オンチップメモリリソースの中にプールすることによって、これらの欠点に対処することができる。システムキャッシュは、そのサイズがすべてのローカルメモリの統合サイズよりも小さいと予期されるため、潜在的に面積を節約することができる。システムキャッシュはまた、1つまたは2つのアクティブなサブシステムの共通のユースケースにおいて、著しい電力節約およびより高い性能をもたらすと予期される。これらの使用シナリオの場合、アクティブなサブシステムは、メインメモリへのアクセス数を低減できるとともにより高い全体的な性能およびより低い電力をもたらす、潜在的にもっと大きいオンチップローカルメモリへのアクセスを有する。
SoCサブシステムのために共有キャッシュが利用可能なシステムでは、割り当てられたSoCマスタによる使用のために、システムキャッシュの一部分が排他的に使用されるようにパーティショニングされる。そのようなシステムにおいて生じるいくつかの問題がある。マスタは、システム実行時において電力崩壊(power collapse)する場合がある。現在のシステムでは、アプリケーションプロセッササブシステム(APSS)は、共有キャッシュ全体を管理する。APSSが電力崩壊する場合、他のマスタは、キャッシュパーティションをディアクティベートまたはフラッシュすることなどのキャッシュ管理コマンドを実行することができない。APSSを通じてシステムキャッシュを管理することはまた、システムキャッシュを管理するときに余分なソフトウェア相互作用を使用して、もっと大きいオーバーヘッドを引き起こす。
米国特許出願第14/333,981号 米国特許出願第14/334,010号
様々な態様の方法および装置は、コンポーネントキャッシュに対するキャッシュ保守またはステータス動作を実施するための回路および方法を提供する。態様方法は、コンポーネントキャッシュインジケータがコンポーネントキャッシュのマスタによってアクセス可能であるような、コンポーネントキャッシュのコンポーネントキャッシュインジケータを記憶することと、集中制御エンティティをバイパスして、コンポーネントキャッシュに対するキャッシュ保守またはステータスコマンドをマスタによって発行することと、集中制御エンティティをバイパスして、キャッシュ保守またはステータスコマンドおよびコンポーネントキャッシュに関連付けられた制御レジスタによってキャッシュ保守またはステータスコマンドを受け取ることとを含んでよい。
一態様では、コンポーネントキャッシュインジケータがコンポーネントキャッシュのマスタによってアクセス可能であるような、コンポーネントキャッシュのコンポーネントキャッシュインジケータを記憶することは、コンポーネントキャッシュ用の制御空間の仮想化ビューをマスタに提供することを含んでよく、態様方法は、集中制御エンティティをバイパスすることによって、コンポーネントキャッシュの機能をマスタによって発見することをさらに含んでよい。
態様方法は、キャッシュ保守またはステータスコマンドおよびコンポーネントキャッシュに関連付けられた制御レジスタのアドレスを、キャッシュ保守またはステータスコマンドに割り当てることと、キャッシュ保守またはステータスコマンドにデータを割り当てることと、キャッシュ保守またはステータスコマンドおよびコンポーネントキャッシュに関連付けられた制御レジスタを、データを用いて更新することと、制御レジスタのキャッシュ保守またはステータス動作をデータに基づいて実施することとをさらに含んでよい。
一態様では、キャッシュ保守またはステータスコマンドにデータを割り当てることは、データとしてのキャッシュメモリのメモリ仮想アドレスをキャッシュ保守またはステータスコマンドに割り当てることを含んでよい。
態様方法は、キャッシュ保守またはステータスコマンドのデータがキャッシュメモリのメモリ仮想アドレスを含むかどうかを判定することと、データがキャッシュメモリのメモリ仮想アドレスであるという判定に応答して、キャッシュメモリのメモリ仮想アドレスをキャッシュメモリのメモリ物理アドレスに変換することと、データをキャッシュメモリのメモリ物理アドレスと置換することとをさらに含んでよい。
一態様では、キャッシュ保守またはステータスコマンドのデータは、少なくとも1つのキャッシュセットおよび少なくとも1つのキャッシュウェイを含んでよい。一態様では、制御レジスタのアドレスは、制御レジスタの仮想アドレスであってよく、態様方法は、制御レジスタの仮想アドレスを制御レジスタの物理アドレスに変換することをさらに含んでよい。
態様方法は、集中制御エンティティによってコンポーネントキャッシュ構成テーブルを生成することと、少なくとも1つのコンポーネントキャッシュインジケータを集中制御エンティティによってマスタに割り当てることと、少なくとも1つの制御レジスタを集中制御エンティティによってコンポーネントキャッシュインジケータにマッピングすることと、複数のマスタによって複数の制御レジスタに並行して直接アクセスすることとをさらに含んでよい。そのような態様では、集中制御エンティティをバイパスして、コンポーネントキャッシュに対するキャッシュ保守またはステータスコマンドをマスタによって発行することは、集中制御エンティティをバイパスして、複数のマスタによって複数のコンポーネントキャッシュに対する複数のキャッシュ保守またはステータスコマンドを並行して発行することを含んでよく、集中制御エンティティをバイパスして、キャッシュ保守またはステータスコマンドおよびコンポーネントキャッシュに関連付けられた制御レジスタによってキャッシュ保守またはステータスコマンドを受け取ることは、集中制御エンティティをバイパスして、複数のキャッシュ保守またはステータスコマンドおよび複数のコンポーネントキャッシュに関連付けられた複数の制御レジスタによって複数のキャッシュ保守またはステータスコマンドを並行して受け取ることを含んでよい。
態様は、プロセッサと、プロセッサに通信可能に接続され、データを記憶しかつ取り出すための高速アクセスを提供するように構成されるキャッシュメモリと、プロセッサ、キャッシュメモリ、および複数の制御レジスタに通信可能に接続されたシステムキャッシュコントローラと、プロセッサおよびシステムキャッシュコントローラに通信可能に接続された集中制御エンティティと、システムキャッシュコントローラおよびプロセッサに通信可能に接続され、キャッシュメモリのコンポーネントキャッシュに対するキャッシュ保守またはステータスコマンドを実施するためにプロセッサに割り当てられた、制御レジスタとを有するコンピューティングデバイスを含む。そのような態様では、プロセッサは、コンポーネントキャッシュのマスタであるように構成されるとともに、上記で説明した1つまたは複数の態様方法の動作を実行するためのプロセッサ実行可能命令を用いて構成されてよく、システムキャッシュコントローラは、上記で説明した態様方法のうちの1つまたは複数の動作を実行するように構成されてよい。
態様は、上記で説明した態様方法のうちの1つまたは複数の機能を実行するための手段を有するコンピューティングデバイスを含む。
態様は、上記で説明した態様方法のうちの1つまたは複数の動作をプロセッサに実行させるためのプロセッサ実行可能ソフトウェア命令を記憶した非一時的プロセッサ可読媒体を含む。
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、本発明の例示的な態様を示し、上記の概略的な説明および下記の詳細な説明とともに、本発明の特徴を説明するのに役立つ。
一態様を実施するのに好適なコンピューティングデバイスを示すコンポーネントブロック図である。 一態様を実施するのに好適な例示的なマルチコアプロセッサを示すコンポーネントブロック図である。 一態様による、セットおよびウェイによってキャッシュメモリをコンポーネントキャッシュにパーティショニングするのに好適なコンピューティングデバイスを示すコンポーネントブロック図である。 一態様による、コンポーネントキャッシュを可能にするためにセットおよびウェイによって可変にパーティショニングされる例示的なキャッシュメモリを示す概略図である。 一態様による、例示的なコンポーネントキャッシュ構成テーブルを示す概略図である。 一態様による、セットおよびウェイによってコンポーネントキャッシュに可変にパーティショニングされる例示的なシステムキャッシュメモリを示す概略図である。 一態様による、マスタコンポーネントキャッシュ識別子割当ておよびキャッシュ保守動作直接アクセスの例を示す概略図である。 一態様による、マスタキャッシュ保守動作直接アクセスの例を示す概略図である。 一態様による、マスタコンポーネントキャッシュ識別子割当ておよびキャッシュ保守動作直接アクセスの一例を示す概略図およびプロセスフロー図である。 コンポーネントキャッシュ制御レジスタを仮想化するための態様方法を示すプロセスフロー図である。 コンポーネントキャッシュ識別子をマスタに割り当てるための態様方法を示すプロセスフロー図である。 コンポーネントキャッシュ制御レジスタへのキャッシュ保守動作をマスタによって直接発行するための態様方法を示すプロセスフロー図である。 マスタによって直接発行された、コンポーネントキャッシュに対するキャッシュ保守動作を実施するための態様方法を示すプロセスフロー図である。 一態様による、キャッシュ保守動作直接アクセスの一例を示す概略図およびプロセスフロー図である。 一態様による、キャッシュ保守動作直接アクセスのためのデータから仮想メモリアドレスを変換する一例を示す概略図およびプロセスフロー図である。 様々な態様とともに使用するのに好適な例示的なモバイルデバイスを示すコンポーネントブロック図である。 様々な態様とともに使用するのに好適な例示的なモバイルデバイスを示すコンポーネントブロック図である。
添付の図面を参照しながら、様々な態様が詳細に説明される。可能な場合はいつでも、同じまたは同様の部分を指すために、図面全体にわたって同じ参照番号が使用される。特定の例および実装形態への言及は例示のためであり、本発明の範囲または特許請求の範囲を限定するものではない。
「コンピューティングデバイス」および「モバイルデバイス」という用語は、セルラー電話、スマートフォン、パーソナルまたはモバイルのマルチメディアプレイヤ、携帯情報端末(PDA)、ラップトップコンピュータ、タブレットコンピュータ、スマートブック、ウルトラブック、パームトップコンピュータ、ワイヤレス電子メールレシーバ、マルチメディアインターネット対応セルラー電話、ワイヤレスゲーミングコントローラ、ならびにメモリおよびプログラマブルプロセッサを含む類似のパーソナル電子デバイスのうちのいずれか1つまたはすべてを指すために、本明細書では互換的に使用される。様々な態様は、限定されたエネルギーリソースしか有しないスマートフォンなどのモバイルコンピューティングデバイスに特に有用であるが、態様は、概して、メモリデバイスの電力消費の低減がモバイルコンピューティングデバイスのバッテリー動作時間を延長することができる、複数のメモリデバイスおよび限定されたエネルギーバジェットを実装する任意の電子デバイスにおいて有用である。
「システムオンチップ」(SoC)という用語は、通常、限定はしないが、ハードウェアコア、メモリ、および通信インターフェースを含む相互接続された電子回路のセットを指すために本明細書で使用される。ハードウェアコアは、汎用プロセッサ、中央処理ユニット(CPU)、デジタル信号プロセッサ(DSP)、グラフィックス処理ユニット(GPU)、加速処理ユニット(APU)、補助プロセッサ、シングルコアプロセッサ、およびマルチコアプロセッサなどの様々な異なるタイプのプロセッサを含んでよい。ハードウェアコアは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、他のプログラマブル論理デバイス、個別ゲート論理、トランジスタ論理、性能監視ハードウェア、ウォッチドッグハードウェア、および時間基準などの、他のハードウェアおよびハードウェアの組合せをさらに具現化してもよい。集積回路は、集積回路のコンポーネントがシリコンなどの単体の半導体材料上に存在するように構成されてよい。
一態様では、共有システムキャッシュの仮想化制御のための方法および装置は、アプリケーションプロセッササブシステム(APSS)CPUなどの集中制御エンティティが電力崩壊するかまたはアクティブであるときのシステムキャッシュ動作の実施を可能にする。通常、集中制御エンティティは、共有システムキャッシュの制御に関与する。集中制御エンティティが電力崩壊すると、共有システムキャッシュの制御は妨げられる。集中制御エンティティがアクティブであるときでも、集中制御エンティティ通信シーケンスを通過することは、レイテンシを持ち込むことがあり、望ましくないオーバーヘッドを生成することがあり、そのことは、高速な応答を必要とする状況にとって理想的でない。方法および装置は、個々のSoCマスタのための直接アクセスが、集中制御エンティティを通過することなく、すなわち、集中制御エンティティをバイパスして、システムキャッシュを制御することをもたらしてよい仮想化システムを実装してよい。システムキャッシュは、マスタによって所有されるシステムキャッシュの部分の仮想化ビューを各マスタに提供するように仮想化されてよい。キャッシュ保守動作は、コンポーネントキャッシュのマスタがそれらのコンポーネントキャッシュの仮想アドレスだけを意識する仮想化システムにおいて、システムキャッシュのコンポーネントキャッシュ(キャッシュパーティションまたはサブキャッシュ)のマスタによって直接実施されてよい。
共有キャッシュを採用するシステムは、共有システムキャッシュのそれぞれのコンポーネントキャッシュのマスタであってよい、システムのサブシステムまたはコンポーネントのすべてのビューを有するAPSS CPUなどの集中エンティティを含んでよい。この集中エンティティは、各サブシステムまたはコンポーネントに提供されるシステムコンポーネントキャッシュ識別子を使用してサブシステムまたはコンポーネントの各々をそれぞれのコンポーネントキャッシュと相関させる、コンポーネントキャッシュ構成テーブルを初期化してよいハイパーバイザを含んでよい。コンポーネントキャッシュ構成テーブルは、システムキャッシュ制御空間内のレジスタなどのハードウェアにおいて保守されてよく、コンポーネントキャッシュ識別子(CCID)が、それらのそれぞれのサブシステムまたはコンポーネントによって保持されてよい。ハイパーバイザは、コンポーネントキャッシュ構成テーブルの制御の中にとどまってよいが、コンポーネントキャッシュ識別子をそれらのそれぞれのサブシステムまたはコンポーネントに提供することによって、サブシステムまたはコンポーネントは、コンポーネントキャッシュ識別子に対応するシステムキャッシュ制御空間の中の制御レジスタなどの、ハードウェアへの直接のキャッシュ保守およびステータスコマンドを行ってよい。このようにして、キャッシュ保守およびステータスコマンドは、ハイパーバイザを実行させるAPSS CPUのような集中エンティティをバイパスして、すなわち、それに依拠することなく、システムキャッシュのコンポーネントキャッシュに対して実施されてよい。APSS CPUが電力崩壊するはずであっても、サブシステムまたはコンポーネントのマスタは、やはりシステムキャッシュ制御空間内のレジスタを介して、それらのコンポーネントキャッシュ識別子を使用してコンポーネントキャッシュへの直接のコマンドを行ってよい。
1つまたは複数のコンポーネントキャッシュ識別子が割り当てられた各サブシステムまたはコンポーネントのマスタは、そのそれぞれのコンポーネントキャッシュの仮想化ビューへのアクセスを有してよい。仮想化ビューは、各コンポーネントキャッシュに関連付けられたいくつかの制御レジスタおよびステータスレジスタを含んでよい。制御レジスタは、それらのそれぞれのコンポーネントキャッシュのすべてまたは一部分に関係するデータに対して異なる機能を実施してよく、そうしたデータを記憶してもよい。制御レジスタは、サブシステムまたはコンポーネントのメモリ管理ユニットによる制御にとっての粒度に基づいて、コンポーネントキャッシュの異なる部分に対して割り当てられてよい。ステータスレジスタは、それらのそれぞれのコンポーネントキャッシュの仮想化容量およびエラー表示を提供してよい。
サブシステムまたはコンポーネントのマスタは、そのそれぞれのコンポーネントキャッシュを意識するだけでよい。キャッシュ保守動作は、指定されたコンポーネントキャッシュパラメータ(たとえば、セットおよび/またはウェイ)および/またはシステムキャッシュアドレスに従って実施されてよい。サブシステムまたはコンポーネントのマスタがそれらのコンポーネントキャッシュの仮想化バージョンだけを知っているため、キャッシュ保守コマンドに関連するデータは、コマンドを実施するためにシステムキャッシュの物理アドレスに変換されてよい、コンポーネントキャッシュの仮想アドレスを含んでよい。コンポーネントキャッシュの仮想化ビューは、マスタ間で直接アクセスを同期させることなく、他のマスタによる直接アクセスと並行して(それと同時であることを含む)、関係するコンポーネントキャッシュ制御およびステータスレジスタにマスタが直接アクセスし得るような、様々なコンポーネントキャッシュの仮想所有権を様々なマスタに提供する。本明細書で使用するとき、「並行して」実行されている動作への言及は、同時に発生する動作、ならびに少なくとも部分的に時間的にオーバーラップする2つ以上の動作を包含する。
図1は、様々な態様とともに使用するのに好適な、リモートコンピューティングデバイス50と通信しているコンピューティングデバイス10を含むシステムを示す。コンピューティングデバイス10は、プロセッサ14、メモリ16、通信インターフェース18、およびストレージインターフェース20を有するSoC12を含んでよい。コンピューティングデバイスは、有線モデムもしくはワイヤレスモデムなどの通信コンポーネント22、記憶コンポーネント24、ワイヤレスネットワーク30へのワイヤレス接続32を確立するためのアンテナ26、および/またはインターネット40への有線接続44に接続するためのネットワークインターフェース28をさらに含んでよい。プロセッサ14は、様々なハードウェアコアのいずれか、ならびにいくつかのプロセッサコアを含んでよい。SoC12は、1つまたは複数のプロセッサ14を含んでよい。コンピューティングデバイス10は、SoC12よりも多くを含んでよく、それによって、プロセッサ14およびプロセッサコアの数を増やしてよい。コンピューティングデバイス10はまた、SoC12に関連しないプロセッサコア14を含んでよい。個々のプロセッサ14は、図2を参照しながら以下で説明するようなマルチコアプロセッサであってよい。プロセッサ14は各々、コンピューティングデバイス10の他のプロセッサ14と同じであっても異なっていてもよい特定の目的のために構成されてよい。プロセッサ14のうちの1つまたは複数および同じかまたは異なる構成のプロセッサコアは、図3を参照しながら以下で説明するようなコンピューティングデバイス10の1つまたは複数のサブシステムの一部として一緒にグループ化されてよい。
SoC12のメモリ16は、プロセッサ14によるアクセス用のデータおよびプロセッサ実行可能コードを記憶するために構成される揮発性メモリまたは不揮発性メモリであってよい。一態様では、1つまたは複数のメモリ16は、ランダムアクセスメモリ(RAM)もしくはメインメモリ、キャッシュメモリ、またはハードウェアレジスタなどの揮発性メモリを含んでよい。これらのメモリ16は、不揮発性メモリから要求されるとともに、様々な要因に基づいて将来のアクセスを見越して不揮発性メモリからメモリ16にロードされる、限定された量のデータおよび/またはプロセッサ実行可能コード命令、ならびに/あるいはプロセッサ14によって生成されるとともに、不揮発性メモリの中に記憶されずに将来の高速アクセスのために一時的に記憶される中間処理データおよび/またはプロセッサ実行可能コード命令を、一時的に保持するように構成されてよい。一態様では、メモリ16は、パーティショニングされたキャッシュメモリのコンポーネントキャッシュを管理するためのテーブルなどのデータ構造を、少なくとも一時的に記憶するように構成されてよい。一態様では、メモリ16は、キャッシュ保守動作を実施するためのデータを記憶するように構成されてよい。以下でさらに詳細に説明するように、プロセッサコアの各々は、キャッシュメモリの様々なコンポーネントキャッシュにアクセスしてよい。
コンピューティングデバイス10および/またはSoC12は、様々な目的のために構成される1つまたは複数のメモリ16を含んでよい。一態様では、1つまたは複数のメモリ16は、コンポーネントキャッシュアクセス要求およびキャッシュ保守動作を管理するためにデータ構造情報がアクセスされることを可能にする方法で、コンポーネントキャッシュ情報を記憶するためのデータ構造を記憶するのに専用であるように構成されてよい。データ構造を記憶するメモリ16が不揮発性であるとき、メモリ16は、コンピューティングデバイス10の電力がシャットオフされた後であってもデータ構造の情報を保持してよい。電力がオンに戻されコンピューティングデバイス10がリブートすると、不揮発性メモリ16の中に記憶されたデータ構造の情報は、コンピューティングデバイス10に利用可能であってよい。
通信インターフェース18、通信コンポーネント22、アンテナ26、および/またはネットワークインターフェース28は、コンピューティングデバイス10がワイヤレスネットワーク30を介してワイヤレス接続32と、かつ/または有線ネットワーク44を経由してリモートコンピューティングデバイス50と通信することを可能にするために、調和して働いてよい。コンピューティングデバイス10がそれによってリモートコンピューティングデバイス50とデータを交換してよいインターネット40への接続をコンピューティングデバイス10に提供するために、ワイヤレスネットワーク30は、たとえば、ワイヤレス通信用に使用される無線周波数スペクトルを含む様々なワイヤレス通信技術を使用して実施されてよい。
ストレージインターフェース20および記憶コンポーネント24は、コンピューティングデバイス10が不揮発性記憶媒体上にデータを記憶することを可能にするために、調和して働いてよい。記憶コンポーネント24は、データ構造情報が1つまたは複数のプロセッサ14によってアクセスされ得るように、記憶コンポーネント24がデータ構造を記憶してよいメモリ16の態様と、ほとんど同じように構成されてよい。不揮発性である記憶コンポーネント24は、コンピューティングデバイス10の電力がシャットオフされた後であってもデータ構造情報を保持してよい。電力がオンに戻されコンピューティングデバイス10がリブートすると、記憶コンポーネント24上に記憶されたデータ構造情報は、コンピューティングデバイス10に利用可能であってよい。ストレージインターフェース20は、記憶デバイス24へのアクセスを制御してよく、プロセッサ14が記憶デバイス24からデータを読み取り記憶デバイス24にデータを書き込むことを可能にしてよい。
コンピューティングデバイス10のコンポーネントの一部または全部は、やはり必要な機能を果たしながら異なって構成されてよく、かつ/または組み合わせられてもよい。その上、コンピューティングデバイス10は、コンポーネントの各々のうちの1つに限定されなくてよく、各コンポーネントの複数のインスタンスがコンピューティングデバイス10の様々な構成の中に含まれてよい。
図2は、一態様を実施するのに好適なマルチコアプロセッサ14を示す。図1を参照すると、マルチコアプロセッサ14は、複数の同等のプロセッサコア200、201、202、203を有してよい。単一のプロセッサ14のプロセッサコア200、201、202、203が同じ目的のために構成されてよく、同じまたは類似の性能特性を有してよいという点で、プロセッサコア200、201、202、203は同等であってよい。たとえば、プロセッサ14は汎用プロセッサであってよく、プロセッサコア200、201、202、203は、同等の汎用プロセッサコアであってよい。代替として、プロセッサ14がグラフィックス処理ユニットまたはデジタル信号プロセッサであってもよく、プロセッサコア200、201、202、203が、それぞれ、同等のグラフィックスプロセッサコアまたはデジタル信号プロセッサコアであってもよい。製造プロセスおよび材料の変化を通じて、プロセッサコア200、201、202、203の性能特性は、同じマルチコアプロセッサ14内、または設計された同じプロセッサコアを使用する別のマルチコアプロセッサ14内で、プロセッサコアごとに異なる場合がある。図2に示す例では、マルチコアプロセッサ14は、4つのプロセッサコア200、201、202、203(すなわち、プロセッサコア0、プロセッサコア1、プロセッサコア2、およびプロセッサコア3)を含む。説明を簡単にするために、本明細書の例は、図2に示す4つのプロセッサコア200、201、202、203に言及することがある。ただし、図2に示し本明細書で説明する4つのプロセッサコア200、201、202、203が、一例として提供されるにすぎず、決して限定的であることが意図されないことに留意されたい。コンピューティングデバイス10、SoC12、またはマルチコアプロセッサ14は、本明細書で図示および説明する4つのプロセッサコア200、201、202、203よりも少数または多数のプロセッサコアを個別にまたは組合せで含んでよい。
図3は、システムキャッシュメモリをコンポーネントキャッシュにパーティショニングするように構成されるコンピューティングデバイスを示す。図1および図2を参照すると、SoC12は、上記で説明したような様々なコンポーネントを含んでよい。いくつかのそのようなコンポーネントおよび追加のコンポーネントが、コンポーネントキャッシュを実施するために採用されてよい。たとえば、コンポーネントキャッシュを実施するように構成されるSoC12は、システムハブ300、システムキャッシュ302、システムキャッシュコントローラ304、CPUクラスタ306、プロトコルコンバータ308、GPU310、モデムDSP312、アプリケーションDSP314、メモリインターフェース316、カメラサブシステム318、ビデオサブシステム320、ディスプレイサブシステム322、システムネットワークオンチップ(NoC)324、メモリコントローラ326、およびランダムアクセスメモリ(RAM)328を含んでよい。システムハブ300は、様々なプロセッサ306、310、312、314による様々なメモリへのアクセスおよび様々なメモリの保守を管理する、SoC12のコンポーネントであってよい。一態様では、システムハブ300は、SoC12のシステムキャッシュ302へのアクセスおよびSoC12のシステムキャッシュ302の保守を、またRAM328へのアクセスも管理してよい。様々なメモリにアクセスすることがあるプロセッサのうちのいくつかは、CPUクラスタ306、ならびにカメラサブシステム318、ビデオサブシステム320、およびディスプレイサブシステム322などの様々なサブシステムの中に含まれてよく、またGPU310、モデムDSP312、およびアプリケーションDSP314などの、他の専用プロセッサを含んでよい。
システムキャッシュ302は、様々なプロセッサおよび/またはサブシステムに関連することがあるキャッシュメモリを置換または増補するために使用される、SoC12の中の共有メモリデバイスであってよい。反復アクセスおよび/または高速アクセスのために指定されたプログラムコマンドおよびデータを読み取りかつ書き込むために様々なプロセッサおよびサブシステムがシステムキャッシュ302にアクセスし得るように、システムキャッシュ302は、SoC12のキャッシュメモリリソースを集中させてよい。システムキャッシュ302は、様々なプロセッサおよびサブシステムからのデータを、またメインメモリ、RAM328、および記憶デバイス(たとえば、ハードディスクドライブ)などの、コンピューティングデバイスの他のメモリデバイスからのデータを記憶してよい。一態様では、システムキャッシュ302に要求されたアイテムが位置特定され得ないためにキャッシュミスが発生した場合に備えて、システムキャッシュ302は、そのようなメモリおよび記憶デバイスによってバックアップされてよい。一態様では、システムキャッシュ302は、様々なプロセッサおよびサブシステム用のスクラッチパッドメモリとして使用されてよい。システムキャッシュ302は、システムキャッシュ302を採用しない類似のアーキテクチャのSoCのローカルキャッシュメモリの組合せよりも、記憶空間および物理的サイズが小さくてよい。しかしながら、本明細書でさらに説明するようなシステムキャッシュ302の管理は、もっと大きいエネルギー節約と、システムキャッシュのより小さい記憶空間および物理的サイズにもかかわらずSoC12の同等以上の性能速度とを可能にすることがあり、単純なソフトウェア呼出しフローの使用を可能にすることがある。
システムキャッシュコントローラ304は、様々なプロセッサおよびサブシステムによる、システムキャッシュ302へのアクセスおよびシステムキャッシュ302の保守を管理してよい。システムキャッシュ302のアクセス管理の一部は、システムキャッシュメモリ空間のパーティションを管理することを含んでよい。システムキャッシュメモリ空間は、限定はしないが、キャッシュワード、キャッシュライン、キャッシュページ、キャッシュウェイ、キャッシュセット、キャッシュバンク、キャッシュタグの中のパーティション表示フィールド、またはこれらのパラメータの組合せによることを含む、様々な方式でパーティショニングされてよい。ウェイおよびセットによるキャッシュメモリ空間パーティショニングの態様は、ウェイおよびセットによるキャッシュメモリ空間パーティショニングに関する詳細のために参照により本明細書に組み込まれる、2014年7月17日に提案された"Method And Apparatus For Flexible Cache Partitioning By Sets And Ways Into Component Caches"と題する米国特許出願第14/333,981号に記載されている。システムキャッシュメモリ空間をパーティショニングすることは、様々なサイズおよびシステムキャッシュメモリ空間の中での位置のコンポーネントキャッシュをもたらすことがある。システムキャッシュコントローラ304は、図5、図7、および図8を参照しながらさらに説明するように、これらのコンポーネントキャッシュのレコードを保守し、様々な特色(trait)/機能/パラメータをコンポーネントキャッシュの各々に関連付けるように構成される、いくつかのレジスタ(図7および図8に示す)などのハードウェアを含んでよい。レジスタはまた、図7〜図13を参照しながらさらに説明するように、それぞれのコンポーネントキャッシュに対してキャッシュ保守動作を実施するように構成されてよい。
システムキャッシュコントローラ304は、特定のコンポーネントキャッシュを指定するシステムキャッシュアクセス要求を受け取ってよい。システムキャッシュアクセス要求はまた、システムキャッシュアクセス要求のコンポーネントキャッシュの特色を含んでよい。一態様では、コンポーネントキャッシュの特色は、コンポーネントキャッシュ構成要求の中で、同じ通信バス上または異なる通信バス上でシステムキャッシュコントローラ304によって別個に受け取られてよい。コンポーネントキャッシュ構成要求は、スタンドアロン信号であってよく、またはシステムキャッシュアクセス要求に関連付けられてもよい。コンポーネントキャッシュ構成要求は、システムキャッシュコントローラ304によって、システムキャッシュアクセス要求のコンポーネントとして受け取られてよい。説明を簡単にするために、以下の例は、システムキャッシュアクセス要求の一部としてコンポーネントキャッシュ特色が受け取られるという観点から説明され、そのことは、システムキャッシュコントローラ304がそれによってコンポーネントキャッシュ特色を受け取ってよい方式を限定することを意図しない。コンポーネントキャッシュ特色が、様々な関連する信号または無関係の信号を介して受け取られてよいことを理解されたい。
システムキャッシュコントローラ304は、指定されたコンポーネントキャッシュおよび関連する特色の情報を使用して、コンポーネントキャッシュおよびその関連するレコードへのアクセスを制御し、コンポーネントキャッシュおよびその関連するレコードを更新および/または作成ならびに予約してよい。一態様では、システムキャッシュコントローラ304は、システムキャッシュ302のマスタからのシステムキャッシュアクセス要求に基づいて、システムキャッシュメモリ空間をコンポーネントキャッシュに動的にパーティショニングしてよい。システムキャッシュメモリ空間をコンポーネントキャッシュに動的にパーティショニングする態様は、システムキャッシュメモリ空間をコンポーネントキャッシュに動的にパーティショニングすることに関する詳細のために参照により本明細書に組み込まれる、2014年7月17日に出願された"Method And Apparatus For A Shared Cache With Dynamic Partitioning"と題する米国特許出願第14/334,010号に記載されている。マスタは、SoC12の様々なプロセッサおよびサブシステムを含んでよい。
システムキャッシュコントローラ304の制御レジスタは、コンポーネントキャッシュに対するキャッシュ保守およびステータスコマンド/動作を管理するように構成されてよい。制御レジスタは、コンポーネントキャッシュ識別子によって識別される特定のコンポーネントキャッシュに割り当てられてよく、コンポーネントキャッシュの仮想化ビューを様々なプロセッサおよびサブシステムのうちの1つなどのそのマスタに提供してよい。ハードウェアは、コンポーネントキャッシュのすべてまたは一部分に関係するデータに対して異なる機能を実施し、そうしたデータを記憶するように構成されてよい。コンポーネントキャッシュのマスタは、コンポーネントキャッシュに割り当てられた制御レジスタへのコンポーネントキャッシュ識別子を使用して、キャッシュ保守およびステータスコマンドを行ってよい。システムキャッシュコントローラ304のこれらおよび他の態様が、図5および図7〜図13を参照しながらさらに説明される。
CPUクラスタ306は、いくつかの汎用プロセッサおよび/または汎用プロセッサコアのグループ化を含んでよい。CPUクラスタ306は、システムキャッシュコントローラ304を介してシステムキャッシュ302にアクセスしてよく、かつシステムキャッシュ302を保守してよい。CPUクラスタ306とシステムキャッシュコントローラ304との間の通信は、それらの間の相互運用性を実現するために、CPUクラスタ306およびシステムキャッシュコントローラ304のうちの一方の標準または独自のプロトコルから、他方にとって好適なプロトコルに、プロトコルコンバータ308によって変換されてよい。CPUクラスタ306は、システムキャッシュアクセス要求、ならびに特定のコンポーネントキャッシュ、および/または指定されたコンポーネントキャッシュの特色を指定するキャッシュ保守およびステータスコマンドを、システムキャッシュコントローラ304へ送信してよい。代わりに、システムキャッシュコントローラは、指定されたコンポーネントキャッシュのレコードを更新および/または作成してよく、指定されたコンポーネントキャッシュへのアクセスを許可または拒否してよく、指定されたコンポーネントキャッシュの中に記憶された情報をCPUクラスタ306に返してよく、キャッシュ保守およびステータスコマンドを実施してよい。
CPUクラスタ306と同様に、GPU310、モデムDSP312、およびアプリケーションDSP314のような専用プロセッサは、システムキャッシュコントローラ304を介してシステムキャッシュ302にアクセスしてよく、かつシステムキャッシュ302を保守してよい。専用プロセッサ310、312、314、およびシステムキャッシュコントローラ304の間の通信は、専用かつ個々のメモリインターフェース316によって管理されてよい。一態様では、メモリインターフェース316は、複数の類似または異種の専用プロセッサ310、312、314、およびシステムキャッシュコントローラ304の間の通信を管理してよい。
カメラサブシステム318、ビデオサブシステム320、およびディスプレイサブシステム322のような様々なサブシステムは、同様に、システムキャッシュコントローラ304およびメモリインターフェース316を介してシステムキャッシュ302にアクセスしてよくシステムキャッシュ302を保守してよい。NoC324は、サブシステム318、320、322、およびシステムハブ300、ならびにSoC12の他のコンポーネントの間の通信トラフィックを管理してよい。
システムキャッシュコントローラ304はまた、SoC12の様々なプロセッサおよびサブシステムによるRAM328へのアクセスを管理してよい。様々なプロセッサおよびサブシステムは、メモリコントローラ326を介したRAM328への直接アクセス要求を行ってよいが、いくつかの事例では、システムキャッシュアクセス要求がRAM328に向けられてよい。一態様では、指定されたコンポーネントキャッシュから要求された情報が、指定されたコンポーネントキャッシュの中に見つからないとき、システムキャッシュアクセス要求はキャッシュミスを招くことがある。その結果、システムキャッシュコントローラ304は、コンポーネントキャッシュの中に見つからなかった要求された情報を取り出すために、システムキャッシュアクセス要求をRAM328に向けてよい。一態様では、RAM328に向けられた、情報を求める要求は、最初に、RAM328へのアクセスを制御することがあるメモリコントローラ326に向けられてよい。RAM328に向けられた、情報を求める要求は、システムキャッシュコントローラ304によって送られてよく、得られた情報は、システムキャッシュコントローラ304に返されてコンポーネントキャッシュに書き込まれてよく、コンポーネントキャッシュからシステムキャッシュアクセス要求を行ったコンポーネントに返されてよい。一態様では、得られた情報は、コンポーネントキャッシュに書き込まれることなく、直接またはシステムキャッシュコントローラ304を介して、システムキャッシュアクセス要求を行ったコンポーネントに返されることがある。
いくつかの態様では、キャッシュメモリコントローラ304の部分は、態様方法の動作を実行するようにハードウェアおよび/またはファームウェアで実装および構成されてよい。いくつかの態様では、キャッシュメモリコントローラ304は、態様方法の動作を実行するようにコントローラ実行可能命令によって構成されているプログラマブルコントローラであってよい。いくつかの態様では、キャッシュメモリコントローラ304は、態様方法の動作を実行するようにファームウェアとコントローラ実行可能命令との組合せを介して実装および構成されてよい。
SoC12およびその様々なコンポーネントの本明細書での説明は、例示的であることだけを意図され、決して限定的ではない。SoC12のコンポーネントのうちのいくつかは、可変に構成されてよく、組み合わせられてよく、分離されてよい。コンポーネントのうちのいくつかは、もっと多数またはもっと少数で含まれてよく、SoC12内で、またはSoC12とは別個に、異なって配置および接続されてよい。同様に、他のメモリ、プロセッサ、サブシステム、インターフェース、およびコントローラなどの数多くの他のコンポーネントが、システムキャッシュ302にアクセスするためにSoC12の中に含まれてよく、システムキャッシュコントローラ304と通信していてよい。
図4は、コンポーネントキャッシュを可能にするためにセットおよび/またはウェイによって可変にパーティショニングされるシステムキャッシュメモリを示す。上記の図3で説明したシステムキャッシュなどのシステムキャッシュ400は、いくつかのウェイ402、404、406、408、410、412、414、416、およびN個のセット418を含むように構成されてよく、ただし、Nは正の整数である。コンポーネントキャッシュを作成するために、ウェイ402〜416によってシステムキャッシュ400を分割することが知られている。この例では、システムキャッシュ400は、8つのウェイ402〜416を含み、8つの402〜416の各々によってシステムキャッシュ400を分割することは、それぞれが1つのウェイ402〜416、およびそれぞれのウェイ402〜416のN個のセット418のすべてを含む8つのパーティションを有する、パーティショニングされたシステムキャッシュ400をもたらすことになる。一態様では、システムキャッシュ400は、ウェイ402〜416のグループを使用して同様にパーティショニングされてよい。8つのウェイ402〜416を有するシステムキャッシュ400の例を続けると、各パーティションは、ウェイ402〜416のうちの2つを含んで4つのパーティションが得られてよく、またはウェイ402〜416のうちの4つを含んで2つのパーティションが得られてもよい。
システムキャッシュ400は、コンポーネントキャッシュを作成するために、N個のセットのうちの規定されたグループによって追加的にパーティショニングされてよい。一態様では、システムキャッシュコントローラによって使用されるコンポーネントキャッシュの特色は、N個のセットがそれにパーティショニングされてよいセットグループの個数を決定してよい。一態様では、この特色はセットシフトと呼ばれることがある。たとえば、システムキャッシュ400がセットグループにパーティショニングされておらず、したがって、セットシフトは、ヌル値または0などの、セットグループによってパーティショニングしないことを示す値であってよい。別の例では、システムキャッシュ420は、2つのセットグループ422、424にパーティショニングされてよい。システムキャッシュ420は、システムキャッシュ400と同じシステムキャッシュであるが、システムキャッシュ420は、セットシフトが2つのセットグループ422、424によるパーティショニングを示す値であるときのシステムキャッシュ400を示す。システムキャッシュ420の場合、システムキャッシュコントローラは、2つのセットグループ422、424によるシステムキャッシュ420のパーティションによって作成される余分なコンポーネントキャッシュを使用して、システムキャッシュメモリ空間の使用を管理してよい。コンポーネントキャッシュは、本明細書でさらに詳細に説明するように、ウェイパーティションおよびセットグループパーティションの任意の組合せによって作成されるシステムキャッシュ420のパーティションを含んでよい。
同様に、セットシフトが4つのセットグループ432、434、436、438によるパーティショニングを示す値であるときのシステムキャッシュ400をシステムキャッシュ430が示すことを除いて、システムキャッシュ430はシステムキャッシュ400と同じであってよい。同様に、システムキャッシュ440は、セットシフトが8つのセットグループ442、444、446、448、450、452、454、456によるパーティショニングを示す値であるときのシステムキャッシュ400を示す。図4に示すこれらの例示的なシステムキャッシュ430および440の各々において、システムキャッシュコントローラは、4つのセットグループ432、434、436、438、または8つのセットグループ442〜456によってシステムキャッシュ430、440をパーティショニングすることによって作成される余分なコンポーネントキャッシュを使用して、システムキャッシュメモリ空間の使用を管理してよい。これらの例におけるコンポーネントキャッシュは、本明細書でさらに詳細に説明するように、ウェイパーティション、セットグループパーティション、またはパーティショニングの他の手段の、任意の組合せによって作成される、システムキャッシュ430、440のパーティションを含んでよい。
セットシフトを示すために、整数などの様々な形態の表記法が使用されてよい。一態様では、システムキャッシュメモリ空間がそれによってパーティショニングされるセットグループ数を示すセットシフト特色は、セットグループ数の増分変化を示してよい。たとえば、次に大きいセットグループ数の変化を示すためのセットシフト特色値の変化が、セットグループ数を加算し、乗算し、指数関数的に増加させ、またはいくつかの他の関数によって増加させることの増分変化を示してよい。図4における例の場合、セットグループ数は2のべき乗であり、ただし、べきはセットシフト特色である。セットグループはサイズが等しくてよく、セットグループ当たりのセット数も2のべき乗であってよい。セット数が別の数のべき乗であり得ることが考えられ、そのことは、以下でさらに説明するようなセットインデックスを計算するために、異なって構成されるべき(2のべき乗でない整数による除算のような)いくつかのハードウェアを必要とする場合がある。
一態様では、システムキャッシュコントローラによって使用されるコンポーネントキャッシュの特色は、コンポーネントキャッシュが配置されるセットグループ422、424、432、434、436、438、442、444、446、448、450、452、454、456を決定してよい。一態様では、この特色はセットオフセットと呼ばれることがある。セットオフセットを示すために、様々な形態の表記法が使用されてよい。
本明細書で説明する例示的なセットグループを続けると、説明するセットグループの総数は、セット418のN個をカウントしないと14個である。この例の場合、セットオフセットは3ビットの2進コードであってよく、ここで、セットグループが実施されないとき、セットオフセットは必要とされない。2つのセットグループが実施されるとき、セットグループ422、424は、それぞれ、セットオフセット=000および100と相関する。4つのセットグループが実施されるとき、セットグループ432、434、436、438は、それぞれ、セットオフセット=000、010、100、および110と相関してよい。同様に、8つのセットグループが実施されるとき、セットグループ442〜456は、それぞれ、セットオフセット=000、001、010、011、100、101、110、および111と相関してよい。
システムキャッシュをウェイおよび/またはセットによってパーティショニングすることによって作成されるコンポーネントキャッシュの本明細書での説明は、例示的であることだけを意図され、決して限定的ではない。説明を簡単にするために、また単に一例として、様々な態様がウェイおよび/またはセットの観点から説明される。しかしながら、キャッシュワード、キャッシュライン、キャッシュページ、キャッシュウェイ、キャッシュセット、キャッシュバンク、またはこれらのパラメータの組合せなどのいくつかの他のパラメータが、コンポーネントキャッシュを作成するために使用されてよい。
図5は、様々なコンポーネントキャッシュの特色を管理するためにシステムキャッシュコントローラによって使用されてよいコンポーネントキャッシュ構成テーブル500を示す。図1〜図4を参照すると、コンポーネントキャッシュ構成テーブル500は、コンポーネントキャッシュ識別子フィールド502、有効性インジケータ特色フィールド504、セットシフト特色フィールド506、セットオフセット特色フィールド508、ターゲットウェイ特色フィールド510、全ウェイプローブ特色フィールド512、インデックスモード特色フィールド514、置換ポリシー特色フィールド516、およびキャッシュラインサイズ特色フィールド528を含んでよい。システムキャッシュの各コンポーネントキャッシュは、コンポーネントキャッシュ識別子特色フィールド502に示すように、個々のコンポーネントキャッシュ識別子と相関されてよい。
コンポーネントキャッシュ識別子は、コンポーネントキャッシュ構成テーブル生成シーケンス中に、またはSoC上のマスタからのシステムキャッシュアクセス要求中に、システムキャッシュコントローラによって受け取られてよく、システムキャッシュアクセス要求を適切なコンポーネントキャッシュおよびその特色と整合させるために、システムキャッシュコントローラによって使用されてよい。一態様では、コンポーネントキャッシュ構成テーブル500の中に存在しないコンポーネントキャッシュ識別子が受け取られると、システムキャッシュコントローラは、受け取られたコンポーネントキャッシュ識別子を含むようにコンポーネントキャッシュ構成テーブル500を更新してよい。
一態様では、受け取られたコンポーネントキャッシュ識別子がコンポーネントキャッシュ構成テーブル500の中に存在することがあるが、コンポーネントキャッシュ識別子と相関された他のコンポーネントキャッシュ特色のうちの1つまたは複数が、受け取られたコンポーネントキャッシュ特色を受け取られたコンポーネントキャッシュ識別子と整合させないことがある。そのような状況では、システムキャッシュコントローラは、コンポーネントキャッシュ識別子と相関された、コンポーネントキャッシュ構成テーブル500の中のコンポーネントキャッシュ特色を、受け取られたコンポーネントキャッシュ特色を使用して更新してよい。コンポーネントキャッシュ識別子フィールド502の中のコンポーネントキャッシュ識別子の値を記号で表すために、様々な表記法が使用されてよい。
システムキャッシュの各コンポーネントキャッシュは、有効性インジケータ特色フィールド504に示すように、有効性インジケータと相関されてよく、コンポーネントキャッシュ構成テーブル500の中の相関されたコンポーネントキャッシュに対する有効なエントリを示すために使用されてよい。様々な状況に対して、コンポーネントキャッシュのレコードが、有効条件または無効条件に相関された値またはフラグ(たとえば、"0"または"1")などを用いて、有効または無効であるものとしてマークされてよい。有効性インジケータ特色フィールド504の中の有効な識別子と相関されたコンポーネントキャッシュ識別子に対するシステムキャッシュアクセス要求は、システムキャッシュコントローラによって許可されてよい。有効性インジケータ特色フィールド504の中の無効な識別子と相関されたコンポーネントキャッシュ識別子に対するシステムキャッシュアクセス要求が受け取られると、システムキャッシュコントローラは、システムキャッシュアクセス要求をエラーとして扱ってよい。
コンポーネントキャッシュ構成テーブル500の中のセットシフト特色フィールド506は、上記で説明したようなセットシフト特色を示すために使用されてよい。上記で説明したように、セットシフトは、それぞれのセットシフト値と相関されたコンポーネントキャッシュの各々に対して、システムキャッシュメモリ空間がそれに分割されるセットグループ数を識別する。たとえば、2つのセットグループパーティションだけを示すセットシフトに対するセットパーティションおよび/またはウェイパーティションの様々な組合せから構成される、数多くのコンポーネントキャッシュがあってよい。たとえば、図5において、行522は、セットシフト=1を含み、そのことは、この例では、2つのセットグループパーティションを示す。行522は、セットオフセット特色フィールド508の中の1つの値およびターゲットウェイ特色フィールド510の中の1つの値を含む、コンポーネントキャッシュセットパーティションおよびコンポーネントキャッシュウェイパーティションのうちの1つだけを表す。
セットオフセット特色フィールド508の中の同じ値と、セットシフト特色フィールド506の中の同じ値と相関されたターゲットウェイ特色フィールド510の中の他の値との、数多くの他の組合せがあってよい。セットシフト特色フィールド506の中でセットシフト=1によって示される2つのセットグループパーティションのうちの他方を表すセットオフセット特色フィールド508にとって可能な他の値に対して、さらに多くの組合せが可能である。類似の例は、セットシフト特色フィールド506の中の他の可能な値に対して、異なるコンポーネントキャッシュのセットパーティションおよびウェイパーティションの、もっと多数の組合せを含む。
一態様では、システムキャッシュの既知のパーティション(すなわち、キャッシュ全体またはウェイだけのキャッシュパーティション)が、コンポーネントキャッシュ構成テーブル500の中に含まれてよい。これらの既知のパーティションがセットによるシステムキャッシュのパーティションを含まないため、以前はこれらの既知のパーティションにとってコンポーネントキャッシュ構成テーブル500が不必要であったが、これらの既知のパーティションは、コンポーネントキャッシュ構成テーブル500の中に含まれてよい。システムキャッシュの既知のパーティションは、行518および526におけるように、コンポーネントキャッシュ構成テーブル500の中で、セットシフト特色フィールド506がセットシフト=0またはヌル値を含むときと規定されてよい。このセットシフト値は、それに関連付けられたコンポーネントキャッシュがセットによって分割されないことを示してよい。セットによってパーティショニングされたコンポーネントキャッシュは、0を超えるセットシフト値に関連付けられてよい。コンポーネントセットシフト特色フィールド506の中のセットシフトの値を記号で表すために、様々な表記法が使用されてよい。
コンポーネントキャッシュ構成テーブル500の中のセットオフセット特色フィールド508は、相関されたコンポーネントキャッシュが存在するセットグループを示してよいセットオフセット特色を示すために使用されてよい。上記で説明したように、コンポーネントキャッシュは、ウェイパーティションと組み合わせてセットグループパーティションから部分的に作られる。セットシフト特色は、セットグループパーティションの数を識別してよく、セットオフセット特色は、相関されたコンポーネントキャッシュを含むセットグループパーティションのその個数以内の特定のセットグループを示してよい。上記で説明したように、各セットグループは、セットオフセット特色フィールド508の中で、コンポーネントキャッシュ構成テーブル500の中で表されるべき特定のセットオフセット特色値と相関されてよい。より詳細には、一態様では、あるセットシフト値に対するセットオフセット値が別のセットシフト値に対するセットオフセット値とオーバーラップすることがあるため、セットシフトとセットオフセットとの組合せは、コンポーネントキャッシュを含むセットグループを規定してよい。たとえば、すべてのセットシフトが、最初のセットグループに相関してよいセットオフセット=000を含んでよい。これは、複数のセットグループを示すセットシフト値ごとに、少なくとも最初のセットグループがあるからである。したがって、セットシフト=1に対するセットオフセット=000は、別のセットシフト値に対するセットオフセット=000に対して異なるセットグループを表してよい。様々な可能なセットグループに一意のセットオフセット値を割り当てることも可能である。コンポーネントセットオフセット特色フィールド508の中のセットオフセットの値を記号で表すために、様々な表記法が使用されてよい。
コンポーネントキャッシュ構成テーブル500の中のターゲットウェイ特色フィールド510は、相関されたコンポーネントキャッシュが存在するウェイグループパーティションを示してもよいターゲットウェイ特色を示すために使用されてよい。セットグループとほとんど同じように、ウェイグループは、コンポーネントキャッシュが存在してよいシステムキャッシュメモリ空間のウェイを含んでよい。任意のコンポーネントキャッシュに対して、セットシフトまたはセットオフセットにかかわらず、ターゲットウェイは、システムキャッシュの単一または連続したウェイの任意の組合せを示してよい。コンポーネントキャッシュのウェイグループパーティションは、実行時において静的と動的の両方で、コンポーネントキャッシュの連合性のカスタマイズを可能にしてよい。コンポーネントキャッシュ構成テーブル500の中で、ターゲットウェイ値のすべての組合せは、セットシフト値とセットオフセット値との任意の組合せと相関されてよい。コンポーネントキャッシュ構成テーブル500の中でのセットシフト、セットオフセット、およびターゲットウェイの組合せは、可能なコンポーネントキャッシュのすべてをシステムキャッシュコントローラに対して規定する。一態様では、ターゲットウェイ特色値は、ビットベクトルによって表されてよく、ここで、ベクトルの中の各ビットはシステムキャッシュの個々のウェイを表す。コンポーネントキャッシュ構成テーブル500の中で、ビットベクトルは16進数で表される。
行522に関係する例に戻ると、行522において表されるシステムキャッシュは図4におけるシステムキャッシュ420と同じであり、8つのウェイおよび2つのセットグループを有する。この例では、ターゲットウェイ特色フィールド510は0xF0という値を含み、それはまた、1111 0000としての2進ビットベクトルとして表されてもよい。したがって、この例では、コンポーネントキャッシュは、"F"によって、すなわち複数の"1"値によって示される4つのウェイの中に存在してよく、それらは図4におけるシステムキャッシュ420のウェイ402、404、406、および410に相関する。ターゲットウェイ特色フィールド510の中のターゲットウェイの値を記号で表すために、様々な表記法が使用されてよい。
コンポーネントキャッシュ構成テーブル500の中の全ウェイプローブ特色フィールド512は、システムキャッシュのすべてのウェイのタグがコンポーネントキャッシュへのアクセスのためにルックアップまたはプローブされるかどうかを示すために使用されてよい。システムキャッシュのウェイのすべてをプローブすべきと全ウェイプローブ特色が示すとき、コンポーネントキャッシュのプローブは、ターゲットウェイ値によって限定されなくてよい。このことは、動的なコンポーネントキャッシュにあてはまることがあり、動的なコンポーネントキャッシュは、そのセットグループ内のサイズを変更、すなわち、そのターゲットウェイを変更できる場合がある。したがって、コンポーネントキャッシュが異なる時間において増大または縮小する場合、もはやコンポーネントキャッシュの一部でないウェイの中に記憶された情報は、依然としてシステムキャッシュの中の同じセットグループの中で見つけられてよい。コンポーネントキャッシュが静的であり、そのためコンポーネントキャッシュが占有するウェイグループを変化させないとき、全ウェイプローブ特色フィールド512は、ヌル値、または相関されたコンポーネントキャッシュに対して全ウェイプローブ機能が有効化されないことを示す値を含んでよい。このことは、システムキャッシュのすべてのウェイにわたるタグルックアップおよび比較動作を最小限に抑えることによって、電力消費を低減することがある。
コンポーネントキャッシュ構成テーブル500の中のインデックスモード特色フィールド514は、相関されたコンポーネントキャッシュが、物理アドレスを使用して物理インデックス付けモード(PI)でインデックス付けされてよいのか、それともカスタムインデックスを使用してカスタムインデックス付けモード(CI)でインデックス付けされてよいのかを示すために使用されてよい。一態様では、物理アドレス指定は、予測不能で時には過度のキャッシュ衝突(メモリ割振りに応じて)を招くことがあり、したがって、コンポーネントキャッシュにアクセスするためにカスタムインデックス付けモードが使用されることがある。任意の形態のカスタムインデックスが使用されてよい。一態様では、カスタムインデックスは、高レベルオペレーティングシステムメモリ割振り方式などによる予測可能な衝突ミスを保証するために、仮想アドレスインデックスを含んでよい。別の態様は、衝突ミスを最小限に抑えるために、仮想アドレス最上位ビットを有するカスタムインデックスのハッシュを使用してよい。物理インデックス付けモードでは、システムキャッシュコントローラは、システムキャッシュの物理アドレスをマスタからのシステムキャッシュアクセス要求の一部として受け取ってよく、システムキャッシュの受け取られた物理アドレスを使用して、それをシステムキャッシュの中のコンポーネントキャッシュの物理アドレスに変換してよい。カスタムインデックス付けモードでは、システムキャッシュコントローラは、システムキャッシュの物理アドレス、およびカスタムインデックスを、マスタからのシステムキャッシュアクセス要求の一部として受け取ってよく、システムキャッシュの受け取られた物理アドレス、および受け取られたカスタムインデックスを使用して、それらをシステムキャッシュの中のコンポーネントキャッシュの物理アドレスに変換してよい。システムキャッシュの受け取られた物理アドレス、および/または受け取られたカスタムインデックスを、システムキャッシュの中のコンポーネントキャッシュの物理アドレスに変換するための態様プロセスは、本明細書でさらに説明される。
コンポーネントキャッシュ構成テーブル500の中の置換ポリシー特色フィールド516は、相関されたコンポーネントキャッシュの中に記憶された情報に対する置換ポリシーを示すために使用されてよい。いくつかのそのような置換ポリシーは、最短時間未使用法、最長時間未使用法、先入れ先出し法、後入れ先出し法、およびランダム置換ポリシーを含む、既知の置換ポリシーを含んでよい。既知であり独自の他の置換ポリシーが、様々なコンポーネントキャッシュの中に記憶された情報に対して使用されてよい。置換ポリシーは、置換ポリシー特色フィールド516に従ってコンポーネントキャッシュごとにカスタマイズされてよい。
コンポーネントキャッシュ構成テーブル500の中のキャッシュラインサイズ特色フィールド528は、相関されたコンポーネントキャッシュに対するキャッシュラインのデフォルトのサイズまたはカスタマイズされたサイズを示すために使用されてよい。デフォルトのキャッシュラインサイズは、システムキャッシュメモリの標準的なキャッシュラインサイズであってよい。一態様では、対応するコンポーネントキャッシュがコンポーネントキャッシュ構成テーブル500の中に作成されるとき、キャッシュラインサイズ特色フィールド528は、コンポーネントキャッシュの一部または全部に対してデフォルトのキャッシュラインサイズに設定されてよい。一態様では、ヌル値もデフォルトのキャッシュラインサイズを示してよい。一態様では、キャッシュラインサイズ特色フィールド528は、コンポーネントキャッシュがコンポーネントキャッシュ構成テーブル500の中に作成されるときに、またはシステムキャッシュアクセス要求に関連して、メモリから設定されてよいカスタムキャッシュラインサイズに設定されてよい。カスタムキャッシュラインサイズは、示されたカスタムキャッシュラインサイズがデフォルトのキャッシュラインサイズと同じであるとき、デフォルトのキャッシュラインサイズを含んでよい。図5に示す例では、行518〜526において表されるコンポーネントキャッシュは、キャッシュラインサイズ特色フィールド528の中に異なる値を含んでよい。図示したように、値は、ビット、バイト、メガバイト、および他の変動値などのデジタル情報の単位で測定されたサイズ値によって表されてよい。値はまた、キャッシュラインが広がってよいシステムキャッシュメモリのセットおよびウェイの数に換算して表されてよい。
一態様では、キャッシュラインサイズはまた、セットシフト特色フィールド506および/またはターゲットウェイ特色フィールド510を使用して決定されてよい。上記で説明したように、セットシフト特色フィールド506は、コンポーネントキャッシュの中で使用されるシステムキャッシュメモリのセット数を示してよく、ターゲットウェイ特色フィールド510は、システムキャッシュメモリのウェイを示してよい。コンポーネントキャッシュの中のキャッシュラインのサイズは、コンポーネントキャッシュを構成するキャッシュセットおよび/またはウェイの数に依存することがある。したがって、対応するコンポーネントキャッシュに対してキャッシュラインサイズをカスタマイズすることは、セットシフト特色フィールド506および/またはターゲットウェイ特色フィールド510を設定することによって達成されてよい。
一態様では、少なくともコンポーネントキャッシュ識別子フィールド502、セットシフト特色フィールド506、セットオフセット特色フィールド508、およびターゲットウェイ特色フィールド510に対して、すべての可能なコンポーネントキャッシュがコンポーネントキャッシュ構成テーブル500の中で表されてよいという点で、コンポーネントキャッシュ構成テーブル500は静的であってよい。他のフィールド502、512、514、および516は、必ずしもコンポーネントキャッシュを規定するとは限らないが、静的または可変であってよいコンポーネントキャッシュの特色を表す。したがって、静的なキャッシュ構成テーブル500の中で、コンポーネントキャッシュ識別子と相関されたセットシフト、セットオフセット、およびターゲットウェイの組合せごとに行が存在してよい。静的なキャッシュ構成テーブル500の中で、他のフィールド502、512、514、および516は、依然として可変であってよく、それらの値への変更を可能にしてよい。
一態様では、コンポーネントキャッシュ識別子と相関されたセットシフト、セットオフセット、およびターゲットウェイの様々な組合せを含む行が、実行時中にコンポーネントキャッシュ構成テーブル500に追加されてよくコンポーネントキャッシュ構成テーブル500から削除されてよいという点で、コンポーネントキャッシュ構成テーブル500は動的であってよい。静的なコンポーネントキャッシュ構成テーブル500と同様に、他のフィールド502、512、514、および516は、必ずしもコンポーネントキャッシュを規定するとは限らず、可変であってよく、それらの値への変更を可能にしてよい。
図6は、セットおよびウェイによってコンポーネントキャッシュに可変にパーティショニングされるシステムキャッシュ600を示す。図6に示し本明細書で説明するコンポーネントキャッシュは、例であることだけを意図され、決して限定的であることを意図しない。図1〜図5を参照すると、図6に示すコンポーネントキャッシュは、図5の行518、520、522、524、および526に示すコンポーネントキャッシュの非限定的な例と相関する。コンポーネントキャッシュ602は、コンポーネントキャッシュ構成テーブル500の中の行518に相関する。この例では、行518において、セットシフト値はヌルまたは0である。セットオフセット値は、セットグループパーティションがないので無関係であるが、やはりヌルまたは0であってよい。ターゲットウェイは、ターゲットウェイ=0xFFによって示されるようなシステムキャッシュ600のウェイ402〜416のすべてを含み、上記で説明したようにビットベクトルで1111 1111として表されてよい。
図6に示す例では、コンポーネントキャッシュ604は、コンポーネントキャッシュ構成テーブル500の中の行520に相関する。この例では、行520において、セットシフト=3は、システムキャッシュ600が8つのセットグループ442〜456にパーティショニングされることを表してよい。セットオフセット=100は、コンポーネントキャッシュ604がセットグループ450の中に配置されることを表してよい。ビットベクトル0000 1100によって表されるターゲットウェイ=0x0Cは、コンポーネントキャッシュ604がウェイ410および412の中に配置されることを表してよい。
図6に示す例では、コンポーネントキャッシュ606は、コンポーネントキャッシュ構成テーブル500の中の行522に相関する。この例では、行522において、セットシフト=1は、システムキャッシュ600が2つのセットグループ422および424にパーティショニングされることを表してよい。セットオフセット=000は、コンポーネントキャッシュ604がセットグループ422の中に配置されることを表してよい。ビットベクトル1111 0000によって表されるターゲットウェイ=0xF0は、コンポーネントキャッシュ604がウェイ402、404、406、および408の中に配置されることを表してよい。
図6に示す例では、コンポーネントキャッシュ608は、コンポーネントキャッシュ構成テーブル500の中の行524に相関する。この例では、行524において、セットシフト=2は、システムキャッシュ600が4つのセットグループ432〜438にパーティショニングされることを表してよい。セットオフセット=110は、コンポーネントキャッシュ604がセットグループ438の中に配置されることを表してよい。ビットベクトル0111 1000によって表されるターゲットウェイ=0x78は、コンポーネントキャッシュ604がウェイ404、406、408、および410の中に配置されることを表してよい。
図6に示す例では、コンポーネントキャッシュ610は、コンポーネントキャッシュ構成テーブル500の中の行526に相関する。この例では、行526において、セットシフト値はヌルまたは0である。セットオフセット値は、セットグループパーティションがないので無関係であるが、やはりヌルまたは0であってよい。ターゲットウェイは、ターゲットウェイ=0x01によって示されるようなシステムキャッシュ600のウェイ416を含み、ビットベクトルで0000 0001として表されてよい。
図6は、コンポーネントキャッシュ構成テーブル500および制御レジスタを使用してシステムキャッシュコントローラによって管理されてよい、潜在的なコンポーネントキャッシュの小さいサンプルしか示さない。コンポーネントキャッシュ604、606、608、および610は、システムキャッシュ600の中のオーバーラップしない位置を占有するものとして図6に示されるが(コンポーネントキャッシュ602を除く)、この例示は説明を簡単にするためにすぎず、コンポーネントキャッシュの多くは、それらがコンポーネントキャッシュ602にオーバーラップするように他のコンポーネントキャッシュにオーバーラップしてよい。すべてのコンポーネントキャッシュが同じ時間においてアクティブであり得るとは限らず、したがって、コンポーネントキャッシュのオーバーラッピングの使用は、本明細書でさらに説明するように、システムキャッシュコントローラによって管理されてよい。異なるコンポーネントキャッシュのパラメータは、コンポーネントキャッシュ当たりの異なるキャッシュラインサイズをもたらすことがある。各コンポーネントキャッシュが、システムキャッシュのキャッシュセットの全体のパーティションを含むとき、各コンポーネントキャッシュに関連するキャッシュラインは、キャッシュウェイの中のキャッシュセットのすべてよりも小さくてよい。このことは、キャッシュセットによってパーティショニングされない場合よりも小さいキャッシュラインをもたらすことがあり、セットシフト特色によって規定されるコンポーネントキャッシュ当たりのキャッシュセットの数が、コンポーネントキャッシュ当たりのキャッシュラインサイズを決定してよい。
一態様では、コンポーネントキャッシュは、アクティベートされてよく、ディアクティベートされてもよい。システムキャッシュによって管理されるメモリ空間の中でコンポーネントキャッシュがオーバーラップする可能性があるため、キャッシュ衝突を回避するために、アクティブなコンポーネントキャッシュにオーバーラップするコンポーネントキャッシュがディアクティベートされてよい。また、電力を節約するために、使用中でないコンポーネントキャッシュがディアクティベートされてよい。部分的に、システムキャッシュによって管理される/システムキャッシュに見えるダブルデータレート(DDR)メモリ空間を動的にパーティショニングするとともに、指定されたマスタにコンポーネントキャッシュを割り当てるために、コンポーネントキャッシュは実行時においてアクティベートされてよく、ディアクティベートされてよい。システムキャッシュのマスタのうちのいくつかは、比較的短い時間期間の間しかコンポーネントキャッシュを必要としないことがあり、コンポーネントキャッシュによって使用されているシステムキャッシュメモリ空間は、システムキャッシュを使用または保守する他のマスタとのキャッシュ衝突を回避するために、そのマスタ用に予約されてよい。さらに、マスタがコンポーネントキャッシュを終わりにするとき、コンポーネントキャッシュはディアクティベートされてよく、システムキャッシュ空間は非予約済みにされてよく、システムキャッシュメモリ空間およびコンポーネントキャッシュを他のマスタに利用可能にする。
図7は、一態様による、マスタコンポーネントキャッシュ識別子割当ておよびキャッシュ保守動作直接アクセスの例を示す。図1〜図6を参照すると、コンピューティングデバイスは、アプリケーションサブシステム702、ビデオサブシステム320、およびモデムサブシステム704などの、様々なプロセッサおよびサブシステムを含んでよい。プロセッサおよびサブシステム320、702、704は、システムキャッシュコントローラ304を介してシステムキャッシュ302および制御空間700と通信していてよい。プロセッサまたはサブシステムのうちの1つ、たとえば、アプリケーションサブシステム702は、システムキャッシュ302のコンポーネントキャッシュ602、604、606、608、706を管理するための集中制御エンティティとして機能してよい。プロセッサおよびサブシステム320、702、704は各々、以下でさらに説明するように、1つまたは複数のコンポーネントキャッシュ602、604、606、608、706のマスタとして機能してよい。一態様では、アプリケーションサブシステム702は、システムキャッシュの中のコンポーネントキャッシュをセットアップしてよく、制御空間700は、キャッシュ保守およびステータスコマンド/動作を実行するための、コンポーネントキャッシュ602、604、606、608、706の仮想化ビュー、たとえば、キャッシュ容量の仮想化ビューを、それらのマスタ320、702、704に提供してよく、全コンポーネントキャッシュをフラッシュしてよい。
一態様では、このおよび他の例におけるコンポーネントキャッシュ602、604、606、608、706、アプリケーションサブシステム702を管理するための集中制御エンティティは、システムキャッシュ302にアクセスすることがあるプロセッサおよびサブシステムのすべてのビューを有してよい。コンピューティングデバイスのブートシーケンス中、または実行時中、アプリケーションサブシステム702は、コンポーネントキャッシュ構成テーブルを生成、ロード、または更新してよく、コンポーネントキャッシュ構成テーブルを記憶するために、コンポーネントキャッシュ構成テーブル(CCCT)制御レジスタ708の指定されたグループにコンポーネントキャッシュ構成テーブルを書き込んでよい。一態様では、アプリケーションサブシステム702は、コンポーネントキャッシュ構成テーブルを操作するためにアプリケーションサブシステム702とコンポーネントキャッシュ構成テーブル制御レジスタ708のグループとの間の相互作用を管理するための、ハイパーバイザ/バーチャルマシンマネージャ726を実装してよい。アプリケーションサブシステム702はまた、ハイパーバイザ726を介して、システムキャッシュ302に対してキャッシュ保守およびステータスコマンド/動作を実行するために汎用制御レジスタ710のグループと相互作用してよい。
アプリケーションサブシステム702はまた、ハイパーバイザ726を介して、それぞれのコンポーネントキャッシュ602、604、606、608、706に対してキャッシュ保守およびステータスコマンド/動作を実行するために制御レジスタ712〜720のグループをコンポーネントキャッシュ320、702、704のそれぞれのマスタに割り当ててよい。制御レジスタ712〜720グループをそれぞれのマスタ320、702、704に割り当てるために、アプリケーションサブシステム702は、各マスタ320、702、704が制御レジスタ712〜720のグループごとに仮想アドレスのマッピングを有するような、制御レジスタ712〜720のグループ用の仮想アドレスをメモリ管理ユニット730、746に示してよい。一態様では、メモリ管理ユニット730、746は、その上流のマスタに関係しない制御レジスタのグループのマッピングを提供しないことがあり、そうすることによって、上流のマスタに割り当てられていない他のコンポーネントキャッシュに相関された制御レジスタのグループにマスタがアクセスするのを禁止してよく、それによって、非割当てのコンポーネントキャッシュ602、604、606、608、706への意図しない介入を防止する。一態様では、アプリケーションサブシステム702は、制御レジスタ712〜720の各グループの仮想アドレスから物理アドレスへの相関をメモリ管理ユニット730、746に示してよい。一態様では、相関の表示は、物理アドレスと仮想アドレスとの1対1の相関、または相関を決定するアルゴリズムであってよい。
一態様では、制御レジスタ712〜720の各グループに割り当てられたコンポーネントキャッシュ602、604、606、608、706は、コンポーネントキャッシュ構成テーブルのコンポーネントキャッシュ識別子(CCID)などの、それぞれのコンポーネントキャッシュ識別子によって識別されてよい。図7における例に示すように、制御レジスタ712(CCID0制御レジスタ)は、コンポーネントキャッシュ602(CCID0コンポーネントキャッシュ)と相関してよい。同様に、同じ例では、制御レジスタ714(CCID1制御レジスタ)がコンポーネントキャッシュ604(CCID1コンポーネントキャッシュ)と相関してよく、制御レジスタ716(CCID2制御レジスタ)がコンポーネントキャッシュ606(CCID2コンポーネントキャッシュ)と相関してよく、制御レジスタ718(CCID3制御レジスタ)がコンポーネントキャッシュ608(CCID3コンポーネントキャッシュ)と相関してよい。
アプリケーションサブシステム702はまた、ハイパーバイザ726を介して、プロセッサおよびサブシステム320、702、704をシステムキャッシュ302のそれぞれのコンポーネントキャッシュ602、604、606、608、706のマスタとして割り当ててよい。アプリケーションサブシステム702は、プロセッサおよびサブシステム320、702、704に、それらがマスタであるべきそれぞれのコンポーネントキャッシュ602、604、606、608、706のインジケータ738〜744を割り当ててよい。プロセッサおよびサブシステム320、702、704は、それらがマスタであるべきそれぞれのコンポーネントキャッシュ602、604、606、608、706のインジケータ738〜744を記憶してよい。インジケータ738〜744は、それぞれのコンポーネントキャッシュ602、604、606、608、706のコンポーネントキャッシュ識別子を含んでよい。
一態様では、インジケータ738〜744は、コンポーネントキャッシュ構成テーブル(CCCT)708および制御レジスタ712〜720の適切なグループの中で、コンポーネントキャッシュ構成情報を位置特定するために使用されてよく、制御レジスタ712〜720の適切なグループは、それらのそれぞれのコンポーネントキャッシュ602、604、606、608、706用の制御空間700の仮想化ビューをマスタ320、702、704に提供し、その結果、それらは、他のコンポーネントキャッシュ602、604、606、608、706用の制御空間700、すなわちシステムキャッシュの他の部分が見えない。マスタ320、702、704は、それぞれのコンポーネントキャッシュ602、604、606、608、706のサイズ、位置、およびコンポーネントキャッシュ構成テーブルの機能などの他の機能を発見するために、インジケータ738〜744を使用してよい。
一態様では、キャッシュ保守およびステータスコマンドは、アプリケーションサブシステム702を介してマスタ320、702、704によって発行されてよい。マスタ320、702、704は、コンポーネントキャッシュ602、604、606、608、706に対して、キャッシュ保守またはステータスコマンドをアプリケーションサブシステム702へ送信してよい。キャッシュ保守またはステータスコマンドを受け取ると、アプリケーションサブシステム702は、メモリ管理ユニット730およびシステムキャッシュコントローラ304を介して、コンポーネントキャッシュ602、604、606、608、706と相関された制御レジスタ712〜720のグループへキャッシュ保守またはステータスコマンドを送信してよい。別の態様では、キャッシュ保守およびステータスコマンドは、以下でさらに説明するように、アプリケーションサブシステム702を通過することなくマスタ320、702、704によって直接発行されてよい。
一態様では、メモリ管理ユニット730は、キャッシュ保守またはステータスコマンドのコンポーネントキャッシュ602、604、606、608、706に関連付けられた仮想アドレスを、コンポーネントキャッシュ602、604、606、608、706と相関された制御レジスタ712〜720のグループの物理アドレスに変換してよい。このようにして、キャッシュ保守またはステータスコマンドは、制御レジスタ712〜720の適切なグループに向けられてよい。システムキャッシュコントローラ304は、制御レジスタ712〜720の適切なグループに対してキャッシュ保守またはステータスコマンドが受け付けられてよいかどうかを制御してよく、コンポーネントキャッシュ602、604、606、608、706に対するキャッシュ保守またはステータスコマンド/動作を実施するために、制御レジスタ712〜720の適切なグループにデータを書き込んでよい。図7における例では、マスタ320、702、704に代わってアプリケーションサブシステム702によって発行されるキャッシュ保守またはステータスコマンドが、破線によって示される。
一態様では、アプリケーションサブシステム702は、キャッシュ保守またはステータスコマンドをそこから制御空間700に発行してよい信頼ゾーン732、すなわち、セキュア動作環境を実施してよい。信頼ゾーン732は、制御レジスタ712〜720のいくつかのグループにキャッシュ保守またはステータスコマンドを発行してよい。
一態様では、プロセッサまたはサブシステム320、702、704の実行を求める呼出しが、プロセッサおよびサブシステム320、702、704によるキャッシュ保守またはステータスコマンドをトリガしてよい。呼出しは、アプリケーションサブシステム702によって実行される様々なアプリケーション722、高レベルオペレーティングシステム(HLOS)カーネル724、またはハイパーバイザ726から生じてよい。一態様では、アプリケーションサブシステム702は電力崩壊することがあり、プロセッサまたはサブシステム320、704はコンピューティングデバイスの別のコンポーネントによってトリガされることがある。アプリケーションサブシステム702が電源投入されるのかそれとも電力崩壊するのかにかかわらず、それぞれのコンポーネントキャッシュインジケータ740〜744が提供されていたそれぞれのコンポーネントキャッシュ604〜608のマスタとしてのプロセッサおよびサブシステム320、704は、コンポーネントキャッシュインジケータ740〜744に関連付けられた制御レジスタ714〜718のグループの仮想化ビューを有する。
図7の例を続けると、コンポーネントキャッシュインジケータ740(この例では、CCID1)が割り当てられたビデオサブシステム320は、制御レジスタ714(この例では、CCID1制御レジスタ)のそれぞれのグループの仮想化ビューを有する。同様に、コンポーネントキャッシュインジケータ742、744(この例では、CCID2およびCCID3)が割り当てられたモデムサブシステム704は、制御レジスタ716、718(この例では、CCID2制御レジスタおよびCCID3制御レジスタ)のそれぞれのグループの仮想化ビューを有する。制御レジスタ714〜718のそれぞれのグループの仮想化ビューを有するプロセッサまたはサブシステム320、704は、制御レジスタ714〜718のそれぞれのグループにキャッシュ保守およびステータスコマンドを直接発行してよい。キャッシュ保守およびステータスコマンドは、コンポーネントキャッシュ制御レジスタ714〜718のターゲットグループを識別するのに適切なコンポーネントキャッシュインジケータ740〜744を使用して、プロセッサまたはサブシステム320、704のビデオファームウェア734またはモデムファームウェア736などのプロセッサまたはコンポーネントによって発行されてよい。
図7における例では、それぞれのコンポーネントキャッシュ604〜608のマスタとしての制御レジスタ714〜718のそれぞれのグループにプロセッサおよびサブシステム320、704によって直接発行されたキャッシュ保守またはステータスコマンドは、ビデオサブシステム320から制御レジスタ714のグループへ、またモデムサブシステム704から制御レジスタ716、718のグループへ、実線によって示される。コンポーネントキャッシュ604〜608の仮想化ビューは、コンポーネントキャッシュ604〜608の仮想所有権をそれぞれのマスタ320、702、704に提供する。そのような仮想所有権は、マスタ320、702、704の間の直接アクセスを同期させない他のマスタ320、702、704による直接アクセスと並行して(たとえば、それと同時に)、マスタ320、702、704が制御レジスタ714〜718のそれぞれのグループに直接アクセスすることを可能にしてよい。したがって、マスタ320、702、704は、制御レジスタ714〜718のそれぞれのグループにキャッシュ保守およびステータスコマンドを並行して(たとえば、同時に)発行してよく、制御レジスタ714〜718のそれぞれのグループは、キャッシュ保守およびステータスコマンドを並行して(たとえば、同時に)受け取ることがある。
図8は、一態様による、マスタキャッシュ保守動作直接アクセスの一例を示す。図1〜図7を参照すると、図8における例は、アプリケーションサブシステム702が電力崩壊し、コンポーネントキャッシュインジケータ740(この例では、CCID1)が割り当てられていたコンポーネントキャッシュ604(この例では、CCID1コンポーネントキャッシュ)に関連付けられた制御レジスタ714(この例では、CCID1制御レジスタ)のグループに、ビデオサブシステム320がキャッシュ保守またはステータスコマンドを直接発行するような、図7における例の一態様を示す。アプリケーションサブシステム702が電力崩壊するにもかかわらず、ビデオサブシステム320はそれが割り当てられた先のキャッシュインジケータ740を保持し、MMU746は依然として制御レジスタへのマッピングとともに構成されている。キャッシュインジケータ740を保持することによって、ビデオサブシステム320は、アプリケーションサブシステム702、すなわち、この例では、集中制御エンティティを通じて制御レジスタ714のグループと通信しなくても、制御レジスタ714のグループの仮想化ビューを保持する。図7の要素は、説明を簡単にするために図8では省略される。図8はまた、以下でさらに詳細に説明する制御レジスタ714のグループの一例を提供する。
制御空間700は、図7に示すように、制御レジスタ708〜720の様々なグループを含んでよい。制御レジスタ712〜720のグループの各々は、それらのそれぞれのコンポーネントキャッシュ602、604、606、608、706に対して制御およびステータスコマンド/動作を実施するための制御レジスタを含んでよい。説明を簡単にするために、図8における例は、ビデオサブシステム320がマスタであるべきコンポーネントキャッシュ604と相関された制御レジスタ714のグループ用の制御レジスタ800〜808を示す。
制御レジスタ800〜808の各々は、その関連するコンポーネントキャッシュ604に対するキャッシュ保守またはステータスコマンド/動作を実施するように構成されてよい。制御レジスタ800〜808は、アクティベート/ディアクティベートレジスタ800、現在割当て済みセット/ウェイレジスタ802、およびキャッシュ保守動作レジスタ804〜808を含んでよい。アクティベート/ディアクティベートレジスタ800は、マスタ320による使用のためにコンポーネントキャッシュ604をアクティベートおよびディアクティベートさせるように構成されてよい。
一態様では、アクティベート/ディアクティベートレジスタ800が、たとえば、ビットフラグ=1によってアクティベートに設定されると、オーバーラップするいかなるコンポーネントキャッシュも、システムキャッシュコントローラ304によってアクティベートされるのを防止されてよい。オーバーラップするコンポーネントキャッシュがアクティブでなく、またはオーバーラップするコンポーネントキャッシュのすべてのアクティベート/ディアクティベートレジスタが、たとえば、ビットフラグ=0によってディアクティベートに設定されるとき、システムキャッシュコントローラ304は、アクティベートコードをアクティベート/ディアクティベートレジスタに書き込むことを許可してよい。一態様では、コンポーネントキャッシュ構成テーブルは、関連するコンポーネントキャッシュがアクティブであるときに、関連するコンポーネントキャッシュが他のコンポーネントキャッシュとのオーバーラップを許容してよいのか、それとも防止してよいのかを示してよい値を記憶する、オーバーラップ特色フィールドを含んでよい。オーバーラップが受け付けられることをオーバーラップ値が示すことに応答して、システムキャッシュコントローラ304は、オーバーラップするコンポーネントキャッシュのアクティベートを許容してよく、コンポーネントキャッシュ構成テーブルの中のコンポーネントキャッシュ用の置換ポリシーを使用してコンポーネントキャッシュのオーバーラップを管理してよい。オーバーラップが受け付けられないことをオーバーラップ値が示すことに応答して、システムキャッシュコントローラ304は、オーバーラップするコンポーネントキャッシュのアクティベートを防止してよく、コンポーネントキャッシュをアクティベートさせるための障害をマスタに通知してよい。
ターゲットウェイレジスタ802は、制御またはステータスコマンド/動作を実施するための、コンポーネントキャッシュ604のいくつかのウェイを示すために使用されてよい。キャッシュ保守動作レジスタ804〜808は、コンポーネントキャッシュ604内でのアドレスまたはアドレスの範囲に基づいて指定されたコンポーネントキャッシュ604の部分に対するいくつかのキャッシュ保守動作を実施するための、制御レジスタを表してよい。たとえば、キャッシュ保守動作レジスタ804〜808は、キャッシュクリーン保守コマンド、キャッシュ無効化保守コマンド、またはキャッシュクリーンおよび無効化保守コマンドを実施するように構成されてよい。
キャッシュ保守動作レジスタ804〜808は、キャッシュ保守動作を実施するためのコンポーネントキャッシュ604のエリアを示すために、異なるアドレスタイプを使用してよい。一態様では、キャッシュ保守動作レジスタ804は、コンポーネントキャッシュ604の一部分に相関するシステムキャッシュ302のセットおよび/またはウェイによって示された位置におけるコンポーネントキャッシュ604に対して、キャッシュ保守動作を実施するように構成されてよい。キャッシュ保守動作レジスタ806は、コンポーネントキャッシュ604の部分のメモリ物理アドレスおよびサイズによって示された位置におけるコンポーネントキャッシュ604に対して、キャッシュ保守動作を実施するように構成されてよい。キャッシュ保守動作レジスタ808は、コンポーネントキャッシュ604の部分に対するメモリ仮想アドレスおよびベースオフセットによって示された位置におけるコンポーネントキャッシュ604に対して、キャッシュ保守動作を実施するように構成されてよい。一態様では、キャッシュ保守動作レジスタは、キャッシュ保守動作を実施するための仮想アドレスの範囲を使用するように構成されてよい。アドレスタイプは、コンポーネントキャッシュ604の部分または様々なサイズを参照してよく、それらは、キャッシュワード、キャッシュライン、キャッシュページ、キャッシュウェイ、キャッシュセット、キャッシュバンク、またはこれらのパラメータの組合せを含んでよい。制御レジスタ714のグループは、キャッシュ保守動作とアドレス指定タイプとの組合せごとに別個のキャッシュ保守動作レジスタ804〜808を含んでよい。
図8における例は、コンポーネントキャッシュ604のマスタとしてのビデオサブシステム320による制御レジスタ800〜808のうちの少なくとも1つの直接アクセスを表す。一態様では、キャッシュ保守またはステータスコマンドを発行することが、アプリケーションサブシステム702などの集中制御エンティティをバイパスすることによって、すなわち、それを伴うことなく成し遂げられてよいため、制御レジスタ800〜808のアクセスは直接である。ビデオサブシステム320は、直接のキャッシュ保守またはステータスコマンドを開始し送信してよい。一態様では、直接のキャッシュ保守またはステータスコマンドは、制御空間700から情報を発見するために、インジケータ740からまたはインジケータ740を使用することによってのいずれかで取り出される、関連する制御レジスタ800〜808および関連するコンポーネントキャッシュ604の情報を含んでよい。関連する制御レジスタ800〜808の情報は、発行されているキャッシュ保守またはステータスコマンドに基づく関連する制御レジスタ800〜808のアドレスオフセットを含んでよい。たとえば、アクティベート/ディアクティベートコマンドをアクティベート/ディアクティベートレジスタ800に向けるために、アクティベート/ディアクティベートレジスタ800用の仮想アドレスが使用されてよい。
マスタ320から発行されたキャッシュ保守またはステータスコマンドの仮想アドレスは、関連する制御レジスタ800〜808用の物理アドレスに変換されてよい。一態様では、変換は、システムメモリ管理ユニット746によって実施されてよく、システムメモリ管理ユニット746は、コンポーネントキャッシュ構成テーブルを生成、ロード、または更新するときに制御レジスタ800〜808に対して仮想アドレスが決定される時間において、変換テーブルまたはアルゴリズムとともにロードされてよい。一態様では、システムメモリ管理ユニット746は、制御レジスタ800〜808の仮想アドレスを物理アドレスに変換するための変換テーブルまたはアルゴリズムとともにプリロードされてよい。アクティベート/ディアクティベートコマンドをアクティベート/ディアクティベートレジスタ800に発行する例では、アクティベート/ディアクティベートコマンドはまた、上記で説明したビットフラグ用のデータ、または、より詳細には、アクティベートもしくはディアクティベートさせるべきコンポーネントキャッシュ604の部分を示すことがある他のデータなどの、アクティベート/ディアクティベートレジスタ800に書き込むためのデータを含んでよい。
一態様では、キャッシュセットおよび/もしくはキャッシュウェイによるターゲットウェイもしくはキャッシュ保守動作を示すために発行される、キャッシュ保守またはステータスコマンドは、関連する制御レジスタ800〜808、たとえば、ターゲットウェイレジスタ802およびキャッシュ保守動作レジスタ804の仮想アドレスを取り出すこと、ならびに仮想アドレスを関連する制御レジスタ800〜808の物理アドレスに変換することを同様に伴ってよい。これらのキャッシュ保守またはステータスコマンドはまた、コンポーネントキャッシュ604の情報を取り出すことを伴ってよい。キャッシュセットおよび/もしくはキャッシュウェイによるターゲットウェイもしくはキャッシュ保守動作を示すために発行される、キャッシュ保守またはステータスコマンドは、キャッシュ保守またはステータスコマンド/動作を実施すべきコンポーネントキャッシュ604の部分を示すためにターゲットウェイレジスタ802およびキャッシュ保守動作レジスタ804に書き込むためのデータを含んでよい。この例では、データは、キャッシュ保守またはステータスコマンド/動作を実施するためのターゲットウェイまたはキャッシュセットおよび/もしくはキャッシュウェイの表示を含んでよい。
一態様では、関連するコンポーネントキャッシュ602、604、606、608、706の部分のメモリ仮想アドレスおよびサイズまたはベースオフセットによってキャッシュ保守動作を示すために発行される、キャッシュ保守またはステータスコマンドは、関連する制御レジスタ800〜808の仮想アドレス、たとえば、キャッシュ保守動作レジスタ806、808を取り出すことを同様に伴ってよい。キャッシュ保守またはステータスコマンドを発行することはまた、仮想アドレスを関連する制御レジスタ800〜808の物理アドレスに変換することを伴ってよい。
キャッシュ保守またはステータスコマンド/動作を実施するためのコンポーネントキャッシュ604の部分を識別するキャッシュ保守またはステータスコマンドの場合、図15を参照しながら説明するように、キャッシュ保守またはステータスコマンドのデータ部を変換するために余分なアドレス変換が実施されることがある。データ部は、キャッシュ保守またはステータスコマンド/動作が効果を生じるべき、コンポーネントキャッシュ604内のコンテンツのメモリ仮想アドレスを含んでよい。コンポーネントキャッシュ604に対するキャッシュ保守またはステータスコマンド/動作を実施するために、キャッシュ保守動作レジスタ806、808は、コンポーネントキャッシュ604内のコンテンツをターゲットにする要求のメモリ物理アドレスを必要とすることがある。発行されたキャッシュ保守またはステータスコマンドのデータとして変換されるメモリ仮想アドレスは、コンポーネントキャッシュ604用のメモリ物理アドレスに変換されてよい。一態様では、データ変換は、システムメモリ管理ユニット746によって実施されてよく、システムメモリ管理ユニット746は、コンポーネントキャッシュ構成テーブルを生成、ロード、または更新するときにコンポーネントキャッシュ602、604、606、608、706に対してメモリ仮想アドレスが決定される時間において、データ変換テーブルまたはアルゴリズムとともにロードされてよい。一態様では、システムメモリ管理ユニット746またはシステムキャッシュコントローラ304は、コンポーネントキャッシュ602、604、606、608、706のメモリ仮想アドレスをメモリ物理アドレスに変換するためのデータ変換テーブルまたはアルゴリズムとともにプリロードされてよい。
図9は、一態様による、マスタコンポーネントキャッシュ識別子割当ておよびキャッシュ保守動作直接アクセスの一例を示す。図1〜図8を参照すると、一態様では、コンピューティングデバイスは、コンピューティングデバイスのブートシーケンスの一部として、コンポーネントキャッシュ構成テーブルを生成してよく、コンポーネントキャッシュのインジケータをコンポーネントキャッシュマスタに割り当ててよい。コンピューティングデバイスは、ブートプロセスが悪意のあるコードからセキュアであることを確実にするために、セキュア信頼ゾーン環境732を使用してブートしてよい(902)。ブートプロセスは、集中制御エンティティとしてのハイパーバイザの実行を開始してよい(906)。
ハイパーバイザ726は、システムキャッシュコントローラ304の中にコンポーネントキャッシュ構成テーブルを生成してよい(906)。一態様では、コンポーネントキャッシュ構成テーブルは、システムキャッシュメモリをパーティショニングするためにコンピューティングデバイスに提供されるプログラム命令に基づいて生成されてよい。一態様では、コンポーネントキャッシュ構成テーブルは、コンポーネントキャッシュ構成テーブルの前の構成の記憶から取り出された情報に基づいて生成されてよい。
ハイパーバイザ726は、コンポーネントキャッシュマスタの各々に、それぞれのコンポーネントキャッシュ用の少なくとも1つのインジケータを提供してよい(908)。一態様では、コンポーネントキャッシュマスタ900は、図1〜図3、図7、および図8を参照しながら説明したプロセッサおよびサブシステムを含んでよい。インジケータは、図7および図8を参照しながら上記で説明したように、コンポーネントキャッシュ識別子、コンポーネントキャッシュと相関された制御レジスタのグループの仮想アドレス、ならびに/またはコンポーネントキャッシュの仮想アドレス、セット、および/もしくはウェイを含んでよい。
ハイパーバイザ726は、システムメモリ管理ユニット746の中で、コンポーネントキャッシュと相関された制御レジスタの適切なグループを各マスタにマッピングしてよい(910)。マスタ900と制御レジスタのグループとの間のマッピング情報を用いて、メモリ管理ユニット746は、キャッシュ保守またはステータスコマンドのデータを制御レジスタに送達するために、マスタ900によって発行されるキャッシュ保守またはステータスコマンドの制御レジスタ用の仮想アドレスを物理アドレスに変換することを可能にされてよい。
コンポーネントキャッシュ構成テーブル生成、コンポーネントキャッシュインジケータ割当て、および制御レジスタマッピングが成し遂げられると、ハイパーバイザ726は、高レベルオペレーティングシステムを開始してよく(912)、高レベルオペレーティングシステムがプロセッサおよびサブシステムイメージをロードするのを許可してよい(914)。高レベルオペレーティングシステム724は、マスタの関数を呼び出してよく(916)、そうした関数は、マスタが割り当てられているコンポーネントキャッシュ関数を発見するようにマスタ900を促してよい(918)。一態様では、マスタ900は、マスタが割り当てられた先のコンポーネントキャッシュインジケータおよび/または位置を発見できさえすればよく(918)、相関された制御レジスタを読み取ることによってコンポーネントキャッシュ機能を発見してよい(920)。マスタ900は、相関された制御レジスタへの直接アクセスを介して、マスタ900に割り当てられているコンポーネントキャッシュにキャッシュ保守またはステータスコマンドを発行してよい(922)。一態様では、マスタ900によって発行される最初のキャッシュ保守またはステータスコマンドは、コンポーネントキャッシュに対するアクティベートコマンドであってよい。
図10は、コンポーネントキャッシュ制御レジスタを仮想化するための態様方法1000を示す。方法1000は、集中制御エンティティおよびコンポーネントキャッシュマスタによるなどの、本明細書で説明するようなコンピューティングデバイスによって実行されてよい。ブロック1002において、コンピューティングデバイスは、ブートしてよい。随意のブロック1004において、コンピューティングデバイスは、ブートプロセスが悪意のあるコードによって壊されないことを確実にするために、信頼ゾーンセキュア環境を開始してよい。随意のブロック1006において、コンピューティングデバイスは、コンポーネントキャッシュ構成を、またいくつかの態様ではアクセスおよび/または保守を管理するために、集中制御エンティティの一部としてハイパーバイザを開始してよい。コンピューティングデバイスが信頼ゾーンセキュア環境を使用してブートすることは必要でなく、コンポーネントキャッシュ構成を、またいくつかの態様ではアクセスおよび/または保守を管理するために、ハイパーバイザが使用されることも必要でない。しかしながら、様々な態様では、信頼ゾーンおよびハイパーバイザの実装は、コンピューティングデバイスを悪意のある攻撃から保護する際の、またコンピューティングリソースを管理する際の助けとなることがある。
ブロック1008において、コンピューティングデバイスは、図11を参照しながらさらに説明するように、システムキャッシュメモリをコンポーネントキャッシュメモリにパーティショニングしてよい。ブロック1010において、コンピューティングデバイスは、高レベルオペレーティングシステムを開始してよい。ブロック1012において、高レベルオペレーティングシステムを実行しているコンピューティングデバイスは、プロセッサまたはサブシステムへの関数呼出しを行ってよい。関数呼出しは、そのプロセッサまたはサブシステムに割り当てられているコンポーネントキャッシュを使用するように、プロセッサまたはサブシステムを促してよい。
ブロック1014において、コンピューティングデバイスは、プロセッサまたはサブシステムを介して、図12を参照しながらさらに説明するように、コンポーネントキャッシュに関連付けられたアクティベート/ディアクティベート制御レジスタにアクティベートコマンドを発行することによって、プロセッサまたはサブシステムに割り当てられたコンポーネントキャッシュをアクティベートさせてよい。
図11は、コンポーネントキャッシュインジケータをマスタに割り当てるための態様方法1100を示す。方法1100は、集中制御エンティティ、コンポーネントキャッシュマスタ、システムメモリ管理ユニット、システムキャッシュコントローラ、およびコンポーネントキャッシュ制御レジスタによるなどの、本明細書で説明するようなコンピューティングデバイスによって実行されてよい。ブロック1102において、コンピューティングデバイスは、コンポーネントキャッシュ構成テーブルを生成またはロードしてよい。一態様では、コンポーネントキャッシュ構成テーブルは、システムキャッシュメモリをパーティショニングするためにコンピューティングデバイスに提供されるプログラム命令に基づいて生成されてよい。一態様では、コンポーネントキャッシュ構成テーブルは、コンポーネントキャッシュ構成テーブルの前の構成の記憶から取り出された情報に基づいて生成されてよい。
ブロック1104において、コンピューティングデバイスは、コンポーネントキャッシュインジケータをそれぞれのコンポーネントキャッシュのマスタに割り当ててよい。ブロック1106において、コンピューティングデバイスは、制御レジスタをコンポーネントキャッシュインジケータ情報に割り当ててよく、またはマッピングしてよい。一態様では、各マスタは、少なくとも1つのコンポーネントキャッシュのマスタであってよく、それがマスタであるべきコンポーネントキャッシュの各々に対してコンポーネントキャッシュインジケータが割り当てられてよい。上記で説明したように、コンポーネントキャッシュインジケータは、それぞれのコンポーネントキャッシュのコンポーネントキャッシュ識別子、それぞれのコンポーネントキャッシュと相関された制御レジスタの仮想アドレス、および/または仮想アドレスを含んでよい。プロセッサおよびサブシステムは、それらがマスタであるべきそれぞれのコンポーネントキャッシュのコンポーネントキャッシュインジケータを記憶してよい。
一態様では、コンポーネントキャッシュインジケータは、それらのそれぞれのコンポーネントキャッシュに対する制御空間の仮想化ビューをマスタに提供してよく、その結果、マスタは、他のコンポーネントキャッシュ用の制御空間、すなわちシステムキャッシュの他の部分が見えない。マスタは、それぞれのコンポーネントキャッシュのサイズ、位置、および、コンポーネントキャッシュ構成テーブルの機能などの他の機能を発見するために、コンポーネントキャッシュインジケータを使用してよい。一態様では、コンポーネントキャッシュインジケータを記憶することは、マスタがコンポーネントキャッシュインジケータを使用して、マスタのコンポーネントキャッシュに関連付けられた制御レジスタへの直接のキャッシュ保守およびステータスコマンドを行うことを可能にする。そのような態様では、マスタは、制御レジスタへのキャッシュ保守およびステータスコマンドを発行するために集中制御エンティティの助けを必要とせず、したがって、集中制御エンティティが電力崩壊するときであっても直接のキャッシュ保守およびステータスコマンドを行ってよい。
図12は、コンポーネントキャッシュ制御レジスタへのキャッシュ保守またはステータスコマンド/動作をマスタによって直接発行するための態様方法1200を示す。方法1200は、集中制御エンティティおよびコンポーネントキャッシュマスタによるなどの、本明細書で説明するようなコンピューティングデバイスによって実行されてよい。一態様では、方法1200は、コンポーネントキャッシュをアクティベートさせるために、方法1000のブロック1014の一部として実施されてよい。一態様では、方法1200はまた、アクティベート、ディアクティベート、ターゲットウェイ表示、またはキャッシュクリーニング、キャッシュ無効化、もしくはキャッシュクリーニングおよび無効化を含む、任意のキャッシュ保守またはステータスコマンド/動作を、キャッシュセット、キャッシュウェイ、またはサイズもしくはベースオフセットを有するキャッシュメモリ仮想アドレスのうちの1つまたは複数に基づいて発行するために実施されてよい。
ブロック1202において、コンピューティングデバイスは、マスタを介して、マスタに割り当てられるコンポーネントキャッシュインジケータを選択してよい。上記で説明したように、マスタは、マスタを複数のコンポーネントキャッシュと関連付ける複数のコンポーネントキャッシュインジケータが割り当てられてよい。コンポーネントキャッシュインジケータは、コンポーネントキャッシュのコンポーネントキャッシュ識別子、コンポーネントキャッシュと相関された制御レジスタの仮想アドレス、および/またはそれぞれのコンポーネントキャッシュの仮想アドレスのうちの1つまたは複数を含んでよい。
ブロック1204において、コンピューティングデバイスは、マスタを介して、選択されたコンポーネントキャッシュインジケータと相関されたコンポーネントキャッシュに対して実施するためのキャッシュ保守またはステータスコマンド/動作を識別してよい。ブロック1206において、コンピューティングデバイスは、キャッシュ保守またはステータスコマンド/動作を実施するための制御レジスタの仮想アドレスをキャッシュ保守またはステータスコマンド/動作に割り当ててよい。
上記で説明したように、異なるキャッシュ保守またはステータスコマンド/動作が異なるデータに基づいてよく、そうしたデータは、キャッシュ保守またはステータスコマンド/動作を実施するために制御レジスタに書き込まれるべきデータを含んでよい。一態様では、データは、コンポーネントキャッシュが操作なしに制御レジスタに書き込まれてよいキャッシュセットおよび/もしくはキャッシュウェイによって識別される場合は、フラグ値もしくはターゲットウェイ、または位置などの値を表してよい。一態様では、データは、キャッシュ保守またはステータスコマンド/動作が実施されるべきコンポーネントキャッシュの位置または部分を表してよい。そのような態様では、コンポーネントキャッシュの位置または部分は、キャッシュ保守またはステータスコマンド/動作の中でメモリ仮想アドレスによって表されてよく、メモリ仮想アドレスは、コンポーネントキャッシュのマスタに知られているようなシステムキャッシュ用の仮想アドレスであってよい。
判定ブロック1208において、コンピューティングデバイスは、キャッシュ保守またはステータスコマンド/動作のためのデータがメモリ仮想アドレスであるかどうかを判定してよい。
キャッシュ保守またはステータスコマンド/動作のためのデータがメモリ仮想アドレスであるという判定に応答して(すなわち、判定ブロック1208="Yes")、コンピューティングデバイスは、ブロック1210において、コンポーネントキャッシュのメモリ仮想アドレスをキャッシュ保守またはステータスコマンド/動作のデータ部に割り当ててよい。ブロック1214において、コンピューティングデバイスは、キャッシュ保守またはステータスコマンド/動作および関連付けられたコンポーネントキャッシュ用の制御レジスタへ、キャッシュ保守またはステータスコマンド/動作を送信してよい。コンポーネントキャッシュのメモリ仮想アドレスをキャッシュ保守またはステータスコマンド/動作のデータ部に割り当てること、およびキャッシュ保守またはステータスコマンド/動作を送信することのさらなる態様が、図15を参照しながら説明される。
キャッシュ保守またはステータスコマンド/動作のためのデータがメモリ仮想アドレスでないという判定に応答して(すなわち、判定ブロック1208="No")、コンピューティングデバイスは、ブロック1212において、コンポーネントキャッシュがキャッシュセットおよび/もしくはキャッシュウェイによって識別される場合は、フラグ値もしくはターゲットウェイ、または位置などの値を含むデータを、キャッシュ保守またはステータスコマンド/動作のデータ部に割り当ててよい。コンピューティングデバイスは、ブロック1214において、キャッシュ保守またはステータスコマンド/動作および関連付けられたコンポーネントキャッシュ用の制御レジスタへ、キャッシュ保守またはステータスコマンド/動作を送信してよい。キャッシュ保守またはステータスコマンド/動作のデータ部にデータを割り当てること、およびキャッシュ保守またはステータスコマンド/動作を送信することのさらなる態様が、図14を参照しながら説明される。上述のように、キャッシュ保守またはステータスコマンド/動作および関連付けられたコンポーネントキャッシュ用の制御レジスタへのキャッシュ保守またはステータスコマンド/動作を送信することは、集中制御エンティティの支援なしにシステムメモリ管理ユニットおよびシステムキャッシュコントローラのうちの1つまたは複数を介して、マスタと制御レジスタとの間で直接送信することによって成し遂げられてよい。
図13は、マスタによって直接発行されたコンポーネントキャッシュに対するキャッシュ保守またはステータスコマンド/動作を実施するための態様方法1300を示す。方法1300は、集中制御エンティティ、コンポーネントキャッシュマスタ、およびシステムメモリ管理ユニットによるなどの、本明細書で説明するようなコンピューティングデバイスによって実行されてよい。一態様では、方法1300は、方法1200のブロック1214において、キャッシュ保守またはステータスコマンド/動作を送信することに応答して実施されてよい。
ブロック1302において、コンピューティングデバイスは、システムメモリ管理ユニットおよびシステムキャッシュコントローラを介して、キャッシュ保守またはステータスコマンド/動作およびコンポーネントキャッシュに関連付けられた適切な制御レジスタにアドレス指定された、キャッシュ保守またはステータスコマンド/動作を受け取ってよい。
ブロック1304において、コンピューティングデバイスは、システムメモリ管理ユニットおよびシステムキャッシュコントローラを介して、制御レジスタ用の仮想アドレスを制御レジスタの対応する物理アドレスに変換してよい。上記で説明したように、仮想アドレスと制御レジスタの物理アドレスとの間の変換は、コンポーネントキャッシュ構成テーブルの生成に応答してコンピューティングデバイスに提供されるか、またはコンピューティングデバイスにプリロードされたメモリマップもしくはアルゴリズムを使用して、成し遂げられてよい。
また上述のように、キャッシュ保守またはステータスコマンド/動作のデータは、制御レジスタに提供されるべき、変換を必要としないデータと、キャッシュ保守またはステータスコマンド/動作を実施するためにメモリ物理アドレスへの変換を必要とするシステムキャッシュメモリのメモリ仮想アドレスなどのデータとを含む、複数のフォーマットを採ってよい。判定ブロック1306において、コンピューティングデバイスは、キャッシュ保守またはステータスコマンド/動作のデータがメモリ仮想アドレスであるかどうかを判定してよい。一態様では、この決定は、制御レジスタの仮想アドレスまたは物理アドレスと制御レジスタの関数との間の相関に基づいて行われてよい。コンピューティングデバイスは、いくつかの仮想アドレスまたは物理アドレスにおける制御レジスタが、そのキャッシュ保守またはステータスコマンド/動作を実施するためのメモリアドレスを受け取るように構成されているかどうかを識別する情報を含んでよい。
キャッシュ保守またはステータスコマンド/動作のデータがメモリ仮想アドレスであるという判定に応答して(すなわち、判定ブロック1306="Yes")、コンピューティングデバイスは、ブロック1308において、キャッシュ保守またはステータスコマンド/動作のメモリ仮想アドレスデータを、キャッシュ保守またはステータスコマンド/動作を実施するためのシステムキャッシュのメモリ物理アドレスに変換してよい。仮想アドレスから物理アドレスへの制御レジスタの変換とほとんど同じように、メモリ仮想アドレスとメモリ物理アドレスとの間の変換は、コンポーネントキャッシュ構成テーブルの生成に応答してコンピューティングデバイスに提供されるか、またはコンピューティングデバイスにプリロードされたメモリマップもしくはアルゴリズムを使用して、成し遂げられてよい。一態様では、メモリアドレスの変換は、システムメモリ管理ユニットおよびシステムキャッシュコントローラによって実施されてよい。変換の一部として、キャッシュ保守またはステータスコマンド/動作のメモリ仮想アドレスデータがメモリ物理アドレスによって置換されてよい。
ブロック1310において、コンピューティングデバイスは、コンポーネントキャッシュおよびキャッシュ保守またはステータスコマンド/動作に関連付けられた制御レジスタを、キャッシュ保守またはステータスコマンド/動作によって提供されるデータを用いて更新してよい。ブロック1312において、コンピューティングデバイスは、キャッシュ保守またはステータスコマンド/動作のデータに基づいて、指定されたコンポーネントキャッシュ、またはコンポーネントキャッシュ内での位置に対して、キャッシュ保守またはステータスコマンド/動作を実施してよい。メモリ仮想アドレスをデータとして使用してキャッシュ保守またはステータスコマンド/動作のための制御レジスタを更新することのさらなる態様が、図15を参照しながら説明される。
キャッシュ保守またはステータスコマンド/動作のデータがメモリ仮想アドレスでないという判定に応答して(すなわち、判定ブロック1306="No")、コンピューティングデバイスは、ブロック1310において、コンポーネントキャッシュおよびキャッシュ保守またはステータスコマンド/動作に関連付けられた制御レジスタを、キャッシュ保守またはステータスコマンド/動作によって提供されるデータを用いて更新してよい。コンピューティングデバイスは、ブロック1312において、キャッシュ保守またはステータスコマンド/動作のデータに基づいて、指定されたコンポーネントキャッシュ、またはコンポーネントキャッシュ内での位置に対して、キャッシュ保守またはステータスコマンド/動作をさらに実施してよい。データを使用してキャッシュ保守またはステータスコマンド/動作のための制御レジスタを更新することのさらなる態様が、図15を参照しながら説明される。
図14は、一態様による、キャッシュ保守動作直接アクセスの一例を示す。一態様では、コンピューティングデバイスは、ターゲット制御/ステータスレジスタ800〜808の位置を識別するように構成される仮想アドレス(VA)1402、およびキャッシュ保守またはステータスコマンド/動作を実施するためのデータ1404を含む、キャッシュ保守またはステータスコマンド/動作を実施してよい。一態様では、マスタのプロセッサ1400、たとえば、ビデオサブシステム320が、仮想アドレス1402およびデータ1404を含むキャッシュ保守またはステータスコマンド/動作を発行してよい。マスタ320のメモリ管理ユニット746が、キャッシュ保守またはステータスコマンド/動作のターゲット制御/ステータスレジスタ800〜808の位置を識別する仮想アドレス1402を、ターゲット制御/ステータスレジスタ800〜808に対応する物理アドレス(PA)1406に変換してよい。メモリ管理ユニット746は、様々な既知の技法を使用して、仮想アドレス1402を物理アドレス1406に変換してよい。データ1404と、今や仮想アドレス1402から導出された物理アドレス1406とを含む、キャッシュ保守またはステータスコマンド/動作は、物理アドレス1406を使用して、対応するターゲット制御/ステータスレジスタ800〜808、この例では、キャッシュ保守動作レジスタ804へ、システムキャッシュコントローラ304によって経由されてよい。
図15は、一態様による、キャッシュ保守動作直接アクセスのためのデータから仮想メモリアドレスを変換する一例を示す。一態様では、コンピューティングデバイスは、ターゲット制御/ステータスレジスタ800〜808の位置を識別するように構成される仮想アドレス(VA)1402、およびキャッシュ保守またはステータスコマンド/動作を実施するためのデータ1500としての仮想アドレス(VA)を含む、キャッシュ保守またはステータスコマンド/動作を実施してよい。
一態様では、マスタのプロセッサ1400、たとえば、ビデオサブシステム320が、仮想アドレス1402、およびデータとしての仮想アドレス1500を含む、キャッシュ保守またはステータスコマンド/動作を発行してよい。データとしての仮想アドレス1500は、キャッシュ保守またはステータスコマンド/動作を実施するためにマスタ302に割り当てられたコンポーネントキャッシュの中での位置としての、キャッシュ保守またはステータスコマンド/動作のデータ部に書き込まれた仮想アドレスを含んでよい。マスタ320のメモリ管理ユニット746が、キャッシュ保守またはステータスコマンド/動作のターゲット制御/ステータスレジスタ800〜808の位置を識別するように構成される仮想アドレス1402を、ターゲット制御/ステータスレジスタ800〜808に対応する物理アドレス(PA)1406に変換してよい。メモリ管理ユニット746はまた、マスタ302に割り当てられたコンポーネントキャッシュの中での位置としての仮想アドレス1402を、コンポーネントキャッシュの中での位置としての物理アドレスに対応する物理アドレス(PA)に変換してよい。変換された物理アドレスは、データとしての物理アドレス1502としてキャッシュ保守またはステータスコマンド/動作に書き込まれてよい。したがって、データとしての物理アドレス1502は、キャッシュ保守またはステータスコマンド/動作のデータ部に書き込まれてよい。メモリ管理ユニット746は、様々な既知の技法を使用して、仮想アドレス1402およびデータとしての仮想アドレス1500を物理アドレス1406およびデータとしての物理アドレス1502に変換してよい。物理アドレス1404と、今やデータとしての仮想アドレス1500から導出されたデータとしての物理アドレス1502とを含む、キャッシュ保守またはステータスコマンド/動作は、物理アドレス1406を使用して、対応するターゲット制御/ステータスレジスタ800〜808、この例では、キャッシュ保守動作レジスタ804へ、システムキャッシュコントローラ304によって経由されてよい。キャッシュ保守動作レジスタ804は、データとしての物理アドレス1502を使用して、コンポーネントキャッシュの物理アドレスに対するキャッシュ保守またはステータスコマンド/動作を実施してよい。
図16は、様々な態様とともに使用するのに好適な例示的なモバイルデバイスを示す。図1〜図14を参照すると、モバイルデバイス1600は、図1〜図3、図7〜図9、図14、および図15を参照しながら説明したコンピューティングデバイスおよびコンポーネントを含んでよい。モバイルデバイス1600は、タッチスクリーンコントローラ1604および内部メモリ1606に結合されたプロセッサ1602を含んでよい。プロセッサ1602は、汎用または特定の処理タスクに対して指定された1つまたは複数のマルチコア集積回路であってよい。内部メモリ1606は、揮発性メモリまたは不揮発性メモリであってよく、また、セキュアメモリおよび/もしくは暗号化メモリまたは非セキュアメモリおよび/もしくは非暗号化メモリ、あるいはそれらの任意の組合せであってもよい。活用され得るメモリタイプの例は、限定はしないが、DDR、LPDDR、GDDR、WIDEIO、RAM、SRAM、DRAM、P-RAM、R-RAM、M-RAM、STT-RAM、および組込みDRAMを含む。タッチスクリーンコントローラ1604およびプロセッサ1602はまた、抵抗感知タッチスクリーン、容量感知タッチスクリーン、赤外線感知タッチスクリーンなどのタッチスクリーンパネル1612に結合されてよい。追加として、コンピューティングデバイス1600のディスプレイは、タッチスクリーン機能を有する必要がない。
モバイルデバイス1600は、互いにかつ/またはプロセッサ1602に結合された、通信を送信および受信するための1つまたは複数の無線信号トランシーバ1608(たとえば、Peanut、Bluetooth(登録商標)、Zigbee、Wi-Fi、RF無線)およびアンテナ1610を有してよい。トランシーバ1608およびアンテナ1610は、様々なワイヤレス伝送プロトコルスタックおよびインターフェースを実施するために、上述の回路構成とともに使用されてよい。モバイルデバイス1600は、セルラーネットワークを介した通信を可能にするとともにプロセッサに結合されている、セルラーネットワークワイヤレスモデムチップ1616を含んでよい。
モバイルデバイス1600は、プロセッサ1602に結合された周辺デバイス接続インターフェース1618を含んでよい。周辺デバイス接続インターフェース1618は、1つのタイプの接続を受け入れるように単独で構成されてよく、あるいはUSB、FireWire、Thunderbolt、またはPCIeなどの一般または独自の様々なタイプの物理接続および通信接続を受け入れるように構成されてもよい。周辺デバイス接続インターフェース1618はまた、同様に構成される周辺デバイス接続ポート(図示せず)に結合されてよい。
モバイルデバイス1600はまた、オーディオ出力を提供するためのスピーカー1614を含んでよい。モバイルデバイス1600はまた、本明細書で説明したコンポーネントのうちの全部または一部を収容するための、プラスチック、金属、または材料の組合せで構築されたハウジング1620を含んでよい。モバイルデバイス1600は、使い捨てバッテリーまたは充電式バッテリーなどの、プロセッサ1602に結合された電源1622を含んでよい。充電式バッテリーはまた、モバイルデバイス1600の外部にあるソースから充電電流を受けるために、周辺デバイス接続ポートに結合されてよい。モバイルデバイス1600はまた、ユーザ入力を受けるための物理的なボタン1624を含んでよい。モバイルデバイス1600はまた、モバイルデバイス1600をオンおよびオフするための電源ボタン1626を含んでよい。
上記で説明した様々な態様はまた、図17に示すラップトップコンピュータ1700などの様々なモバイルデバイス内で実施されてよい。図1〜図16を参照すると、ラップトップコンピュータ1700は、図1〜図3および図7〜図9を参照しながら説明したコンピューティングデバイスおよびコンポーネントを含んでよい。多くのラップトップコンピュータは、コンピュータのポインティングデバイスとして働くタッチパッドタッチ面1717を含み、したがって、タッチスクリーンディスプレイを装備した、上で説明したコンピューティングデバイス上に実装されるものと類似のドラッグジェスチャー、スクロールジェスチャー、およびフリックジェスチャーを受けてよい。ラップトップコンピュータ1700は通常、揮発性メモリ1712、およびフラッシュメモリのディスクドライブ1713などの大容量不揮発性メモリに結合されたプロセッサ1711を含む。追加として、コンピュータ1700は、プロセッサ1711に結合されたワイヤレスデータリンクおよび/またはセルラー電話トランシーバ1716に接続されてよい、電磁放射を送信および受信するための1つまたは複数のアンテナ1708を有してよい。コンピュータ1700はまた、プロセッサ1711に結合されたフロッピーディスクドライブ1714およびコンパクトディスク(CD)ドライブ1715を含んでよい。ノートブック構成では、コンピュータハウジングは、すべてがプロセッサ1711に結合されたタッチパッド1717、キーボード1718、およびディスプレイ1719を含む。コンピューティングデバイスの他の構成は、よく知られているように、(たとえば、USB入力を介して)プロセッサに結合されたコンピュータマウスまたはトラックボールを含んでよく、それらはまた、様々な態様と連携して使用されてよい。
様々な態様の動作を実行するためにプログラマブルプロセッサ上で実行するためのコンピュータプログラムコードまたは「プログラムコード」は、C、C++、C#、Smalltalk、Java(登録商標)、JavaScript(登録商標)、Visual Basic、構造化照会言語(たとえば、Transact-SQL)、Perlなどの高水準プログラミング言語で、または様々な他のプログラミング言語で書かれてよい。本出願で使用しコンピュータ可読記憶媒体上に記憶されるプログラムコードまたはプログラムは、そのフォーマットがプロセッサによって理解可能である(オブジェクトコードなどの)機械言語コードを指すことがある。
多くのコンピューティングデバイスのオペレーティングシステムカーネルは、(非特権コードが動作する場合)ユーザ空間に編成され、(特権コードが動作する場合)カーネル空間に編成される。この分離は、カーネル空間の一部であるコードが一般公衆ライセンス(GPL)許諾されなければならない一方で、ユーザ空間の中で動作するコードがGPL許諾されなくてもよい、Androidおよび他のGPL環境において特に重要である。本明細書で説明する様々なソフトウェアコンポーネント/モジュールが、別段に明記されていない限り、カーネル空間またはユーザ空間のいずれかにおいて実装されてよいことを理解されたい。
上記の方法の説明およびプロセスフロー図は、例示的な例として提供されるにすぎず、様々な態様の動作が、提示された順序で実行されなければならないことを要求または暗示するものではない。当業者によって諒解されるように、上記の態様における動作の順序は、任意の順序で実行されてよい。「その後」、「次いで」、「次に」などの単語は、動作の順序を限定するものではなく、これらの単語は、方法の説明を通して読者を導くために使用されるにすぎない。さらに、たとえば、冠詞"a"、"an"、または"the"を使用する単数形での請求項の要素へのいかなる言及も、その要素を単数形に限定するものとして解釈すべきではない。
様々な態様に関して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズム動作は、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装されてよい。ハードウェアとソフトウェアとのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、および動作が、概してそれらの機能の観点から上記で説明された。そのような機能がハードウェアとして実装されるのか、それともソフトウェアとして実装されるのかは、特定の適用例および全体的なシステムに課される設計制約で決まる。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装してよいが、そのような実装決定は、特許請求の範囲からの逸脱を引き起こすものとして解釈されるべきではない。
本明細書で開示する態様に関して説明した様々な例示的な論理、論理ブロック、モジュール、および回路を実装するために使用されるハードウェアは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェアコンポーネント、または本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実施または実行されてよい。汎用プロセッサはマイクロプロセッサであってよいが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであってもよい。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装されてよい。代替として、いくつかの動作または方法は、所与の機能に固有の回路構成によって実行されてもよい。
1つまたは複数の態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装されてよい。ソフトウェアで実装される場合、機能は、非一時的コンピュータ可読媒体または非一時的プロセッサ可読媒体上の1つまたは複数の命令またはコードとして記憶されてよい。本明細書で開示する方法またはアルゴリズムの動作は、非一時的コンピュータ可読またはプロセッサ可読記憶媒体上に存在してよいプロセッサ実行可能ソフトウェアモジュールで具現化されてよい。非一時的コンピュータ可読またはプロセッサ可読記憶媒体は、コンピュータまたはプロセッサによってアクセスされることがある任意の記憶媒体であってよい。限定ではなく例として、そのような非一時的コンピュータ可読またはプロセッサ可読媒体は、RAM、ROM、EEPROM、FLASHメモリ、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用されてよく、コンピュータによってアクセスされてもよい任意の他の媒体を含んでよい。ディスク(disk)およびディスク(disc)は、本明細書で使用するとき、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標) (disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピーディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読およびプロセッサ可読媒体の範囲内に含まれる。追加として、方法またはアルゴリズムの動作は、コンピュータプログラム製品に組み込まれてよい、非一時的プロセッサ可読媒体および/またはコンピュータ可読媒体上のコードおよび/または命令の1つまたは任意の組合せまたはセットとして存在してよい。
開示する態様の前述の説明は、任意の当業者が特許請求の範囲を製作または使用することを可能にするために提供される。これらの態様への様々な変更は当業者には容易に明らかになり、本明細書で定義された一般原理は、特許請求の範囲から逸脱することなく他の態様に適用されてよい。したがって、本発明は、本明細書に示す態様に限定されるものではなく、以下の特許請求の範囲、ならびに、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
10 コンピューティングデバイス
12 システムオンチップ
14 プロセッサ
16 メモリ
18 通信インターフェース
20 ストレージインターフェース
22 通信コンポーネント
24 記憶コンポーネント
26 アンテナ
28 ネットワークインターフェース
30 ワイヤレスネットワーク
32 ワイヤレス接続
40 インターネット
44 有線接続
50 リモートコンピューティングデバイス
200〜203 プロセッサコア
300 システムハブ
302 システムキャッシュ
304 システムキャッシュコントローラ
306 CPUクラスタ
308 プロトコルコンバータ
310 グラフィックス処理ユニット
312 モデムDSP
314 アプリケーションDSP
316 メモリインターフェース
318 カメラサブシステム
320 ビデオサブシステム
322 ディスプレイサブシステム
324 システムネットワークオンチップ
326 メモリコントローラ
328 ランダムアクセスメモリ
400 システムキャッシュ
402〜416 ウェイ
418 セット
420 システムキャッシュ
422〜424 セットグループ
500 コンポーネントキャッシュ構成テーブル
502 コンポーネントキャッシュ識別子フィールド
504 有効性インジケータ特色フィールド
506 セットシフト特色フィールド
508 セットオフセット特色フィールド
510 ターゲットウェイ特色フィールド
512 全ウェイプローブ特色フィールド
514 インデックスモード特色フィールド
516 置換ポリシー特色フィールド
528 キャッシュラインサイズ特色フィールド
600 システムキャッシュ
602〜610 コンポーネントキャッシュ
700 制御空間
702 アプリケーションサブシステム
704 モデムサブシステム
706 コンポーネントキャッシュ
708 コンポーネントキャッシュ構成テーブル制御レジスタ
710 汎用制御レジスタ
712〜720 制御レジスタ
722 アプリケーション
724 高レベルオペレーティングシステムカーネル
726 ハイパーバイザ
730 メモリ管理ユニット
732 信頼ゾーン
734 ビデオファームウェア
736 モデムファームウェア
738〜744 コンポーネントキャッシュインジケータ
746 メモリ管理ユニット
800 アクティベート/ディアクティベートレジスタ
802 現在割当て済みセット/ウェイレジスタ
804〜808 キャッシュ保守動作レジスタ
900 コンポーネントキャッシュマスタ
1400 プロセッサ
1402 仮想アドレス
1404 データ
1406 物理アドレス

Claims (30)

  1. コンポーネントキャッシュに対するキャッシュ保守またはステータス動作を実施するための方法であって、
    コンポーネントキャッシュインジケータがコンポーネントキャッシュのマスタによってアクセス可能であるような、前記コンポーネントキャッシュの前記コンポーネントキャッシュインジケータを記憶するステップと、
    集中制御エンティティをバイパスして、前記コンポーネントキャッシュに対するキャッシュ保守またはステータスコマンドを前記マスタによって発行するステップと、
    前記集中制御エンティティをバイパスして、キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた制御レジスタによって前記キャッシュ保守またはステータスコマンドを受け取るステップと
    を備える、方法。
  2. コンポーネントキャッシュインジケータがコンポーネントキャッシュのマスタによってアクセス可能であるような、前記コンポーネントキャッシュの前記コンポーネントキャッシュインジケータを記憶するステップが、前記コンポーネントキャッシュ用の制御空間の仮想化ビューを前記マスタに提供するステップを備え、
    前記方法が、前記集中制御エンティティをバイパスすることによって、前記コンポーネントキャッシュの機能を前記マスタによって発見するステップをさらに備える、
    請求項1に記載の方法。
  3. 前記キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた前記制御レジスタのアドレスを、前記キャッシュ保守またはステータスコマンドに割り当てるステップと、
    前記キャッシュ保守またはステータスコマンドにデータを割り当てるステップと、
    前記キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた前記制御レジスタを、前記データを用いて更新するステップと、
    前記制御レジスタのキャッシュ保守またはステータス動作を前記データに基づいて実施するステップと
    をさらに備える、請求項1に記載の方法。
  4. 前記キャッシュ保守またはステータスコマンドにデータを割り当てるステップが、前記データとしてのキャッシュメモリのメモリ仮想アドレスを前記キャッシュ保守またはステータスコマンドに割り当てるステップを備える、請求項3に記載の方法。
  5. 前記キャッシュ保守またはステータスコマンドの前記データがキャッシュメモリのメモリ仮想アドレスを含むかどうかを判定するステップと、
    前記データが前記キャッシュメモリのメモリ仮想アドレスであるという判定に応答して、前記キャッシュメモリの前記メモリ仮想アドレスを前記キャッシュメモリのメモリ物理アドレスに変換するステップと、
    前記データを前記キャッシュメモリの前記メモリ物理アドレスと置換するステップと
    をさらに備える、請求項3に記載の方法。
  6. 前記キャッシュ保守またはステータスコマンドの前記データが、少なくとも1つのキャッシュセットおよび少なくとも1つのキャッシュウェイを含む、請求項3に記載の方法。
  7. 前記制御レジスタの前記アドレスが、前記制御レジスタの仮想アドレスであり、
    前記方法が、前記制御レジスタの前記仮想アドレスを前記制御レジスタの物理アドレスに変換するステップをさらに備える、
    請求項3に記載の方法。
  8. 前記集中制御エンティティによってコンポーネントキャッシュ構成テーブルを生成するステップと、
    少なくとも1つのコンポーネントキャッシュインジケータを前記集中制御エンティティによって前記マスタに割り当てるステップと、
    少なくとも1つの制御レジスタを前記集中制御エンティティによって前記コンポーネントキャッシュインジケータにマッピングするステップと、
    複数のマスタによって複数の制御レジスタに並行して直接アクセスするステップと
    をさらに備え、
    集中制御エンティティをバイパスして、前記コンポーネントキャッシュに対するキャッシュ保守またはステータスコマンドを前記マスタによって発行するステップが、前記集中制御エンティティをバイパスして、前記複数のマスタによって複数のコンポーネントキャッシュに対する複数のキャッシュ保守またはステータスコマンドを並行して発行するステップを備え、
    前記集中制御エンティティをバイパスして、キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた制御レジスタによって前記キャッシュ保守またはステータスコマンドを受け取るステップが、前記集中制御エンティティをバイパスして、前記複数のキャッシュ保守またはステータスコマンドおよび前記複数のコンポーネントキャッシュに関連付けられた前記複数の制御レジスタによって前記複数のキャッシュ保守またはステータスコマンドを並行して受け取るステップを備える、
    請求項1に記載の方法。
  9. プロセッサと、
    前記プロセッサに通信可能に接続され、データを記憶しかつ取り出すための高速アクセスを提供するように構成されるキャッシュメモリと、
    前記プロセッサ、前記キャッシュメモリ、および複数の制御レジスタに通信可能に接続されたシステムキャッシュコントローラと、
    前記プロセッサおよび前記システムキャッシュコントローラに通信可能に接続される集中制御エンティティと、
    前記システムキャッシュコントローラおよび前記プロセッサに通信可能に接続され、かつ前記キャッシュメモリのコンポーネントキャッシュに対するキャッシュ保守またはステータスコマンドを実施するために前記プロセッサに割り当てられた、制御レジスタと
    を備え、
    前記プロセッサが、前記コンポーネントキャッシュのマスタであるように構成され、かつ
    コンポーネントキャッシュインジケータが前記コンポーネントキャッシュの前記マスタによってアクセス可能であるような、前記コンポーネントキャッシュの前記コンポーネントキャッシュインジケータを記憶することと、
    前記集中制御エンティティをバイパスして、前記コンポーネントキャッシュに対するキャッシュ保守またはステータスコマンドを前記マスタによって発行することと
    を備える動作を実行するためのプロセッサ実行可能命令を用いて構成され、
    前記システムキャッシュコントローラが、前記集中制御エンティティをバイパスして、前記キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた前記制御レジスタに対する前記キャッシュ保守またはステータスコマンドを受け取ることを備える動作を実行するように構成される、
    コンピューティングデバイス。
  10. 前記プロセッサが、コンポーネントキャッシュインジケータが前記コンポーネントキャッシュの前記マスタによってアクセス可能であるような、前記コンポーネントキャッシュの前記コンポーネントキャッシュインジケータを記憶することが、前記コンポーネントキャッシュ用の制御空間の仮想化ビューを前記マスタに提供することを備えるような動作を実行するためのプロセッサ実行可能命令を用いて構成され、
    前記プロセッサが、前記集中制御エンティティをバイパスすることによって、前記コンポーネントキャッシュの機能を前記マスタによって発見することをさらに備える動作を実行するためのプロセッサ実行可能命令を用いて構成される、
    請求項9に記載のコンピューティングデバイス。
  11. 前記プロセッサが、
    前記キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた前記制御レジスタのアドレスを、前記キャッシュ保守またはステータスコマンドに割り当てることと、
    前記キャッシュ保守またはステータスコマンドにデータを割り当てることと
    をさらに備える動作を実行するためのプロセッサ実行可能命令を用いて構成され、
    前記システムキャッシュコントローラが、
    前記キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた前記制御レジスタを、前記データを用いて更新することと、
    前記制御レジスタのキャッシュ保守またはステータス動作を前記データに基づいて実施することと
    をさらに備える動作を実行するように構成される、
    請求項9に記載のコンピューティングデバイス。
  12. 前記プロセッサが、前記キャッシュ保守またはステータスコマンドにデータを割り当てることが、前記データとしてのキャッシュメモリのメモリ仮想アドレスを前記キャッシュ保守またはステータスコマンドに割り当てることを備えるような動作を実行するためのプロセッサ実行可能命令を用いて構成される、請求項11に記載のコンピューティングデバイス。
  13. 前記プロセッサおよび前記システムキャッシュコントローラに結合され、かつ動作を実行するように構成されるメモリ管理ユニットをさらに備え、前記動作が、
    前記キャッシュ保守またはステータスコマンドの前記データが前記システムキャッシュメモリのメモリ仮想アドレスを含むかどうかを判定することと、
    前記データが前記システムキャッシュメモリのメモリ仮想アドレスであるという判定に応答して、前記システムキャッシュメモリの前記メモリ仮想アドレスを前記システムキャッシュメモリのメモリ物理アドレスに変換することと、
    前記データを前記システムキャッシュメモリの前記メモリ物理アドレスと置換することと
    を備える、請求項11に記載のコンピューティングデバイス。
  14. 前記キャッシュ保守またはステータスコマンドの前記データが、少なくとも1つのキャッシュセットおよび少なくとも1つのキャッシュウェイを含む、請求項11に記載のコンピューティングデバイス。
  15. 前記制御レジスタの前記アドレスが、前記制御レジスタの仮想アドレスであり、
    前記システムキャッシュコントローラが、前記制御レジスタの前記仮想アドレスを前記制御レジスタの物理アドレスに変換することをさらに備える動作を実行するように構成される、
    請求項11に記載のコンピューティングデバイス。
  16. 前記集中制御エンティティが、
    コンポーネントキャッシュ構成テーブルを生成することと、
    少なくとも1つのコンポーネントキャッシュインジケータを前記マスタに割り当てることと、
    少なくとも1つの制御レジスタを前記コンポーネントキャッシュインジケータにマッピングすることと
    を備える動作を実行するように構成され、
    前記プロセッサが、別のマスタによる別の制御レジスタのアクセスと並行して、前記制御レジスタに直接アクセスすることをさらに備える動作を実行するためのプロセッサ実行可能命令を用いて構成され、前記プロセッサが、前記集中制御エンティティをバイパスして、前記コンポーネントキャッシュに対するキャッシュ保守またはステータスコマンドを前記マスタによって発行することが、別のマスタによる別のコンポーネントキャッシュに対する別のキャッシュ保守またはステータスコマンドを発行するのと並行して、前記コンポーネントキャッシュに対する前記キャッシュ保守またはステータスコマンドを発行することを備えるような動作を実行するためのプロセッサ実行可能命令を用いて構成され、
    前記システムキャッシュコントローラが、前記別のマスタによる前記別の制御レジスタのアクセスと並行して、前記制御レジスタへの直接アクセスを許可することをさらに備える動作を実行するように構成され、前記システムキャッシュコントローラが、前記集中制御エンティティをバイパスして、前記キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた前記制御レジスタに対する前記キャッシュ保守またはステータスコマンドを受け取ることが、前記別のキャッシュ保守またはステータスコマンドおよび前記別のコンポーネントキャッシュに関連付けられた前記別の制御レジスタに対する前記別のキャッシュ保守またはステータスコマンドを受け取るのと並行して、前記制御レジスタに対する前記キャッシュ保守またはステータスコマンドを受け取ることを備えるような動作を実行するように構成される、
    請求項9に記載のコンピューティングデバイス。
  17. コンポーネントキャッシュインジケータがコンポーネントキャッシュのマスタによってアクセス可能であるような、前記コンポーネントキャッシュの前記コンポーネントキャッシュインジケータを記憶するための手段と、
    集中制御エンティティをバイパスして、前記コンポーネントキャッシュに対するキャッシュ保守またはステータスコマンドを前記マスタによって発行するための手段と、
    前記集中制御エンティティをバイパスして、キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた制御レジスタに対する前記キャッシュ保守またはステータスコマンドを受け取るための手段と
    を備える、コンピューティングデバイス。
  18. コンポーネントキャッシュインジケータがコンポーネントキャッシュのマスタによってアクセス可能であるような、前記コンポーネントキャッシュの前記コンポーネントキャッシュインジケータを記憶するための手段が、前記コンポーネントキャッシュ用の制御空間の仮想化ビューを前記マスタに提供するための手段を備え、
    前記コンピューティングデバイスが、前記集中制御エンティティをバイパスすることによって、前記コンポーネントキャッシュの機能をマスタによって発見するための手段をさらに備える、
    請求項17に記載のコンピューティングデバイス。
  19. 前記キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた前記制御レジスタのアドレスを、前記キャッシュ保守またはステータスコマンドに割り当てるための手段と、
    前記キャッシュ保守またはステータスコマンドにデータを割り当てるための手段と、
    前記キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた前記制御レジスタを、前記データを用いて更新するための手段と、
    前記制御レジスタのキャッシュ保守またはステータス動作を前記データに基づいて実施するための手段と
    をさらに備える、請求項17に記載のコンピューティングデバイス。
  20. 前記キャッシュ保守またはステータスコマンドにデータを割り当てるための手段が、前記データとしてのキャッシュメモリのメモリ仮想アドレスを前記キャッシュ保守またはステータスコマンドに割り当てるための手段を備える、請求項19に記載のコンピューティングデバイス。
  21. 前記キャッシュ保守またはステータスコマンドの前記データがキャッシュメモリのメモリ仮想アドレスを含むかどうかを判定するための手段と、
    前記データが前記キャッシュメモリのメモリ仮想アドレスであるという判定に応答して、前記キャッシュメモリの前記メモリ仮想アドレスを前記キャッシュメモリのメモリ物理アドレスに変換するための手段と、
    前記データを前記キャッシュメモリの前記メモリ物理アドレスと置換するための手段と
    をさらに備える、請求項19に記載のコンピューティングデバイス。
  22. 前記制御レジスタの前記アドレスが、前記制御レジスタの仮想アドレスであり、前記コンピューティングデバイスが、前記制御レジスタの前記仮想アドレスを前記制御レジスタの物理アドレスに変換するための手段をさらに備える、請求項19に記載のコンピューティングデバイス。
  23. 前記集中制御エンティティによってコンポーネントキャッシュ構成テーブルを生成するための手段と、
    少なくとも1つのコンポーネントキャッシュインジケータを前記集中制御エンティティによって前記マスタに割り当てるための手段と、
    少なくとも1つの制御レジスタを前記集中制御エンティティによって前記コンポーネントキャッシュインジケータにマッピングするための手段と、
    複数のマスタによって複数の制御レジスタに並行して直接アクセスするための手段とをさらに備え、
    集中制御エンティティをバイパスして、前記コンポーネントキャッシュに対するキャッシュ保守またはステータスコマンドを前記マスタによって発行するための手段が、前記集中制御エンティティをバイパスして、前記複数のマスタによって複数のコンポーネントキャッシュに対する複数のキャッシュ保守またはステータスコマンドを並行して発行するための手段を備え、
    前記集中制御エンティティをバイパスして、キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた制御レジスタに対する前記キャッシュ保守またはステータスコマンドを受け取るための手段が、前記集中制御エンティティをバイパスして、前記複数のキャッシュ保守またはステータスコマンドおよび前記複数のコンポーネントキャッシュに関連付けられた前記複数の制御レジスタに対する前記複数のキャッシュ保守またはステータスコマンドを並行して受け取るための手段を備える、
    請求項17に記載のコンピューティングデバイス。
  24. プロセッサ実行可能ソフトウェア命令を記憶した非一時的プロセッサ可読記録媒体であって、
    コンポーネントキャッシュインジケータがコンポーネントキャッシュのマスタによってアクセス可能であるような、前記コンポーネントキャッシュの前記コンポーネントキャッシュインジケータを記憶することと、
    集中制御エンティティをバイパスして、前記コンポーネントキャッシュに対するキャッシュ保守またはステータスコマンドを前記マスタによって発行することと、
    前記集中制御エンティティをバイパスして、キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた制御レジスタによって前記キャッシュ保守またはステータスコマンドを受け取ることと
    を備える動作をプロセッサに実行させるように構成される、非一時的プロセッサ可読記録媒体。
  25. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、コンポーネントキャッシュインジケータがコンポーネントキャッシュのマスタによってアクセス可能であるような、前記コンポーネントキャッシュの前記コンポーネントキャッシュインジケータを記憶することが、前記コンポーネントキャッシュ用の制御空間の仮想化ビューを前記マスタに提供することを備えるような動作をプロセッサに実行させるように構成され、
    前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記集中制御エンティティをバイパスすることによって、前記コンポーネントキャッシュの機能をマスタによって発見することをさらに備える動作をプロセッサに実行させるように構成される、
    請求項24に記載の非一時的プロセッサ可読記録媒体。
  26. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、
    前記キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた前記制御レジスタのアドレスを、前記キャッシュ保守またはステータスコマンドに割り当てることと、
    前記キャッシュ保守またはステータスコマンドにデータを割り当てることと、
    前記キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた前記制御レジスタを、前記データを用いて更新することと、
    前記制御レジスタのキャッシュ保守またはステータス動作を前記データに基づいて実施することと
    をさらに備える動作をプロセッサに実行させるように構成される、請求項24に記載の非一時的プロセッサ可読記録媒体。
  27. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記キャッシュ保守またはステータスコマンドにデータを割り当てることが、前記データとしてのキャッシュメモリのメモリ仮想アドレスを前記キャッシュ保守またはステータスコマンドに割り当てることを備えるような動作をプロセッサに実行させるように構成される、請求項26に記載の非一時的プロセッサ可読記録媒体。
  28. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、
    前記キャッシュ保守またはステータスコマンドの前記データがキャッシュメモリのメモリ仮想アドレスを含むかどうかを判定することと、
    前記データが前記キャッシュメモリのメモリ仮想アドレスであるという判定に応答して、前記キャッシュメモリの前記メモリ仮想アドレスを前記キャッシュメモリのメモリ物理アドレスに変換することと、
    前記データを前記キャッシュメモリの前記メモリ物理アドレスと置換することと
    をさらに備える動作をプロセッサに実行させるように構成される、請求項26に記載の非一時的プロセッサ可読記録媒体。
  29. 前記制御レジスタの前記アドレスが、前記制御レジスタの仮想アドレスであり、
    前記記憶されたプロセッサ実行可能ソフトウェア命令が、前記制御レジスタの前記仮想アドレスを前記制御レジスタの物理アドレスに変換することをさらに備える動作をプロセッサに実行させるように構成される、
    請求項26に記載の非一時的プロセッサ可読記録媒体。
  30. 前記記憶されたプロセッサ実行可能ソフトウェア命令が、
    前記集中制御エンティティによってコンポーネントキャッシュ構成テーブルを生成することと、
    少なくとも1つのコンポーネントキャッシュインジケータを前記集中制御エンティティによって前記マスタに割り当てることと、
    少なくとも1つの制御レジスタを前記集中制御エンティティによって前記コンポーネントキャッシュインジケータにマッピングすることと、
    複数のマスタによって複数の制御レジスタに並行して直接アクセスすることと
    をさらに備える動作をプロセッサに実行させるように構成され、
    前記集中制御エンティティをバイパスして、前記コンポーネントキャッシュに対するキャッシュ保守またはステータスコマンドを前記マスタによって発行することが、前記集中制御エンティティをバイパスして、前記複数のマスタによって複数のコンポーネントキャッシュに対する複数のキャッシュ保守またはステータスコマンドを並行して発行することを備え、
    前記集中制御エンティティをバイパスして、キャッシュ保守またはステータスコマンドおよび前記コンポーネントキャッシュに関連付けられた制御レジスタによって前記キャッシュ保守またはステータスコマンドを受け取ることが、前記集中制御エンティティをバイパスして、前記複数のキャッシュ保守またはステータスコマンドおよび前記複数のコンポーネントキャッシュに関連付けられた前記複数の制御レジスタによって前記複数のキャッシュ保守またはステータスコマンドを並行して受け取ることを備える、
    請求項24に記載の非一時的プロセッサ可読記録媒体。
JP2017558413A 2015-05-13 2016-04-13 共有システムキャッシュの仮想化制御のための方法および装置 Pending JP2018521385A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/710,693 US10180908B2 (en) 2015-05-13 2015-05-13 Method and apparatus for virtualized control of a shared system cache
US14/710,693 2015-05-13
PCT/US2016/027270 WO2016182664A1 (en) 2015-05-13 2016-04-13 Method and apparatus for virtualized control of a shared system cache

Publications (1)

Publication Number Publication Date
JP2018521385A true JP2018521385A (ja) 2018-08-02

Family

ID=55754487

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017558413A Pending JP2018521385A (ja) 2015-05-13 2016-04-13 共有システムキャッシュの仮想化制御のための方法および装置

Country Status (5)

Country Link
US (1) US10180908B2 (ja)
EP (1) EP3295315B1 (ja)
JP (1) JP2018521385A (ja)
CN (1) CN107636625B (ja)
WO (1) WO2016182664A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11855831B1 (en) 2022-06-10 2023-12-26 T-Mobile Usa, Inc. Enabling an operator to resolve an issue associated with a 5G wireless telecommunication network using AR glasses

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10901738B2 (en) 2017-11-14 2021-01-26 International Business Machines Corporation Bulk store and load operations of configuration state registers
US10635602B2 (en) * 2017-11-14 2020-04-28 International Business Machines Corporation Address translation prior to receiving a storage reference using the address to be translated
US10761751B2 (en) 2017-11-14 2020-09-01 International Business Machines Corporation Configuration state registers grouped based on functional affinity
US10642757B2 (en) 2017-11-14 2020-05-05 International Business Machines Corporation Single call to perform pin and unpin operations
US10558366B2 (en) 2017-11-14 2020-02-11 International Business Machines Corporation Automatic pinning of units of memory
US10496437B2 (en) 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US10761983B2 (en) * 2017-11-14 2020-09-01 International Business Machines Corporation Memory based configuration state registers
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US10552070B2 (en) * 2017-11-14 2020-02-04 International Business Machines Corporation Separation of memory-based configuration state registers based on groups
US10664181B2 (en) 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers
US10698686B2 (en) * 2017-11-14 2020-06-30 International Business Machines Corporation Configurable architectural placement control
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US10698853B1 (en) * 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US10884959B2 (en) * 2019-02-13 2021-01-05 Google Llc Way partitioning for a system-level cache
CN112840327A (zh) * 2019-02-21 2021-05-25 华为技术有限公司 一种片上系统、访问命令的路由方法及终端
US10802750B2 (en) * 2019-02-28 2020-10-13 Silicon Motion Inc. Universal flash storage memory module, controller and electronic device with advanced turbo write buffer and method for operating the memory module
US11010165B2 (en) 2019-03-12 2021-05-18 Marvell Asia Pte, Ltd. Buffer allocation with memory-based configuration
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US11093405B1 (en) 2019-05-29 2021-08-17 Marvell Asia Pte, Ltd. Shared mid-level data cache
US11327890B1 (en) * 2019-05-29 2022-05-10 Marvell Asia Pte, Ltd. Partitioning in a processor cache
US11036643B1 (en) 2019-05-29 2021-06-15 Marvell Asia Pte, Ltd. Mid-level instruction cache
US11513958B1 (en) 2019-05-29 2022-11-29 Marvell Asia Pte, Ltd. Shared mid-level data cache
US11379368B1 (en) 2019-12-05 2022-07-05 Marvell Asia Pte, Ltd. External way allocation circuitry for processor cores
CN112131011B (zh) * 2020-11-26 2021-02-26 北京壁仞科技开发有限公司 用于管理资源的方法、计算设备和计算机可读存储介质
US11487694B1 (en) 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05324468A (ja) 1992-05-21 1993-12-07 Fujitsu Ltd 階層化キャッシュメモリ
US5434992A (en) 1992-09-04 1995-07-18 International Business Machines Corporation Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace
US5479627A (en) 1993-09-08 1995-12-26 Sun Microsystems, Inc. Virtual address to physical address translation cache that supports multiple page sizes
US5555430A (en) * 1994-05-31 1996-09-10 Advanced Micro Devices Interrupt control architecture for symmetrical multiprocessing system
US5781926A (en) 1996-05-20 1998-07-14 Integrated Device Technology, Inc. Method and apparatus for sub cache line access and storage allowing access to sub cache lines before completion of line fill
US6738870B2 (en) * 2000-12-22 2004-05-18 International Business Machines Corporation High speed remote storage controller
JP3900025B2 (ja) * 2002-06-24 2007-04-04 日本電気株式会社 共有キャッシュメモリのヒット判定制御方法及び共有キャッシュメモリのヒット判定制御方式
US7107382B2 (en) 2003-04-03 2006-09-12 Emulex Design & Manufacturing Corporation Virtual peripheral component interconnect multiple-function device
US7558920B2 (en) 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7613898B2 (en) 2006-01-17 2009-11-03 Globalfoundries Inc. Virtualizing an IOMMU
GB0603552D0 (en) * 2006-02-22 2006-04-05 Advanced Risc Mach Ltd Cache management within a data processing apparatus
US20070239661A1 (en) 2006-03-28 2007-10-11 Sun Microsystems, Inc. Systems and methods for a distributed in-memory database and distributed cache
US7685401B2 (en) 2006-12-27 2010-03-23 Intel Corporation Guest to host address translation for devices to access memory in a partitioned system
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US8365184B2 (en) * 2007-08-31 2013-01-29 Apple Inc. Multi-core resource utilization planning
US7934046B2 (en) 2008-07-02 2011-04-26 International Business Machines Corporation Access table lookup for bus bridge
US20100115233A1 (en) 2008-10-31 2010-05-06 Convey Computer Dynamically-selectable vector register partitioning
US8688910B2 (en) * 2009-02-06 2014-04-01 Freescale Semiconductor, Inc. Debug control for snoop operations in a multiprocessor system and method thereof
JP2010244435A (ja) * 2009-04-08 2010-10-28 Panasonic Corp キャッシュ制御装置及びキャッシュ制御方法
US8745618B2 (en) 2009-08-25 2014-06-03 International Business Machines Corporation Cache partitioning with a partition table to effect allocation of ways and rows of the cache to virtual machine in virtualized environments
US8533399B2 (en) 2010-01-15 2013-09-10 International Business Machines Corporation Cache directory look-up re-use as conflict check mechanism for speculative memory requests
US8386749B2 (en) 2010-03-16 2013-02-26 Advanced Micro Devices, Inc. Address mapping in virtualized processing system
US8510493B2 (en) * 2010-12-27 2013-08-13 Lsi Corporation Circuit to efficiently handle data movement within a cache controller or on-chip memory peripheral
US8813085B2 (en) 2011-07-19 2014-08-19 Elwha Llc Scheduling threads based on priority utilizing entitlement vectors, weight and usage level
US8935457B2 (en) * 2011-07-29 2015-01-13 International Business Machines Corporation Network filtering in a virtualized environment
US20130179642A1 (en) * 2012-01-10 2013-07-11 Qualcomm Incorporated Non-Allocating Memory Access with Physical Address
US9213644B2 (en) * 2013-03-07 2015-12-15 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Allocating enclosure cache in a computing system
US9697130B2 (en) * 2014-06-25 2017-07-04 Sandisk Technologies Llc Systems and methods for storage service automation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11855831B1 (en) 2022-06-10 2023-12-26 T-Mobile Usa, Inc. Enabling an operator to resolve an issue associated with a 5G wireless telecommunication network using AR glasses

Also Published As

Publication number Publication date
US20160335190A1 (en) 2016-11-17
CN107636625B (zh) 2021-04-20
CN107636625A (zh) 2018-01-26
EP3295315A1 (en) 2018-03-21
US10180908B2 (en) 2019-01-15
EP3295315B1 (en) 2018-11-07
WO2016182664A1 (en) 2016-11-17

Similar Documents

Publication Publication Date Title
CN107636625B (zh) 用于共享系统高速缓存的虚拟化控制的方法和装置
US10089238B2 (en) Method and apparatus for a shared cache with dynamic partitioning
US9612970B2 (en) Method and apparatus for flexible cache partitioning by sets and ways into component caches
US9864681B2 (en) Dynamic multithreaded cache allocation
US11341059B2 (en) Using multiple memory elements in an input-output memory management unit for performing virtual address to physical address translations
TWI752620B (zh) 與記憶體類型相關的頁表
KR102051698B1 (ko) 단일 페이지 테이블 엔트리 내의 속성 필드들의 다중 세트들
US20140089600A1 (en) System cache with data pending state
US11836087B2 (en) Per-process re-configurable caches
CN110597742A (zh) 用于具有持久系统存储器的计算机系统的改进存储模型
JP2019525327A (ja) キャッシュエントリでメモリアクセス要求のペンデンシを識別するシステム及び方法
US10725675B2 (en) Management apparatus, information processing apparatus, management method, and computer program product
US11714753B2 (en) Methods and nodes for handling memory
JP2019164411A (ja) 管理装置、情報処理装置、管理方法、およびプログラム