JP6355853B2 - マルチクラスタ異種プロセッサアーキテクチャにおいて動的キャッシュ拡張を提供するためのシステムおよび方法 - Google Patents

マルチクラスタ異種プロセッサアーキテクチャにおいて動的キャッシュ拡張を提供するためのシステムおよび方法 Download PDF

Info

Publication number
JP6355853B2
JP6355853B2 JP2017535789A JP2017535789A JP6355853B2 JP 6355853 B2 JP6355853 B2 JP 6355853B2 JP 2017535789 A JP2017535789 A JP 2017535789A JP 2017535789 A JP2017535789 A JP 2017535789A JP 6355853 B2 JP6355853 B2 JP 6355853B2
Authority
JP
Japan
Prior art keywords
cache
processor
cluster
workload
processor cluster
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.)
Active
Application number
JP2017535789A
Other languages
English (en)
Other versions
JP2018505476A (ja
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 JP2018505476A publication Critical patent/JP2018505476A/ja
Application granted granted Critical
Publication of JP6355853B2 publication Critical patent/JP6355853B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/1016Performance improvement
    • G06F2212/1021Hit rate 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/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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/601Reconfiguration of cache memory
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

マルチクラスタ異種プロセッサアーキテクチャにおいて動的キャッシュ拡張を提供するためのシステムおよび方法に関する。
ポータブルコンピューティングデバイス(たとえば、セルラー電話、スマートフォン、タブレットコンピュータ、携帯情報端末(PDA)、およびポータブルゲームコンソール)は、ますます拡大する数々の機能およびサービスを提供し続けており、ユーザが情報、リソース、および通信にかつてないレベルでアクセスできるようにしている。これらのサービス拡張とペースを合わせるために、そのようなデバイスは、より強力、かつより複雑になってきた。ここで、ポータブルコンピューティングデバイスには、一般に、単一の基板上に組み込まれた1つまたは複数のチップ構成要素(たとえば、1つまたは複数の中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサなど)を含む、システムオンチップ(SoC)が含まれる。
そのようなポータブルコンピューティングデバイスまたは他のコンピュータシステムもしくはデバイスは、マルチクラスタ異種プロセッサアーキテクチャを備えることができ、その一例は、「big.LITTLE」異種アーキテクチャと呼ばれる。「big.LITTLE」および他の異種アーキテクチャは通常、比較的遅い低電力のプロセッサコアのセットが比較的より強力なプロセッサコアのセットと結合される、プロセッサコアのグループを備える。たとえば、より高性能の能力を有するプロセッサまたはプロセッサコアのセットは、しばしば、「Bigクラスタ」と呼ばれ、最小電力消費量を有するが、適切な性能(ただし、Bigクラスタの性能よりも比較的劣る)を提供することが可能であるプロセッサまたはプロセッサコアのその他のセットは、「Littleクラスタ」と呼ばれる。キャッシュコントローラは、様々な使用事例に基づいて変化することがある性能および/または電力要件に従って、BigクラスタまたはLittleクラスタによって実行されるべきタスクをスケジュールすることができる。Bigクラスタは、より高い性能が望ましい状況(たとえば、グラフィックス、ゲームなど)に使用され得、Littleクラスタは、比較的低電力の使用事例(たとえば、テキストアプリケーション)に使用され得る。
しかしながら、既存のマルチクラスタ異種プロセッサアーキテクチャは、いくつかの使用事例では、性能/電力を効果的に最適化しないことがある。たとえば、メモリアクセスは広いがCPU作業負荷は比較的軽い使用事例は、望ましくないレベル2(L2)キャッシュミスを受けることがある。既存のアーキテクチャは、実行レイテンシのせいで、このタイプの使用事例/作業負荷を比較的重いCPU作業負荷と解釈することがある。その結果、タスクがBigクラスタに移行した場合、システムは電力ペナルティを受けることがある。代替的に、タスクがLittleクラスタ上で実行されたままである場合、性能が悪化することがある。さらに、スケジューラがより小さいサイズのL2キャッシュを有するLittleクラスタからより大きいL2キャッシュを有するBigクラスタにタスクを移行した場合、システムは過度の電力を消費することがある。スケジューラがより小さいサイズのL2キャッシュを有するLittleクラスタにおいてタスクを維持する場合、このことは低い性能および望ましくないユーザエクスペリエンスをもたらすことがある。
したがって、当技術分野では、最適化された性能および電力消費量でマルチクラスタ異種プロセッサアーキテクチャにおいてタスクをスケジュールおよび管理するためのシステムおよび方法が必要とされている。
ポータブルコンピューティングデバイス内のマルチクラスタ異種プロセッサアーキテクチャにおいて動的キャッシュ拡張を提供するための方法、システム、およびコンピュータプログラムの様々な実施形態が開示される。1つのそのような方法は、第1のプロセッサクラスタと、関連する第2のキャッシュを有する第2のプロセッサクラスタとを備えるマルチクラスタ異種プロセッサアーキテクチャにおいて、第1のプロセッサクラスタおよび関連する第1のキャッシュについてのプロセッサ作業負荷入力およびキャッシュ作業負荷入力を受け取るステップを伴う。プロセッサ作業負荷入力およびキャッシュ作業負荷入力に基づいて、第1のプロセッサクラスタに関連付けられた現在のタスクが、第1のキャッシュのサイズしきい値によって制限されるか、または第1のプロセッサクラスタの性能しきい値によって制限されるかが決定される。現在のタスクが、第1のキャッシュのサイズしきい値によって制限される場合、第2のプロセッサクラスタに関連付けられた第2のキャッシュの少なくとも一部分が、第1のキャッシュの拡張として使用され得る。
別の実施形態は、動的キャッシュ拡張を提供するためのマルチクラスタ異種プロセッサアーキテクチャを有するシステムである。システムは、第1のレベル2(L2)キャッシュを備える第1のプロセッサクラスタと、第2のL2キャッシュを備える第2のプロセッサクラスタとを備える。第1のL2キャッシュおよび第2のL2キャッシュと通信しているキャッシュコントローラは、第1のプロセッサクラスタからプロセッサ作業負荷入力およびキャッシュ作業負荷入力を受け取るように構成される。プロセッサ作業負荷入力およびキャッシュ作業負荷入力に基づいて、キャッシュコントローラは、第1のプロセッサクラスタに関連付けられた現在のタスクが、第1のL2キャッシュのサイズしきい値によって制限されるか、または第1のプロセッサクラスタの性能しきい値によって制限されるかを決定し得る。現在のタスクが、第1のL2キャッシュのサイズしきい値によって制限される場合、キャッシュコントローラは、第2のプロセッサクラスタに関連付けられた第2のL2キャッシュの少なくとも一部分を第1のL2キャッシュの拡張として使用し得る。
図において、別段に示されない限り、様々な図の全体を通して、同様の参照番号は同様の部分を指す。「102A」または「102B」などの文字指定を伴う参照番号の場合、文字指定は、同じ図に存在する2つの同様の部分または要素を区別することができる。参照番号がすべての図において同じ参照番号を有するすべての部分を包含することを意図するとき、参照番号に対する文字指定は省略される場合がある。
動的キャッシュ拡張およびプロセッサクラスタ間の動的キャッシュ再割振りを提供するためのキャッシュスケジューラを含むマルチクラスタ異種プロセッサアーキテクチャを備えるシステムの一実施形態のブロック図である。 図1のシステム内のキャッシュスケジューラの一実施形態のデータ入力およびデータ出力を示すブロック図である。 図2のキャッシュスケジューラの例示的なデータ入力および得られたデータ出力を示すデータテーブルである。 動的キャッシュ拡張および動的キャッシュ再割振りを提供するためのキャッシュスケジューラによって実装される方法の一実施形態を示すフローチャートである。 動的キャッシュ拡張を実装するための図1のシステムの一実施形態を示す機能ブロック図である。 あるプロセッサクラスタのL2キャッシュが別のプロセッサクラスタのL2キャッシュの一部分を追加のL2キャッシュとして使用することによって拡張される、図5aのシステムを示す図である。 あるプロセッサクラスタのL2キャッシュが別のプロセッサクラスタのL2キャッシュの一部分をL3キャッシュとして使用することによって拡張される、図5aのシステムを示す図である。 動的キャッシュ拡張を実装するための物理-論理キャッシュマッピングを示すブロック図である。 図6の物理-論理マッピングを実装するためのキャッシュコントローラによって管理されるルックアップテーブルの一実施形態を示す図である。 動的キャッシュ再割振りを実装するための図1のシステムの一実施形態を示す機能ブロック図である。 タスクがあるプロセッサクラスタから別のプロセッサクラスタに再割振りされる、図8aのシステムを示す図である。 スヌープヒットカウンタに基づいて、タスクが別のプロセッサクラスタ内の移行先L2キャッシュに移行された後に移行元L2キャッシュを省電力状態にさせるための図1のシステムの別の実施形態を示す図である。 例示的なポータブルコンピューティングデバイス(PCD)に組み込まれた、図1〜図9のシステムおよび方法を示す図である。
「例示的」という言葉は、本明細書では、「例、事例、または例示として機能する」ことを意味するために使用される。「例示的」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきではない。
本明細書では、「アプリケーション」または「イメージ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの、実行可能なコンテンツを有するファイルを含む場合もある。加えて、本明細書で言及する「アプリケーション」は、開かれることが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルを含む場合もある。
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなどの、実行可能なコンテンツを有するファイルを含む場合もある。加えて、本明細書で言及する「コンテンツ」は、開かれることが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルを含む場合もある。
本明細書で使用する「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであるコンピュータ関連エンティティを指すものとする。たとえば、構成要素は、限定はしないが、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、プログラム、および/またはコンピュータであってもよい。例として、コンピューティングデバイス上で実行されるアプリケーションとコンピューティングデバイスの両方が構成要素であってもよい。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に存在してもよく、構成要素は、1つのコンピュータ上に局在化されてもよく、および/または2つ以上のコンピュータ間で分散されてもよい。加えて、これらの構成要素は、様々なデータ構造が記憶された様々なコンピュータ可読媒体から実行されてもよい。構成要素は、1つまたは複数のデータパケット(たとえば、ローカルシステム、分散システム内の別の構成要素と対話し、および/または、信号によってインターネットなどのネットワークを介して他のシステムと対話する、ある構成要素からのデータ)を有する信号などに従って、ローカルプロセスおよび/またはリモートプロセスによって通信してもよい。
図1は、マルチクラスタ異種プロセッサアーキテクチャを備えるシステム100の一実施形態のブロック図である。システム100は、パーソナルコンピュータと、ワークステーションと、サーバと、セルラー電話、携帯情報端末(PDA)、ポータブルゲームコンソール、パームトップコンピュータ、またはタブレットコンピュータなどのポータブルコンピューティングデバイス(PCD)とを含む、任意のコンピューティングデバイスにおいて実装され得る。マルチクラスタ異種プロセッサアーキテクチャは、キャッシュコントローラ101に結合された複数のプロセッサクラスタを備える。当技術分野で知られているように、各プロセッサクラスタは、対応する専用キャッシュを有する、1つまたは複数のプロセッサまたはプロセッサコア(たとえば、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、デジタル信号プロセッサ(DSP)など)を備え得る。
図1の実施形態では、プロセッサクラスタ102および104は、上記で説明したように、プロセッサクラスタ102がLittleクラスタを備え、プロセッサクラスタ104がBigクラスタを備える「big.LITTLE」異種アーキテクチャを備え得る。Littleプロセッサクラスタ102は、複数の中央処理ユニット(CPU)コア108および110を備え、CPUコア108および110は、Bigプロセッサクラスタ104内のCPUコア114および116よりも比較的遅く、消費する電力が少ない。BigクラスタCPUコア114および116は、たとえば、比較的高いサイクル当たりの命令(IPC:instructions per cycle)、より高い動作周波数、および/または、追加の電力を犠牲にするが比較的高い性能を可能にするマイクロアーキテクチャ機能を有することによって、LittleクラスタCPUコア108および110と区別され得ることを諒解されたい。さらに、たとえば、GPUコア120および122を備えるプロセッサクラスタ106などの追加のプロセッサクラスタが、システム100に含まれ得る。
プロセッサクラスタ102、104、および106は、メインメモリ144からデータにアクセスする平均時間を低減するために、システム100内の対応するプロセッサによって使用される独立キャッシュメモリを有し得る。一実施形態では、独立キャッシュメモリおよびメインメモリ144は、キャッシュレベルの階層(たとえば、レベル1(L1)、レベル2(L2)、レベル3(L3))として編成され得る。プロセッサクラスタ102はL2キャッシュ112を備え得、プロセッサクラスタ104はL2キャッシュ118を備え得、プロセッサクラスタ106はL2キャッシュ124を備え得る。
図1に示すように、キャッシュコントローラ101は、キャッシュスケジューラ140と、キャッシュ相互接続111と、L2キャッシュ112、118、および124の性能をそれぞれ監視するための複数のキャッシュモニタ126、128、および130とを備え得る。キャッシュ相互接続111は、メインメモリ144とL2キャッシュ112、118、および124との間のコヒーレンシを維持するための関連するロジックを有する相互接続またはバスを備える。以下でより詳細に説明するように、キャッシュスケジューラ140は一般に、プロセッサおよびキャッシュ性能を監視し、任意選択で、システム100の電力および性能要件に従ってプロセッサクラスタ102、104、および106に対するタスクスケジューリングを管理するように構成されたロジックを備える。
図2は、キャッシュスケジューラ140の一実施形態のデータ入力およびデータ出力を示すブロック図である。キャッシュスケジューラ140は、データ入力として、各プロセッサクラスタから、プロセッサ使用入力データ202およびL2キャッシュ使用/ミス率入力データ204を受け取ることができる。プロセッサ使用入力データ202は、プロセッサクラスタ102、104、および106から受け取られた以下のパラメータまたは他のパラメータ、すなわち、サイクル当たりの命令(IPC)、100万命令毎秒(MIPS)、周波数、CPUアクティブ持続時間割合のうちの1つまたは複数に基づいて、プロセッサ作業負荷を示し得ることを諒解されたい。L2キャッシュ入力データ204は、キャッシュモニタ126、128、および130を介して受け取られた以下のパラメータまたは他のパラメータ、すなわち、1000命令当たりのキャッシュミス(MPKI:misses per 1000 instructions)、1000命令当たりのキャッシュアクセス(APKI:accesses per 1000 instructions)、L2キャッシュミス率(MPKI/APKI)、キャッシュミスによるCPUストール時間/比またはストールクロック、およびキャッシュミスによるCPUストールの量を示す100万サイクル毎秒(MCPS:million cycles per second)のうちの1つまたは複数に基づいて、L2キャッシュ作業負荷または性能を示し得る。
入力データ202および204に基づいて、キャッシュスケジューラ140は、処理ボトルネックまたは他のシステム制限が(1)プロセッサ/CPU性能によって引き起こされている(または引き起こされることになる)か、または(2)L2キャッシュのサイズによって引き起こされている(または引き起こされることになる)かを決定する。たとえば、キャッシュスケジューラ140は、Littleプロセッサクラスタ102に関連付けられた現在のタスクがCPU性能によって制限されると決定し得る。プロセッサ使用入力データ202は、CPU作業負荷がLittleプロセッサクラスタ102によって望ましく取り扱われ得るよりも多いことを示し得る。応答して、キャッシュスケジューラ140(たとえば、動的キャッシュ再割振りモジュール152)は、Littleプロセッサクラスタ102からBigプロセッサクラスタ104にタスクを移行するためのタスク移行モード208を開始し得、ここで、このモードは、CPU108またはCPU110を介して利用可能な性能よりも多い望ましい性能を用いて、CPU114またはCPU116によって実行され得る。代替的に、キャッシュスケジューラ140は、Littleプロセッサクラスタ102に関連付けられた現在のタスクがL2キャッシュ112のサイズによって制限されると決定し得る。入力データ204は、(CPU性能ではなく)L2キャッシュ112のサイズが制限であることを示し得る。応答して、キャッシュスケジューラ140(たとえば、動的キャッシュ拡張モジュール150)は、Littleプロセッサクラスタ102を介して、ただし(Bigプロセッサクラスタ104内の)L2キャッシュ118の一部分を拡張L2キャッシュまたはL3キャッシュとして使用することによってタスクを処理するためのキャッシュ拡張モード206を開始し得る。現在のタスクに性能問題がない場合、キャッシュスケジューラ140は、Littleプロセッサクラスタ102のL2キャッシュ112を用いて現在のタスクを維持するためのデフォルト分割L2モード210を開始し得る。
図3に示すように、キャッシュスケジューラ140は、キャッシュ拡張モード206を開始すべきか、タスク移行モード208を開始すべきか、またはデフォルト分割L2モード210を開始すべきかを決定するためのテーブル300にアクセスし、それを管理し得る。テーブル300は、キャッシュサイズしきい値(しきい値2)および性能しきい値(しきい値1)を定義し得る。データ入力202および204に基づいて、キャッシュスケジューラ140は4つの例示的なシナリオを決定し得る。シナリオ4では、Littleプロセッサクラスタ102がしきい値1を超えないCPU使用割合を有するが、L2キャッシュ使用/ミス率がしきい値2を超えるとき、キャッシュスケジューラ140はキャッシュ拡張モード206を開始し得る。シナリオ3では、L2キャッシュ使用/ミス率にかかわらず、Littleプロセッサクラスタ102がしきい値1を超えるCPU使用割合を有するとき、キャッシュスケジューラ140は、タスク移行モード208を開始し得る。シナリオ2では、Littleプロセッサクラスタ102がしきい値1を超えないCPU使用割合を有し、L2キャッシュ使用/ミス率がしきい値2を超えないとき、キャッシュスケジューラ140は、デフォルト分割L2モード210を開始し得る。シナリオ1は、Bigプロセッサクラスタ104がタスクをアクティブに取り扱っており、システム100がBigプロセッサクラスタ104のためにデフォルト分割L2モード210で動作する状況を指す。
図4は、キャッシュスケジューラ140によって実装される方法400の一実施形態を示すフローチャートである。ブロック402において、キャッシュスケジューラ140は、Littleプロセッサクラスタ102および関連するL2キャッシュ112についてのプロセッサ作業負荷入力およびキャッシュ作業負荷入力を受け取る。プロセッサ作業負荷入力およびキャッシュ作業負荷入力は、上述のパラメータ(入力202および204 - 図2)のうちのいずれかを含み得る。ブロック404において、キャッシュスケジューラ140は、Littleプロセッサクラスタ102に関連付けられた現在のタスクが、L2キャッシュ112のサイズしきい値によって制限されるか、またはCPU108もしくはCPU110の性能しきい値によって制限されるかを決定する。性能しきい値およびサイズしきい値は、図3のテーブル300と同様の方法で定義され得る。プログラムで、またはそれ以外で、しきい値が定義され得ることを諒解されたい。現在のタスクがL2キャッシュ112のサイズしきい値によって制限されることをキャッシュスケジューラ140が決定する場合(決定ブロック406)、キャッシュスケジューラ140は、Bigプロセッサクラスタ104に関連付けられたL2キャッシュ118の少なくとも一部分をL2キャッシュ112の拡張として使用し得る(ブロック408)。
図5a〜図5cは、L2キャッシュ112を動的に拡張するための2つの例示的な実施形態を概略形式で示す。図5aに示すように、現在のタスクは、Littleプロセッサクラスタ102内のCPU108に関連付けられ得る。CPU108およびL2キャッシュ112は、灰色のボックスとして強調表示されている。図5bでは、L2キャッシュ118(Bigプロセッサクラスタ104)の一部分502は、L2キャッシュ112(Littleプロセッサクラスタ102)のための拡張L2キャッシュとして割り振られ得る。図5cは、L2キャッシュ118(Bigプロセッサクラスタ104)の一部分504がL2キャッシュ112(Littleプロセッサクラスタ102)によって使用されるL3キャッシュとして割り振られる、別の実施形態を示す。システム100において実装されるキャッシュレベルの階層に応じて、様々なキャッシュ技法が採用され得ることを諒解されたい。
図6は、動的キャッシュ拡張モジュール150を実装するための、論理キャッシュ604への物理キャッシュ602の例示的なマッピングを示す。物理キャッシュ602は、次のように割り振られ得る。プロセッサクラスタAは、L2キャッシュAにおいて物理キャッシュ部分A1およびA2を備え得る。プロセッサクラスタBは、L2キャッシュBにおいて物理キャッシュ部分B1、B2、B3、およびB4を備え得る。プロセッサクラスタCは、L2キャッシュCにおいて物理キャッシュ部分C1、C2、およびC3を備え得る。動作時にデータ入力202および204に基づいて、キャッシュスケジューラ140は、L2キャッシュB(プロセッサクラスタB)からL2キャッシュA(プロセッサクラスタA)に物理キャッシュ部分B1、B2、およびB3を割り振り得る。L2キャッシュB(プロセッサクラスタB)からの物理キャッシュ部分B4は、L2キャッシュC(プロセッサクラスタC)に割り振られ得る。この動作使用事例では、プロセッサクラスタBは、電力消費量を節約するために非アクティブ化され、電力省電化させられ(power collapsed)得る。図7は、図6の物理-論理キャッシュマッピングを実装するためのマッピングテーブル700を示す。
再び図4を参照すると、現在のタスクがL2キャッシュ112のサイズしきい値によって制限されないとキャッシュスケジューラ140が決定した場合(決定ブロック406)、制御は決定ブロック410に流れて、現在のタスクがL2キャッシュ112の性能しきい値によって制限されるかどうかを決定し得る。性能しきい値を超えない場合、キャッシュスケジューラ140は、デフォルト分割L2モード210を使用して現在のタスクを処理し得る(ブロック412)。性能しきい値を超える場合、キャッシュスケジューラ140は、Littleプロセッサクラスタ102からBigプロセッサクラスタ104に現在のタスクを移行し得る(ブロック414)。図8aおよび図8bは、例示的なタスク移行を概略形式で示す。図8aでは、現在のタスク802は、Littleプロセッサクラスタ102内のCPU110に関連付けられる。図8bに示すように、性能しきい値を超える場合、キャッシュスケジューラ140は、CPU110からCPU114にタスク802を移行し得る。
システム100の別の例示的な実施形態によれば、タスクがLittleプロセッサクラスタ102からBigプロセッサクラスタ104に移行されるとき、Bigプロセッサクラスタ104内のL2キャッシュ118は、その作業セットのすべてをLittleプロセッサクラスタ102内のL2キャッシュ112からフェッチし得る。代替的に、L2キャッシュ118は、フレッシュセットをメインメモリ144またはより低いレベルのキャッシュ(たとえば、L3キャッシュ)からフェッチするとともに、その作業セットの一部分をLittleプロセッサクラスタ102内のL2キャッシュ112からフェッチし得る。この点について、移行元L2キャッシュは実行されるスレッドがそことは異なるところに移行しているL2キャッシュとして定義され得る。キャッシュスケジューラ140は、移行元L2キャッシュからのしきい値キャッシュヒット率が維持される限り、移行元L2キャッシュをオンラインのままにするようにさらに構成され得る。ヒット率がしきい値キャッシュヒット率を下回ると、移行元L2キャッシュはフラッシュされ、オフにされ得る。
図9に示すように、システム100は、性能および/または電力を最適化するために、しきい値キャッシュヒット率を調整するように構成され得る。一実施形態では、スケジューラ907および低電力モードドライバ901はソフトウェアにおいて実装され得、タイムアウト選択アルゴリズム903はハードウェアにおいて実装され得る。たとえば、オペレーティングシステム905がタスク移行を頻繁に実行する状況を考える。スケジューラ907は、上記でより詳細に説明したように、タスクウェイクアップ入力902を受け取り、タスク移行が実行されるべきかどうかを決定する(決定ブロック904)ことができる。タスク移行が実行されるべきではないとスケジューラ907が決定した場合、ブロック906において、タスクは元のプロセッサクラスタ上でスケジュールされ得る。タスク移行が望まれる場合、ブロック908において、タスクは宛先プロセッサクラスタに移行され得る。
例示的な実施形態では、調整/タイムアウト技法は図9のステップA、B、C、D、およびEによって表される。ステップAにおいて、タスク移行は、たとえば、低電力モードドライバ901への制御信号をトリガし得る。ブロック910において、低電力モードドライバ901は、移行元プロセッサ内のコアが省電力状態にさせられる(collapsed)べきかどうかを決定する。移行元L2キャッシュ909を省電力状態にさせることができる場合(決定ブロック910)、ステップBにおいて、省電力タイムアウトおよびスヌープヒットしきい値が設定され得る。省電力タイムアウトは、タイムアウト選択アルゴリズム903によって受け取られた(ステップC)推奨タイムアウトに基づいて、設定され得る(ブロック920)。ステップDにおいて、スヌープヒットしきい値およびスヌープヒットタイムアウトは、それぞれ、ブロック922および924において、移行元L2キャッシュ909に記憶され得る。ステップEにおいて、移行元L2キャッシュ909は、スヌープヒットしきい値、スヌープヒットカウンタ、およびスヌープヒットタイムアウトに基づくタイムアウトIRQラインに応答して、省電力状態にさせられ得る(ブロック928)。
システム100は、任意の望ましいコンピューティングシステムに組み込まれ得る。図10は、例示的なポータブルコンピューティングデバイス(PCD)1000に組み込まれたシステム100を示す。システムオンチップ(SoC)103は、キャッシュスケジューラ140と、プロセッサクラスタ102、104、および106とを含み得る。ディスプレイコントローラ328およびタッチスクリーンコントローラ330は、プロセッサクラスタのうちの1つまたは複数に結合され得る。一方、オンチップシステム103の外部にあるタッチスクリーンディスプレイ1006は、ディスプレイコントローラ328およびタッチスクリーンコントローラ330に結合され得る。
図10は、ビデオエンコーダ334、たとえば、位相反転線(PAL)エンコーダ、順次式カラーメモリ(SECAM)エンコーダ、または全米テレビジョン方式委員会(NTSC)エンコーダが、プロセッサクラスタ102、104、および106のうちの1つまたは複数に結合されることをさらに示す。さらに、ビデオ増幅器336は、ビデオエンコーダ334およびタッチスクリーンディスプレイ1006に結合される。また、ビデオポート338は、ビデオ増幅器336に結合される。図10に示すように、ユニバーサルシリアルバス(USB)コントローラ340は、プロセッサクラスタのうちの1つまたは複数に結合される。また、USBポート342は、USBコントローラ340に結合される。メモリ144および加入者識別モジュール(SIM)カード346も、プロセッサクラスタに結合され得る。
さらに、図10に示すように、デジタルカメラ348は、プロセッサクラスタに結合され得る。例示的な態様では、デジタルカメラ348は、電荷結合デバイス(CCD)カメラまたは相補型金属酸化物半導体(CMOS)カメラである。
図10にさらに示すように、ステレオオーディオコーダデコーダ(コーデック)350は、プロセッサクラスタに結合され得る。さらに、オーディオ増幅器352は、ステレオオーディオコーデック350に結合され得る。例示的な態様では、第1のステレオスピーカー354および第2のステレオスピーカー356は、オーディオ増幅器352に結合される。マイクロフォン増幅器358も、ステレオオーディオコーデック350に結合され得る。加えて、マイクロフォン360は、マイクロフォン増幅器358に結合され得る。特定の態様では、周波数変調(FM)無線チューナー362は、ステレオオーディオコーデック350に結合され得る。また、FMアンテナ364は、FM無線チューナー362に結合される。さらに、ステレオヘッドフォン366は、ステレオオーディオコーデック350に結合され得る。
図10は、無線周波数(RF)トランシーバ368がプロセッサクラスタに結合され得ることをさらに示す。RFスイッチ370は、RFトランシーバ368およびRFアンテナ372に結合され得る。キーパッド204、マイクロフォンを有するモノヘッドセット376、およびバイブレータデバイス378は、プロセッサクラスタに結合され得る。
図10はまた、電源380がオンチップシステム103に結合され得ることを示す。特定の態様では、電源380は、電力を必要とするPCD1000の様々な構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様では、電源は、充電式DCバッテリー、または交流(AC)電源に接続されたAC-DC変換器から得られるDC電源である。
図10は、PCD1000が、データネットワーク、たとえば、ローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワークにアクセスするために使用され得るネットワークカード388を含む場合もあることをさらに示す。ネットワークカード388は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、パーソナルエリアネットワーク超低電力技術(PeANUT)ネットワークカード、テレビジョン/ケーブル/衛星チューナー、または当技術分野でよく知られている任意の他のネットワークカードであってもよい。さらに、ネットワークカード388は、チップに組み込まれる場合があり、すなわち、ネットワークカード388は、チップ内のフルソリューションである場合があり、別個のネットワークカード388でなくてもよい。
図10を参照すると、メモリ144、RAMカード105、タッチスクリーンディスプレイ1006、ビデオポート338、USBポート342、カメラ348、第1のステレオスピーカー354、第2のステレオスピーカー356、マイクロフォン360、FMアンテナ364、ステレオヘッドフォン366、RFスイッチ370、RFアンテナ372、キーパッド374、モノヘッドセット376、バイブレータ378、および電源380は、オンチップシステム103の外部にある場合があることを諒解されたい。
本発明が説明したように機能するために、本明細書で説明したプロセスまたはプロセスフローにおけるいくつかのステップが、他のステップに先行するのは当然である。しかしながら、そのような順序またはシーケンスが本発明の機能を変えない場合、本発明は、説明したステップの順序に限定されない。すなわち、本発明の範囲および趣旨から逸脱することなく、いくつかのステップは、他のステップの前に実行される場合があるか、後に実行される場合があるか、または他のステップと並行して(実質的に同時に)実行される場合があることを認識されたい。場合によっては、本発明から逸脱することなく、いくつかのステップは、省略される場合があるか、または実行されない場合がある。さらに、「その後」、「次いで」、「次に」などの言葉は、ステップの順序を限定するものではない。これらの言葉は単に、例示的な方法の説明を通して読者を導くために使用される。
加えて、プログラミングに関する当業者は、たとえば、本明細書におけるフローチャートおよび関連する説明に基づいて、難なく、開示した発明を実装するコンピュータコードを書くことができるか、または実装するのに適したハードウェアおよび/もしくは回路を特定することができる。
したがって、プログラムコード命令または詳細なハードウェアデバイスの特定のセットの開示は、本発明をどのように作製し使用するのかを十分に理解するために必要であるとは見なされない。特許請求されるコンピュータ実装プロセスの発明性のある機能は、上記の説明において、かつ様々なプロセスフローを示す場合がある図とともに、より詳細に説明される。
1つまたは複数の例示的な態様では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せにおいて実装され得る。ソフトウェアにおいて実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、NANDフラッシュ、NORフラッシュ、M-RAM、P-RAM、R-RAM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを搬送もしくは記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。
また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(「DSL」)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(「CD」)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(「DVD」)、フロッピーディスク(disk)およびブルーレイディスク(disc)を含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
代替実施形態は、本発明の趣旨および範囲から逸脱することなく、本発明が関係する技術分野の当業者に明らかとなろう。したがって、選択された態様が図示され詳細に説明されてきたが、以下の特許請求の範囲によって定義されるように、本発明の趣旨および範囲から逸脱することなく、態様において様々な置換および改変が行われ得ることが理解されよう。
100 システム
101 キャッシュコントローラ
102 プロセッサクラスタ、Littleプロセッサクラスタ
103 システムオンチップ(SoC)、オンチップシステム
104 プロセッサクラスタ、Bigプロセッサクラスタ
105 RAMカード
106 プロセッサクラスタ
108 中央処理ユニット(CPU)コア、LittleクラスタCPUコア、CPU
110 中央処理ユニット(CPU)コア、LittleクラスタCPUコア、CPU
111 キャッシュ相互接続
112 L2キャッシュ
114 CPUコア、BigクラスタCPUコア、CPU
116 CPUコア、BigクラスタCPUコア、CPU
118 L2キャッシュ
120 GPUコア
122 GPUコア
124 L2キャッシュ
126 キャッシュモニタ
128 キャッシュモニタ
130 キャッシュモニタ
140 キャッシュスケジューラ
144 メインメモリ、メモリ
150 動的キャッシュ拡張モジュール
152 動的キャッシュ再割振りモジュール
202 データ入力、入力、プロセッサ使用入力データ
204 データ入力、入力、L2キャッシュ使用/ミス率入力データ
206 キャッシュ拡張モード
208 タスク移行モード
210 デフォルト分割L2モード
300 テーブル
328 ディスプレイコントローラ
330 タッチスクリーンコントローラ
334 ビデオエンコーダ
336 ビデオ増幅器
338 ビデオポート
340 ユニバーサルシリアルバス(USB)コントローラ、USBコントローラ
342 USBポート
348 デジタルカメラ、カメラ
350 ステレオオーディオコーダデコーダ(コーデック)、ステレオオーディオコーデック
352 オーディオ増幅器
354 第1のステレオスピーカー
356 第2のステレオスピーカー
360 マイクロフォン
362 周波数変調(FM)無線チューナー、FM無線チューナー
364 FMアンテナ
366 ステレオヘッドフォン
368 無線周波数(RF)トランシーバ、RFトランシーバ
370 RFスイッチ
372 RFアンテナ
376 モノヘッドセット
378 バイブレータデバイス、バイブレータ
380 電源
400 方法
502 一部分
504 一部分
602 物理キャッシュ
604 論理キャッシュ
700 マッピングテーブル
802 現在のタスク、タスク
901 低電力モードドライバ
902 タスクウェイクアップ入力
903 タイムアウト選択アルゴリズム
905 オペレーティングシステム
907 スケジューラ
909 移行元L2キャッシュ
1000 ポータブルコンピューティングデバイス(PCD)、PCD
1006 タッチスクリーンコントローラ、タッチスクリーンディスプレイ

Claims (26)

  1. ポータブルコンピューティングデバイス内のマルチクラスタ異種プロセッサアーキテクチャにおいて動的キャッシュ拡張を提供するための方法であって、
    第1のプロセッサクラスタと、関連する第2のキャッシュを有する第2のプロセッサクラスタとを備える前記マルチクラスタ異種プロセッサアーキテクチャにおいて、前記第1のプロセッサクラスタおよび関連する第1のキャッシュについてのプロセッサ作業負荷の度合いを表すプロセッサ作業負荷入力およびキャッシュ作業負荷の度合いを表すキャッシュ作業負荷入力を受け取るステップと、
    前記キャッシュ作業負荷入力に基づいて、前記第1のプロセッサクラスタに関連付けられた現在のタスクの処理ボトルネックまたは他のシステム制限が、前記第1のキャッシュの前記キャッシュ作業負荷によって引き起こされているかを決定するステップと、前記プロセッサ作業負荷入力および前記キャッシュ作業負荷入力に基づいて、前記第1のプロセッサクラスタに関連付けられた前記現在のタスクの前記処理ボトルネックまたは前記他のシステム制限が、前記第1のキャッシュの前記キャッシュ作業負荷によって引き起こされているのではなく、前記第1のプロセッサクラスタの前記プロセッサ作業負荷によって引き起こされているかを決定するステップと、
    前記現在のタスクの前記処理ボトルネックまたは前記他のシステム制限が、前記第1のキャッシュの前記キャッシュ作業負荷によって引き起こされているとの決定に応じて、前記第2のプロセッサクラスタに関連付けられた前記第2のキャッシュの少なくとも一部分を前記第1のキャッシュの拡張として使用するステップと、
    前記現在のタスクの前記処理ボトルネックまたは前記他のシステム制限が、前記第1のキャッシュの前記キャッシュ作業負荷によって引き起こされているのではなく、前記第1のプロセッサクラスタの前記プロセッサ作業負荷によって引き起こされているとの決定に応じて、前記第1のプロセッサクラスタから前記第2のプロセッサクラスタに前記現在のタスクを移行するステップと
    を含む方法。
  2. 前記第1のキャッシュに関連付けられたスヌープヒットカウンタを監視するステップと、
    前記スヌープヒットカウンタがしきい値を下回るか、または省電力状態のためのタイマが満了した場合、前記第1のキャッシュを省電力状態にさせるステップと
    をさらに含む、請求項1に記載の方法。
  3. 前記プロセッサ作業負荷入力が、クロックサイクル当たりの命令の数、単位時間当たりの命令の数、周波数レベル、およびプロセッサアクティブ持続時間割合のうちの1つまたは複数に関する情報を含み、前記キャッシュ作業負荷入力が、キャッシュミスの数、キャッシュアクセスの数、キャッシュミス率、およびキャッシュミスによるプロセッサストール時間またはプロセッサストールの数のうちの1つまたは複数に関する情報を含む、請求項1に記載の方法。
  4. 前記プロセッサ作業負荷入力が、プロセッサ/CPU性能に関する情報を含む、請求項1に記載の方法。
  5. 前記キャッシュ作業負荷入力が、キャッシュのサイズに関する情報を含む、請求項1に記載の方法。
  6. 前記第1のプロセッサクラスタが、第1のプロセッサタイプを有する1つまたは複数のプロセッサデバイスを備え、前記第2のプロセッサクラスタが、第2のプロセッサタイプを有する1つまたは複数のプロセッサデバイスを備える、請求項1に記載の方法。
  7. 前記第1のプロセッサタイプおよび前記第2のプロセッサタイプが、マルチコアプロセッサ、中央処理ユニット(CPU)、グラフィックスプロセッサユニット(GPU)、およびデジタル信号プロセッサ(DSP)のうちの1つまたは複数を含む、請求項6に記載の方法。
  8. 前記マルチクラスタ異種プロセッサアーキテクチャが、前記第1のプロセッサクラスタが、前記第2のプロセッサクラスタを備える1つまたは複数のプロセッサコアよりも低い電力を有する1つまたは複数のプロセッサコアを備える、異種アーキテクチャを備え、前記第1のプロセッサクラスタ内の前記第1のキャッシュが、前記第2のプロセッサクラスタ内の前記第2のキャッシュよりも小さいサイズを有する、請求項1に記載の方法。
  9. 前記第1のキャッシュおよび前記第2のキャッシュが、前記関連するプロセッサクラスタのためのレベル2(L2)キャッシュを備え、前記第2のプロセッサクラスタに関連付けられた前記第2のキャッシュの少なくとも前記一部分を前記第1のキャッシュの拡張として使用する前記ステップが、前記第2のキャッシュを前記第1のプロセッサクラスタのためのレベル3(L3)キャッシュとして使用するステップを含む、請求項1に記載の方法。
  10. ポータブルコンピューティングデバイス内のマルチクラスタ異種プロセッサアーキテクチャにおいて動的キャッシュ拡張を提供するためのシステムであって、
    第1のプロセッサクラスタと、関連する第2のキャッシュを有する第2のプロセッサクラスタとを備える前記マルチクラスタ異種プロセッサアーキテクチャにおいて、前記第1のプロセッサクラスタおよび関連する第1のキャッシュについてのプロセッサ作業負荷の度合いを表すプロセッサ作業負荷入力およびキャッシュ作業負荷の度合いを表すキャッシュ作業負荷入力を受け取るための手段と、
    前記キャッシュ作業負荷入力に基づいて、前記第1のプロセッサクラスタに関連付けられた現在のタスクの処理ボトルネックまたは他のシステム制限が、前記第1のキャッシュの前記キャッシュ作業負荷によって引き起こされているかを決定する手段と、前記プロセッサ作業負荷入力および前記キャッシュ作業負荷入力に基づいて、前記第1のプロセッサクラスタに関連付けられた前記現在のタスクの前記処理ボトルネックまたは前記他のシステム制限が、前記第1のキャッシュの前記キャッシュ作業負荷によって引き起こされているのではなく、前記第1のプロセッサクラスタの前記プロセッサ作業負荷によって引き起こされているかを決定するための手段と、
    前記現在のタスクの前記処理ボトルネックまたは前記他のシステム制限が、前記第1のキャッシュの前記キャッシュ作業負荷によって引き起こされているとの決定に応じて、前記第2のプロセッサクラスタに関連付けられた前記第2のキャッシュの少なくとも一部分を前記第1のキャッシュの拡張として使用するための手段と、
    前記現在のタスクの前記処理ボトルネックまたは前記他のシステム制限が、前記第1のキャッシュの前記キャッシュ作業負荷によって引き起こされているのではなく、前記第1のプロセッサクラスタの前記プロセッサ作業負荷によって引き起こされているとの決定に応じて、前記第1のプロセッサクラスタから前記第2のプロセッサクラスタに前記現在のタスクを移行するための手段と
    を備えるシステム。
  11. 前記第1のキャッシュに関連付けられたスヌープヒットカウンタを監視するための手段と、
    前記スヌープヒットカウンタがしきい値を超えるか、または省電力状態のためのタイマが満了した場合、前記第1のキャッシュを省電力状態にさせるための手段と
    をさらに備える、請求項10に記載のシステム。
  12. 前記プロセッサ作業負荷入力が、クロックサイクル当たりの命令の数、単位時間当たりの命令の数、周波数レベル、およびプロセッサアクティブ持続時間割合のうちの1つまたは複数に関する情報を含み、前記キャッシュ作業負荷入力が、キャッシュミスの数、キャッシュアクセスの数、キャッシュミス率、およびキャッシュミスによるプロセッサストール時間またはプロセッサストールの数のうちの1つまたは複数に関する情報を含む、請求項10に記載のシステム。
  13. 前記プロセッサ作業負荷入力が、プロセッサ/CPU性能に関する情報を含む、請求項10に記載のシステム。
  14. 前記キャッシュ作業負荷入力が、キャッシュのサイズに関する情報を含む、請求項10に記載のシステム。
  15. 前記第1のプロセッサクラスタが、第1のプロセッサタイプを有する1つまたは複数のプロセッサデバイスを備え、前記第2のプロセッサクラスタが、第2のプロセッサタイプを有する1つまたは複数のプロセッサデバイスを備える、請求項10に記載のシステム。
  16. 前記第1のプロセッサタイプおよび前記第2のプロセッサタイプが、マルチコアプロセッサ、中央処理ユニット(CPU)、グラフィックスプロセッサユニット(GPU)、およびデジタル信号プロセッサ(DSP)のうちの1つまたは複数を含む、請求項15に記載のシステム。
  17. 前記マルチクラスタ異種プロセッサアーキテクチャが、前記第1のプロセッサクラスタが、前記第2のプロセッサクラスタを備える1つまたは複数のプロセッサコアよりも低い電力を有する1つまたは複数のプロセッサコアを備える、異種アーキテクチャを備え、前記第1のプロセッサクラスタ内の前記第1のキャッシュが、前記第2のプロセッサクラスタ内の前記第2のキャッシュよりも小さいサイズを有する、請求項10に記載のシステム。
  18. 前記第1のキャッシュおよび前記第2のキャッシュが、前記関連するプロセッサクラスタのためのレベル2(L2)キャッシュを備え、前記第2のプロセッサクラスタに関連付けられた前記第2のキャッシュの少なくとも前記一部分を前記第1のキャッシュの拡張として使用するための前記手段が、前記第2のキャッシュを前記第1のプロセッサクラスタのためのレベル3(L3)キャッシュとして使用するための手段を備える、請求項10に記載のシステム。
  19. コンピュータ可読記憶媒体において具現化され、ポータブルコンピューティングデバイス内のマルチクラスタ異種プロセッサアーキテクチャにおいて動的キャッシュ拡張を提供するためにプロセッサによって実行可能なコンピュータプログラムであって、
    第1のプロセッサクラスタと、関連する第2のキャッシュを有する第2のプロセッサクラスタとを備える前記マルチクラスタ異種プロセッサアーキテクチャにおいて、前記第1のプロセッサクラスタおよび関連する第1のキャッシュについてのプロセッサ作業負荷の度合いを表すプロセッサ作業負荷入力およびキャッシュ作業負荷の度合いを表すキャッシュ作業負荷入力を受け取り、
    前記キャッシュ作業負荷入力に基づいて、前記第1のプロセッサクラスタに関連付けられた現在のタスクの処理ボトルネックまたは他のシステム制限が、前記第1のキャッシュの前記キャッシュ作業負荷によって引き起こされているかを決定し、
    前記プロセッサ作業負荷入力および前記キャッシュ作業負荷入力に基づいて、前記第1のプロセッサクラスタに関連付けられた前記現在のタスクの前記処理ボトルネックまたは前記他のシステム制限が、前記第1のキャッシュの前記キャッシュ作業負荷によって引き起こされているのではなく、前記第1のプロセッサクラスタの前記プロセッサ作業負荷によって引き起こされているかを決定し、
    前記現在のタスクの前記処理ボトルネックまたは前記他のシステム制限が、前記第1のキャッシュの前記キャッシュ作業負荷によって引き起こされているとの決定に応じて、前記第2のプロセッサクラスタに関連付けられた前記第2のキャッシュの少なくとも一部分を前記第1のキャッシュの拡張として使用し、
    前記現在のタスクの前記処理ボトルネックまたは前記他のシステム制限が、前記第1のキャッシュの前記キャッシュ作業負荷によって引き起こされているのではなく、前記第1のプロセッサクラスタの前記プロセッサ作業負荷によって引き起こされているとの決定に応じて、前記第1のプロセッサクラスタから前記第2のプロセッサクラスタに前記現在のタスクを移行する
    ように構成されたロジックを備えるコンピュータプログラム。
  20. 前記第1のキャッシュに関連付けられたスヌープヒットカウンタを監視し、
    前記スヌープヒットカウンタがしきい値を超えるか、または省電力状態のためのタイマが満了した場合、前記第1のキャッシュを省電力状態にさせる
    ように構成されたロジックをさらに備える、請求項19に記載のコンピュータプログラム。
  21. 前記プロセッサ作業負荷入力が、クロックサイクル当たりの命令の数、単位時間当たりの命令の数、周波数レベル、およびプロセッサアクティブ持続時間割合のうちの1つまたは複数に関する情報を含み、前記キャッシュ作業負荷入力が、キャッシュミスの数、キャッシュアクセスの数、キャッシュミス率、およびキャッシュミスによるプロセッサストール時間またはプロセッサストールの数のうちの1つまたは複数に関する情報を含む、請求項19に記載のコンピュータプログラム。
  22. 前記プロセッサ作業負荷入力が、プロセッサ/CPU性能に関する情報を含み、前記キャッシュ作業負荷入力が、キャッシュのサイズに関する情報を含む、請求項19に記載のコンピュータプログラム。
  23. 動的キャッシュ拡張を提供するためのマルチクラスタ異種プロセッサアーキテクチャを有するシステムであって、
    第1のレベル2(L2)キャッシュを備える第1のプロセッサクラスタと、
    第2のL2キャッシュを備える第2のプロセッサクラスタと、
    前記第1のL2キャッシュおよび前記第2のL2キャッシュと通信しているコントローラとを備え、前記コントローラが、
    前記第1のプロセッサクラスタからプロセッサ作業負荷の度合いを表すプロセッサ作業負荷入力およびキャッシュ作業負荷の度合いを表すキャッシュ作業負荷入力を受け取り、
    前記キャッシュ作業負荷入力に基づいて、前記第1のプロセッサクラスタに関連付けられた現在のタスクの処理ボトルネックまたは他のシステム制限が、前記第1のL2キャッシュの前記キャッシュ作業負荷によって引き起こされているかを決定し、
    前記プロセッサ作業負荷入力および前記キャッシュ作業負荷入力に基づいて、前記第1のプロセッサクラスタに関連付けられた前記現在のタスクの前記処理ボトルネックまたは前記他のシステム制限が、前記第1のL2キャッシュの前記キャッシュ作業負荷によって引き起こされているのではなく、前記第1のプロセッサクラスタの前記プロセッサ作業負荷によって引き起こされているかを決定し、
    前記現在のタスクの前記処理ボトルネックまたは前記他のシステム制限が、前記第1のL2キャッシュの前記キャッシュ作業負荷によって引き起こされているとの決定に応じて、前記第2のプロセッサクラスタに関連付けられた前記第2のL2キャッシュの少なくとも一部分を前記第1のL2キャッシュの拡張として使用し、
    前記現在のタスクの前記処理ボトルネックまたは前記他のシステム制限が、前記第1のL2キャッシュの前記キャッシュ作業負荷によって引き起こされているのではなく、前記第1のプロセッサクラスタの前記プロセッサ作業負荷によって引き起こされているとの決定に応じて、前記第1のプロセッサクラスタから前記第2のプロセッサクラスタに前記現在のタスクを移行する
    ように構成される、システム。
  24. 前記コントローラが、
    前記第1のL2キャッシュに関連付けられたスヌープヒットカウンタを監視し、
    前記スヌープヒットカウンタがしきい値を超えるか、または省電力状態のためのタイマが満了した場合、前記第1のL2キャッシュを省電力状態にさせる
    ようにさらに構成される、請求項23に記載のシステム。
  25. 前記プロセッサ作業負荷入力が、クロックサイクル当たりの命令の数、単位時間当たりの命令の数、周波数レベル、およびプロセッサアクティブ持続時間割合のうちの1つまたは複数に関する情報を含み、前記キャッシュ作業負荷入力が、キャッシュミスの数、キャッシュアクセスの数、キャッシュミス率、およびキャッシュミスによるプロセッサストール時間またはプロセッサストールの数のうちの1つまたは複数に関する情報を含む、請求項23に記載のシステム。
  26. 前記プロセッサ作業負荷入力が、プロセッサ/CPU性能に関する情報を含み、前記キャッシュ作業負荷入力が、キャッシュのサイズに関する情報を含む、請求項23に記載のシステム。
JP2017535789A 2015-01-13 2016-01-06 マルチクラスタ異種プロセッサアーキテクチャにおいて動的キャッシュ拡張を提供するためのシステムおよび方法 Active JP6355853B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/595,998 US9697124B2 (en) 2015-01-13 2015-01-13 Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture
US14/595,998 2015-01-13
PCT/US2016/012374 WO2016114961A1 (en) 2015-01-13 2016-01-06 Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture

Publications (2)

Publication Number Publication Date
JP2018505476A JP2018505476A (ja) 2018-02-22
JP6355853B2 true JP6355853B2 (ja) 2018-07-11

Family

ID=55310902

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017535789A Active JP6355853B2 (ja) 2015-01-13 2016-01-06 マルチクラスタ異種プロセッサアーキテクチャにおいて動的キャッシュ拡張を提供するためのシステムおよび方法

Country Status (6)

Country Link
US (1) US9697124B2 (ja)
EP (1) EP3245587B1 (ja)
JP (1) JP6355853B2 (ja)
KR (1) KR101799253B1 (ja)
CN (1) CN107111553B (ja)
WO (1) WO2016114961A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6451538B2 (ja) * 2015-07-22 2019-01-16 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US11289133B2 (en) * 2015-09-16 2022-03-29 Arm Limited Power state based data retention
CN105744342B (zh) * 2016-01-28 2019-04-12 腾讯科技(深圳)有限公司 移动终端的数据传输方法和装置
KR101887741B1 (ko) * 2016-04-11 2018-09-11 전자부품연구원 적응적 블록 캐시 운용 방법 및 이를 적용한 dbms
US10275280B2 (en) 2016-08-10 2019-04-30 International Business Machines Corporation Reserving a core of a processor complex for a critical task
US10248457B2 (en) 2016-08-10 2019-04-02 International Business Machines Corporation Providing exclusive use of cache associated with a processing entity of a processor complex to a selected task
US10152243B2 (en) * 2016-09-15 2018-12-11 Qualcomm Incorporated Managing data flow in heterogeneous computing
US10223164B2 (en) 2016-10-24 2019-03-05 International Business Machines Corporation Execution of critical tasks based on the number of available processing entities
US10248464B2 (en) 2016-10-24 2019-04-02 International Business Machines Corporation Providing additional memory and cache for the execution of critical tasks by folding processing units of a processor complex
CN108614782B (zh) * 2018-04-28 2020-05-01 深圳市华阳国际工程造价咨询有限公司 一种用于数据处理系统的高速缓存访问方法
CN111124947B (zh) * 2018-10-31 2023-04-18 阿里巴巴集团控股有限公司 一种数据处理方法及其装置
US11360891B2 (en) * 2019-03-15 2022-06-14 Advanced Micro Devices, Inc. Adaptive cache reconfiguration via clustering
GB2579682B (en) * 2019-03-25 2021-03-24 Trustonic Ltd Trusted execution environment migration method
CN113392604B (zh) * 2021-06-04 2023-08-01 中国科学院计算技术研究所 基于先进封装技术的多cpu共封架构下高速缓存的动态扩容方法及系统
US11734180B2 (en) * 2021-07-28 2023-08-22 EMC IP Holding Company LLC Memory efficient approach to extending cache
US20230094030A1 (en) * 2021-09-30 2023-03-30 Advanced Micro Devices, Inc. Cache resizing based on processor workload

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021466A (en) 1996-03-14 2000-02-01 Compaq Computer Corporation Transferring data between caches in a multiple processor environment
EP1182559B1 (en) 2000-08-21 2009-01-21 Texas Instruments Incorporated Improved microprocessor
US7076609B2 (en) * 2002-09-20 2006-07-11 Intel Corporation Cache sharing for a chip multiprocessor or multiprocessing system
US7822105B2 (en) 2003-09-02 2010-10-26 Sirf Technology, Inc. Cross-correlation removal of carrier wave jamming signals
US20060112226A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US7554909B2 (en) * 2005-03-21 2009-06-30 Intel Corporation Dynamic service management for multicore processors
US20070294693A1 (en) * 2006-06-16 2007-12-20 Microsoft Corporation Scheduling thread execution among a plurality of processors based on evaluation of memory access data
JP2008046685A (ja) * 2006-08-10 2008-02-28 Fujitsu Ltd 二重化システム及び系切り換え方法
US20080235454A1 (en) 2007-03-22 2008-09-25 Ibm Corporation Method and Apparatus for Repairing a Processor Core During Run Time in a Multi-Processor Data Processing System
US8725953B2 (en) * 2009-01-21 2014-05-13 Arm Limited Local cache power control within a multiprocessor system
US20110066830A1 (en) * 2009-09-11 2011-03-17 Andrew Wolfe Cache prefill on thread migration
US8392659B2 (en) * 2009-11-05 2013-03-05 International Business Machines Corporation Extending cache capacity on multiple-core processor systems
KR101697937B1 (ko) 2010-01-08 2017-02-01 삼성전자주식회사 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템
US8533505B2 (en) * 2010-03-01 2013-09-10 Arm Limited Data processing apparatus and method for transferring workload between source and destination processing circuitry
US8438338B2 (en) * 2010-08-15 2013-05-07 International Business Machines Corporation Flexible use of extended cache using a partition cache footprint
US8522251B2 (en) 2011-01-10 2013-08-27 International Business Machines Corporation Organizing task placement based on workload characterizations
US9038088B2 (en) * 2011-03-10 2015-05-19 Nec Laboratories America, Inc. Load balancing on hetrogenous processing cluster based on exceeded load imbalance factor threshold determined by total completion time of multiple processing phases
US9311250B2 (en) * 2011-12-19 2016-04-12 Intel Corporation Techniques for memory de-duplication in a virtual system
US8924644B2 (en) 2011-12-28 2014-12-30 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Extending cache in a multi-processor computer
US8943343B2 (en) 2012-06-20 2015-01-27 Intel Corporation Controlling an asymmetrical processor
WO2014196976A1 (en) * 2013-06-06 2014-12-11 Empire Technology Development, Llc Shared cache data movement in thread migration
US20150324234A1 (en) * 2013-11-14 2015-11-12 Mediatek Inc. Task scheduling method and related non-transitory computer readable medium for dispatching task in multi-core processor system based at least partly on distribution of tasks sharing same data and/or accessing same memory address(es)
US9632958B2 (en) * 2014-07-06 2017-04-25 Freescale Semiconductor, Inc. System for migrating stash transactions
US20160077871A1 (en) * 2014-09-17 2016-03-17 Advanced Micro Devices, Inc. Predictive management of heterogeneous processing systems

Also Published As

Publication number Publication date
CN107111553B (zh) 2018-10-12
EP3245587A1 (en) 2017-11-22
US20160203083A1 (en) 2016-07-14
EP3245587B1 (en) 2020-07-15
US9697124B2 (en) 2017-07-04
KR20170093234A (ko) 2017-08-14
JP2018505476A (ja) 2018-02-22
WO2016114961A1 (en) 2016-07-21
KR101799253B1 (ko) 2017-12-12
CN107111553A (zh) 2017-08-29

Similar Documents

Publication Publication Date Title
JP6355853B2 (ja) マルチクラスタ異種プロセッサアーキテクチャにおいて動的キャッシュ拡張を提供するためのシステムおよび方法
US9626295B2 (en) Systems and methods for scheduling tasks in a heterogeneous processor cluster architecture using cache demand monitoring
US11586451B2 (en) Resource management with dynamic resource policies
EP3155521B1 (en) Systems and methods of managing processor device power consumption
CN109074331B (zh) 具有系统高速缓存和本地资源管理的功率降低存储器子系统
JP2018533112A (ja) コマンドストリームヒントを使用したgpu作業負荷の特徴づけおよび電力管理
US9411649B2 (en) Resource allocation method
US20170212581A1 (en) Systems and methods for providing power efficiency via memory latency control
US10064141B2 (en) Core frequency/count decision-based thermal mitigation optimization for a multi-core integrated circuit
JP2018527676A (ja) メモリ状態遷移タイマを動的に調整するためのシステムおよび方法
US9501299B2 (en) Minimizing performance loss on workloads that exhibit frequent core wake-up activity
JP2013516711A (ja) 電子デバイスにおける電力を制御するシステムおよび方法
US20220300421A1 (en) Memory Sharing
US20120297106A1 (en) Method and System for Dynamically Managing a Bus of a Portable Computing Device
CN108885587B (zh) 具有系统高速缓存和本地资源管理的功率降低存储器子系统
US20240330061A1 (en) Systems and methods for prioritizing and assigning threads in a heterogeneous processor architecture
JP2018505489A (ja) システムオンチップにおける動的メモリ利用
WO2024206942A1 (en) Systems and methods for prioritizing and assigning threads in a heterogeneous processor architecture

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180207

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180514

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180612

R150 Certificate of patent or registration of utility model

Ref document number: 6355853

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250