(57)【要約】  ポータブルコンピューティングデバイス(「PCD」)内でまたはそれとともに使用されるプロセッサなど、プロセッサ間で動的クロックおよび電圧スケーリング(DCVS)対応プロセッサ間通信を可能にするシステムおよび方法が提示される。PCDの動作の間、第1の処理構成要素において少なくとも1つのデータパケットが受信される。加えて、第1の処理構成要素はまた、動的クロックおよび電圧スケーリング(DCVS)の下で動作する第2の処理構成要素に関する作業負荷情報を受信する。受信された作業負荷情報に少なくとも部分的に基づいて、少なくとも1つのデータパケットを第1の処理構成要素から第2の処理構成要素に送るか、またはバッファに送るかを決定し、DCVSアルゴリズムまたは論理を実装するマルチコアまたはマルチCPUを備えたPCD内の電力消費を低減し、バッテリー寿命を改善するためのコスト効果的な能力を提供する。
2017515191.tif 000002
【特許請求の範囲】
【請求項１】
ポータブルコンピューティングデバイス(PCD)内でのプロセッサ間通信のための方法であって、
第1の処理構成要素において少なくとも1つのデータパケットを受信するステップと、
前記第1の処理構成要素において、動的クロックおよび電圧スケーリング(DCVS)の下で動作する第2の処理構成要素に関する作業負荷情報を受信するステップと、
前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを決定するステップと
を含む、方法。
【請求項２】
前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを決定するステップが、
前記少なくとも1つのデータパケットを前記第2の処理構成要素に送ることが、前記第2の処理構成要素に前記第2の処理構成要素の動作周波数を増大させることになるかどうかを決定するステップ
をさらに含む、請求項1に記載の方法。
【請求項３】
前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを決定するステップが、
前記第2の処理構成要素のアクティブ作業負荷がしきい値を超えるかどうかを決定するステップ
をさらに含む、請求項1に記載の方法。
【請求項４】
前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを決定するステップが、さらに動作パラメータに少なくとも部分的に基づく、請求項1に記載の方法。
【請求項５】
前記動作パラメータが、前記少なくとも1つのデータパケットをバッファリングする電力消費、サービス品質(QoS)レベル、および前記少なくとも1つのデータパケットがタイムアウトになるかどうかのうちの少なくとも1つを含む、請求項4に記載の方法。
【請求項６】
前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを決定するステップが、前記第1の処理構成要素の外部のパケット送出論理モジュールによって実行される、請求項1に記載の方法。
【請求項７】
前記第1の処理構成要素においてDCVSの下で動作する第3の処理構成要素に関する作業負荷情報を受信するステップと、
前記第3の処理構成要素に関する前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第3の処理構成要素に送るか、またはバッファに送るかを決定するステップと
をさらに含む、請求項1に記載の方法。
【請求項８】
ポータブルコンピューティングデバイス(PCD)内でのプロセッサ間通信のためのシステムであって、
少なくとも1つのデータパケットを受信するように構成された第1の処理構成要素と、
前記第1の処理構成要素と通信している第2の処理構成要素であって、動的クロックおよび電圧スケーリング(DCVS)の下で動作するように構成された第2の処理構成要素と、
前記第1の処理構成要素および前記第2の処理構成要素と通信しているバッファと、
前記第2の処理構成要素と通信しているカウンタであって、前記第2の処理構成要素に関する作業負荷情報を取得するように構成されたカウンタと、
前記第1の処理構成要素および前記カウンタと通信しているパケット送出論理であって、前記作業負荷情報を前記カウンタから受信し、前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第2の処理構成要素に送らせるか、または前記バッファに送らせるかを決定するように構成されたパケット送出論理と
を備える、システム。
【請求項９】
前記第2の処理構成要素が、前記第2の処理構成要素に対して動的クロックおよび電圧スケーリングを提供するように構成されたDCVSモジュールをさらに備え、
前記カウンタが前記DCVSモジュールの一部である
請求項8に記載のシステム。
【請求項１０】
前記第2の処理構成要素に関する前記作業負荷情報が、前記第2の処理構成要素のアクティブ作業負荷をさらに備え、
前記パケット送出論理が、前記第2の処理構成要素のアクティブ作業負荷がしきい値を超えるかどうかを決定することによって、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを決定するように構成される
請求項8に記載のシステム。
【請求項１１】
前記パケット送出論理が、動作パラメータに少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを決定するようにさらに構成される、請求項8に記載のシステム。
【請求項１２】
前記動作パラメータが、前記少なくとも1つのデータパケットをバッファリングする電力消費、サービス品質(QoS)レベル、および前記少なくとも1つのデータパケットがタイムアウトになるかどうかのうちの少なくとも1つを含む、請求項11に記載のシステム。
【請求項１３】
前記パケット送出論理が前記第1の処理構成要素の一部である、請求項8に記載のシステム。
【請求項１４】
前記バッファが前記第1の処理構成要素の外部である、請求項8に記載のシステム。
【請求項１５】
前記第1の処理構成要素および前記バッファと通信している第3の処理構成要素であって、動作クロックおよび電圧スケーリング(DCVS)の下で動作するように構成された第3の処理構成要素と、
前記第3の処理構成要素および前記パケット送出論理と通信しているモニタであって、前記第3の処理構成要素に関する作業負荷情報を取得するように構成されたモニタと
をさらに備え、
前記パケット送出論理が、前記第3の処理構成要素に関する前記作業負荷情報を前記モニタから受信し、前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第3の処理構成要素に送らせるか、または前記バッファに送らせるかを決定するように構成される、請求項8に記載のシステム。
【請求項１６】
前記パケット送出論理が前記第1の処理構成要素の外部のパケット送出モジュールを備える、請求項15に記載のシステム。
【請求項１７】
コンピュータ可読プログラムコードを有するコンピュータプログラムであって、前記コンピュータ可読プログラムコードが、ポータブルコンピューティングデバイス(PCD)内でのプロセッサ間通信のための方法を実装するために実行されるように構成され、前記方法が、
第1の処理構成要素において少なくとも1つのデータパケットを受信するステップと、
前記第1の処理構成要素において、動的クロックおよび電圧スケーリング(DCVS)の下で動作する第2の処理構成要素に関する作業負荷情報を受信するステップと、
前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを決定するステップと
を含む、コンピュータプログラム。
【請求項１８】
前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを決定するステップが、
前記少なくとも1つのデータパケットを前記第2の処理構成要素に送ることが、前記第2の処理構成要素の前記DCVSに前記第2の処理構成要素の動作周波数を増大させることになるかどうかを決定するステップ
をさらに含む、請求項17に記載のコンピュータプログラム。
【請求項１９】
前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを決定するステップが、
前記第2の処理構成要素のアクティブ作業負荷がしきい値を超えるかどうかを決定するステップ
をさらに含む、請求項17に記載のコンピュータプログラム。
【請求項２０】
前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを決定するステップが、さらに動作パラメータに少なくとも部分的に基づく、請求項17に記載のコンピュータプログラム。
【請求項２１】
前記動作パラメータが、前記少なくとも1つのデータパケットをバッファリングする電力消費、サービス品質(QoS)レベル、および前記少なくとも1つのデータパケットがタイムアウトになるかどうかのうちの少なくとも1つを含む、請求項20に記載のコンピュータプログラム。
【請求項２２】
前記受信された作業負荷情報に少なくとも部分的に基づいて決定するステップが、前記第1の処理構成要素の外部のパケット送出論理モジュールによって実行される、請求項17に記載のコンピュータプログラム。
【請求項２３】
前記第1の処理構成要素において、動的クロックおよび電圧スケーリング(DCVS)の下で動作する第3の処理構成要素に関する作業負荷情報を受信するステップと、
前記第3の処理構成要素に関する前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第3の処理構成要素に送るか、またはバッファに送るかを決定するステップと
をさらに含む、請求項17に記載のコンピュータプログラム。
【請求項２４】
ポータブルコンピューティングデバイス(PCD)内でのプロセッサ間通信のためのシステムであって、
第1の処理構成要素において少なくとも1つのデータパケットを受信するための手段と、
前記第1の処理構成要素において、動的クロックおよび電圧スケーリング(DCVS)の下で動作する第2の処理構成要素に関する作業負荷情報を受信するための手段と、
前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを決定するための手段と
を備えた、システム。
【請求項２５】
前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを前記決定するための手段が、
前記少なくとも1つのデータパケットを前記第2の処理構成要素に送ることが、前記第2の処理構成要素の前記DCVSに前記第2の処理構成要素の動作周波数を増大させることになるかどうかを決定するための手段
をさらに含む、請求項24に記載のシステム。
【請求項２６】
前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを前記決定するための手段が、
前記第2の処理構成要素のアクティブ作業負荷がしきい値を超えるかどうかを決定するための手段
をさらに備える、請求項24に記載のシステム。
【請求項２７】
前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを前記決定するための手段が、
動作パラメータに少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第2の処理構成要素に送るか、またはバッファに送るかを決定するための手段
をさらに備える、請求項24に記載のシステム。
【請求項２８】
前記動作パラメータが、前記少なくとも1つのデータパケットをバッファリングする電力消費、サービス品質(QoS)レベル、および前記少なくとも1つのデータパケットがタイムアウトになるかどうかのうちの少なくとも1つを含む、請求項27に記載のシステム。
【請求項２９】
前記受信された作業負荷情報に少なくとも部分的に基づいて前記決定するための手段が、前記第1の処理構成要素の外部である、請求項24に記載のシステム。
【請求項３０】
前記第1の処理構成要素において、動的クロックおよび電圧スケーリング(DCVS)の下で動作する第3の処理構成要素に関する作業負荷情報を受信するための手段と、
前記第3の処理構成要素に関する前記受信された作業負荷情報に少なくとも部分的に基づいて、前記少なくとも1つのデータパケットを前記第1の処理構成要素から前記第3の処理構成要素に送るか、またはバッファに送るかを決定するための手段と
をさらに備える、請求項24に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的クロックおよび電圧スケーリング（ＤＣＶＳ）対応プロセッサ間通信を提供するためのシステムおよび方法に関する。
【背景技術】
【０００２】
ポータブルコンピューティングデバイス(PCD)を含めて、ワイヤレス信号を介して他のデバイスと通信するプロセッサを備えたデバイスは至る所にある。これらのデバイスは、モバイル電話、携帯情報端末(PDA)、ポータブルゲームコンソール、パームトップコンピュータ、および他のポータブル電子デバイスを含み得る。これらのデバイスの多くは主要機能に加えて、周辺機能を含む。たとえば、モバイル電話またはセルラー電話は、電話による通話を可能にし、サポートするという主要機能と、スチールカメラ、ビデオカメラ、全地球測位システム(GPS)ナビゲーション、ウェブブラウジング、ビデオ視聴、ゲームプレイ、電子メールの送受信、テキストメッセージの送受信、プッシュツートーク機能などの周辺機能とを含む場合がある。
【０００３】
現代のPCDは、一般に、PCDの様々な機能を制御または実行するための、1つまたは複数のコア(たとえば、中央処理装置(CPU)、ビデオデコーダ、グラフィックス処理ユニット(GPU)、モデムプロセッサ、デジタル信号プロセッサ(DSP)など)を備えるシステムオンチップ(SoC)を含む。各コア/CPUを動作させることは、PCD上の電力消費を増大し、バッテリー寿命を低減するため、ますます多くのコアおよび/またはCPUの存在は、PCD設定において問題があり得る。たとえば、PCDの機能が増大するにつれて、従来のSoCプロセッサは、PCD内の一般の使用事例(たとえば、ビデオ再生)を実行する一環として、PCD間でかなりの量のデータを交換する場合がある。コンテンツサイズが数か月ごとに大きくなるにつれて(ビデオクリップの場合、1080Pなど)、これらの通信機構は、CPU負荷の重要な部分になり得、電力消費が増大する。CPU負荷を形成する通信機構は、リモートプロシージャコール(remote procedure calls)、共有メモリ呼出し、および他のカスタマイズされた通信機構の形態であり得る。
【０００４】
電力消費を低減する目的で、CPUは、その上で実行する何らかの形態の動的クロックおよび電圧スケーリング(DCVS:Dynamic Clock and Voltage Scaling)アルゴリズムを実装して、電力消費を最小限に抑えることができる。これらのDCVSアルゴリズムも大部分は、そのCPUにとって最良の周波数を決定するために周期的に計算されたCPU負荷に基づいて実行する。これらの種類のSoCの1つの問題は、そのようなCPUが(たとえば、別のCPUなど)ソースから不定期に複数のメッセージ/割込みを受信するときである。そのようなメッセージ/割込みの繰り返しの結果、CPU上のDCVSアルゴリズムは、メッセージ/割込みを受け取り、それらのメッセージ/割込みによって引き起こされるこの追加負荷に対処し、DCVSアルゴリズムの目的に反して、電力消費をかなり増大し得るその高/最高周波数にCPUを導く場合がある。この電力消費の増大は、モバイルフォンなど、バッテリーで実行するPCDにとって特に問題があり得る。
【０００５】
したがって、DCVSアルゴリズムを実装するCPUにおいてランダムかつ突然のメッセージ/割込みを受け取ることによって引き起こされる可能性があるクロック周波数のこれらの突然の増大を最小限に抑えるための改善されたシステムおよび方法の必要が存在する。
【発明の概要】
【課題を解決するための手段】
【０００６】
ポータブルコンピューティングデバイス(「PCD」)内でまたはそれとともに使用されるプロセッサなど、プロセッサ間で動的クロックおよび電圧スケーリング(DCVS)対応プロセッサ間通信を可能にするシステムおよび方法を開示する。PCDの動作の間、第1の処理構成要素において少なくとも1つのデータパケットが受信される。加えて、第1の処理構成要素はまた、動的クロックおよび電圧スケーリング(DCVS)の下で動作する第2の処理構成要素に関する作業負荷情報を受信する。受信された作業負荷情報に少なくとも部分的に基づいて、少なくとも1つのデータパケットを第1の処理構成要素から第2の処理構成要素に送るか、またはバッファに送るかを決定する。
【０００７】
1つの例示的な実施形態は、第1の処理構成要素を含むPCDであり、この場合、第1の処理構成要素は、少なくとも1つのデータパケットを受信するように構成される。第1の処理構成要素は、動的クロックおよび電圧スケーリング(DCVS)の下で動作するように構成された第2の処理構成要素と通信している。バッファは、第1の処理構成要素および第2の処理構成要素と通信している。カウンタは第2の処理構成要素と通信しており、カウンタは第2の処理構成要素に関する作業負荷情報を取得するように構成される。PCDはまた、第1の処理構成要素およびカウンタと通信しているパケット送出論理(packet sending logic)を含む。パケット送出論理は、作業負荷情報をカウンタから受信し、受信された作業負荷情報に少なくとも部分的に基づいて、少なくとも1つのデータパケットを第2の処理構成要素に送らせるか、またはバッファに送らせるかを決定するように構成される。
【０００８】
別の例示的な実施形態は、コンピュータ可読プログラムコードを具現した非一時的コンピュータ使用可能媒体を備えたコンピュータプログラム製品であり、前記コンピュータ可読プログラムコードは、ポータブルコンピューティングデバイス(PCD)におけるプロセッサ間通信のための方法を実装するために実行されるように適合される。実装される方法は、第1の処理構成要素において少なくとも1つのデータパケットを受信するステップと、第1の処理構成要素において、動的クロックおよび電圧スケーリング(DCVS)の下で動作する第2の処理構成要素に関する作業負荷情報を受信するステップと、受信された作業負荷情報に少なくとも部分的に基づいて、少なくとも1つのデータパケットを第1の処理構成要素から第2の処理構成要素に送るか、またはバッファに送るかを決定するステップとを含む。
【０００９】
さらに別の例示的な実施形態は、ポータブルコンピューティングデバイス(PCD)内のプロセッサ間通信のためのコンピュータシステムである。コンピュータシステムは、第1の処理構成要素において少なくとも1つのデータパケットを受信するための手段と、第1の処理構成要素において、動的クロックおよび電圧スケーリング(DCVS)の下で動作する第2の処理構成要素に関する作業負荷情報を受信するための手段と、受信された作業負荷情報に少なくとも部分的に基づいて、少なくとも1つのデータパケットを第1の処理構成要素から第2の処理構成要素に送るか、またはバッファに送るかを決定するための手段とを備える。
【００１０】
図面では、別段の指示がない限り、種々の図面全体を通して、同じ参照番号が同じ部分を指している。「102A」または「102B」などの文字指定を伴う参照番号について、文字指定は、同じ図内に存在する2つの同様の部分または要素を区別することができる。参照番号がすべての図において同じ参照番号を有するすべての部分を包含することを意図するとき、参照番号に対する文字指定は省略される場合がある。
【図面の簡単な説明】
【００１１】
【図１】本発明を実装することができるポータブルコンピュータデバイス(PCD)のある例示的な実施形態のブロック図である。
【図２Ａ】図1に示したPCD実施形態で実装することができる処理ユニットに関する、ある時間期間にわたるある例示的な論理負荷を示すグラフである。
【図２Ｂ】図2Aに示した論理負荷下の処理ユニットのある例示的な周波数を示すグラフである。
【図３Ａ】図1に示したPCD実施形態で実装することができる処理ユニットに関する、ある時間期間にわたる別の例示的な論理負荷を示すグラフである。
【図３Ｂ】図3Aに示した論理負荷下の処理ユニットのある例示的な周波数を示すグラフである。
【図４】PCD内で動的クロックおよび電圧スケーリング(DCVS)対応プロセッサ間通信をサポートするためのある例示的なシステムを示すブロック図である。
【図５】PCD内で動的クロックおよび電圧スケーリング(DCVS)対応プロセッサ間通信をサポートするための別の例示的なシステムを示すブロック図である。
【図６Ａ】PCD内で動的クロックおよび電圧スケーリング(DCVS)対応プロセッサ間通信を提供するための方法のある例示的な実施形態を説明するフローチャートである。
【図６Ｂ】図6Aに示した方法を実行することが可能な例示的な構成要素を示す図である。
【発明を実施するための形態】
【００１２】
本明細書で使用する「例示的(exemplary)」という言葉は、「例、実例、または図として機能する」ことを意味する。「例示的」と本明細書で説明する態様は、他の態様より好ましい、または有利であるものとして必ずしも解釈されない。
【００１３】
この記述では、「アプリケーション」という用語は、また、オブジェクトコード、スクリプト、バイトコード、マーク付け言語ファイル、およびパッチなど、実行可能なコンテンツを持つファイルを含むことができる。さらに、本明細書で参照する「アプリケーション」はまた、オープンされることが必要な場合があるドキュメント、またはアクセスされる必要がある他のデータファイルなどの、本質的に実行可能ではないファイルも含む場合がある。
【００１４】
「コンテンツ」という用語は、また、オブジェクトコード、スクリプト、バイトコード、マーク付け言語ファイル、およびパッチなど、実行可能なコンテンツを持つファイルを含むことができる。加えて、本明細書で言及する「コンテンツ」は、また、開かれる必要がある場合がある文書またはアクセスされる必要のある他のデータファイルもしくはデータ値など、本来実行可能でないファイルを含むことができる。
【００１５】
本説明で使用する、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータに関するエンティティを指すことが意図される。たとえば、構成要素は、限定はされないが、プロセッサ上で実行されているプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータであってもよい。実例として、コンピューティングデバイスにおいて実行されているアプリケーションとコンピューティングデバイスの両方は、構成要素であり得る。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に存在してもよく、構成要素は、1つのコンピュータに局在していてもよく、および/または、2つ以上のコンピュータに分散されていてもよい。さらに、これらの構成要素は、そこに記憶される種々のデータ構造を有する種々のコンピュータ可読媒体から実行することができる。構成要素は、1つまたは複数のデータパケット(たとえば、信号を用いて、ローカルシステム内、分散システム内の別の構成要素とやりとりし、および/または、インターネットなどのネットワークにわたって他のシステムとやりとりする1つの構成要素からのデータ)を有する信号に従うなどして、ローカルプロセスおよび/またはリモートプロセスを用いて通信することができる。
【００１６】
この記述では、「ポータブルコンピューティングデバイス」(「PCD」)という用語は、バッテリーおよび/またはキャパシタなど、制限された容量の再充電可能な電源において動作するデバイスを記述するために使用される。充電式電源を備えるPCDは、数十年にわたって使用されてきたが、第3世代(「3G」)および第4世代(「4G」)のワイヤレス技術の出現に結び付けられる、充電式バッテリーにおける技術的な進歩により、複数の能力を有する数多くのPCDが可能になった。したがって、PCDは、数ある中でも、携帯電話、衛星電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、スマートブックすなわちリーダ、メディアプレーヤ、上述のデバイスの組合せ、ワイヤレス接続を有するラップトップコンピュータまたはタブレットコンピュータとすることができる。
【００１７】
本明細書では、「中央処理ユニット(「CPU」)」、「デジタル信号プロセッサ(「DSP」)」、「グラフィックス処理ユニット(「GPU」)、「チップ」、「ビデオコーデック」、「システムバス」、「画像プロセッサ」、および「メディアディスプレイプロセッサ(「MDP」)」という用語は、動的クロックおよび電圧スケーリング(「DCVS」)技法を通して制御可能であり、本システムおよび本方法から利益を享受できる処理構成要素の非限定的な例である。処理構成要素についてのこれらの用語は、別段に規定されているときを除いて、互換的に使用される。その上、下で論じるように、上記またはそれらの均等物のいずれも、「コア」および/または「サブコア」と本明細書では全般的に呼ばれる1つまたは複数の別個の処理構成要素内で実装され得るか、またはそれらからなり得る。
【００１８】
本明細書では、「作業負荷」、「処理負荷」、「処理作業負荷」および「グラフィカル作業負荷」という用語は互換的に使用され、全般的に、所与の実施形態の所与の処理構成要素に関連付けられるか、または割り当てられ得る処理負担または処理負担の割合を対象にする。加えて、「フレーム」、「コードブロック」、および「コードのブロック」という関連用語は、所与の作業負荷の部分またはセグメントを指すために交換可能に使用される。たとえば、グラフィカル作業負荷は、ビデオ処理の当業者が理解するように、一連のフレームからなり得る。上で定義されるものに加えて、「処理構成要素」などは、限定はしないが、中央処理装置、グラフィカル処理ユニット、コア、メインコア、サブコア、処理エリア、ハードウェアエンジンなど、またはポータブルコンピューティングデバイス内の集積回路内またはその外にある任意の構成要素とすることができる。
【００１９】
「MIPS」という用語が、プロセッサが所与の電力周波数において処理することが可能である百万命令毎秒の数を表すことは、当業者には認識されよう。本明細書では、この用語は、例示的な実施形態におけるプロセッサ性能の相対的なレベルを示すための尺度の一般的な単位として使用され、本開示の範囲内に入る任意の所与の実施形態が任意の特定のドライストーン評価または処理能力を有するプロセッサを含むべきであること、または含むべきではないことを示唆するものと、解釈されることはない。加えて、当業者によって理解されるように、プロセッサのMIPS設定は、プロセッサに供給されている電力、周波数、または動作周波数と直接的に相関する。
【００２０】
動的クロックおよび電圧スケーリング(DCVS)対応プロセッサ間通信のための本システムおよび本方法は、メッセージ、割込み、リモートプロシージャコールなどを1つのコア、処理ユニット(CPU)、または処理構成要素(「送出処理構成要素」)から別の構成要素、コア、またはCPU(「受信処理構成要素」)に送るかどうかを動的かつ適応的に決定するためのコスト効果的な能力を提供し、受信処理構成要素はDCVSアルゴリズムまたは論理を実装する。
【００２１】
本システムおよび本方法では、送出処理構成要素が受信処理構成要素に通信するためのデータまたはデータパケットを有するとき、送出処理構成要素は、データまたはデータパケットを自動的に送らない。代わりに、送出処理構成要素、または送出処理構成要素と通信している別の構成要素は、受信処理構成要素上の現在の作業負荷に少なくとも部分的に基づいて、データまたはデータパケットを速やかに送るか否か、および/またはデータもしくはデータパケットを速やかに送るか否かが受信処理構成要素において(高周波数で動作することによってなど)電力消費の増大を引き起こすことになるかどうかを決定する。本システムおよび本方法は、DCVSアルゴリズムまたは論理を実装するマルチコアまたはマルチCPUを備えたPCD内の電力消費の低減およびバッテリー寿命の改善を可能にする。
【００２２】
PCDの動作の間、第1の処理構成要素において少なくとも1つのデータパケットが受信される。加えて、第1の処理構成要素はまた、動的クロックおよび電圧スケーリング(DCVS)の下で動作する第2の処理構成要素に関する作業負荷情報を受信する。少なくとも1つのデータパケットを第1の処理構成要素から第2の処理構成要素に送るか、またはバッファに送るかの決定が行われる。少なくとも1つのデータパケットを第2の処理構成要素に送るかどうかの決定は、第2の処理構成要素に関する受信された作業負荷情報に少なくとも部分的に基づいて行われ、第2の処理構成要素のアクティブ作業負荷がしきい値レベルを超えるかどうかの決定を含み得る。加えて、少なくとも1つのデータパケットを第1の処理構成要素から第2の処理構成要素に送るか、またはバッファに送るかの決定はまた、動作パラメータに少なくとも部分的に基づき得る。例示的な動作パラメータは、データパケット内に含まれた情報の重要性、データが送られる宛先処理構成要素の性質(すなわち、アクティブアプリケーションまたはGPU)、サービス品質(「QoS」)、バッファの可用性、データをバッファリングする電力「コスト」などを含み得る。
【００２３】
1つの例示的な実施形態は、第1の処理構成要素を含むPCDであり、この場合、第1の処理構成要素は、少なくとも1つのデータパケットを受信するように構成される。第1の処理構成要素は、動的クロックおよび電圧スケーリング(DCVS)の下で動作するように構成された第2の処理構成要素と通信している。バッファは、第1の処理構成要素および第2の処理構成要素と通信している。カウンタは第2の処理構成要素と通信しており、カウンタは第2の処理構成要素に関する作業負荷情報を取得するように構成される。PCDはまた、第1の処理構成要素およびカウンタと通信しているパケット送出論理を含む。パケット送出論理は、作業負荷情報をカウンタから受信し、受信された作業負荷情報に少なくとも部分的に基づいて、少なくとも1つのデータパケットを第2の処理構成要素に送らせるか、またはバッファに送らせるかを決定するように構成される。
【００２４】
DCVSを実装する第2の処理構成要素上の作業負荷に基づいて、データパケットを第1の処理構成要素からその第2の処理構成要素に送るか否かを決定するためのこの能力は、PCDの処理構成要素の改善された電力管理を可能にする。1つの例示的な利点は、第2の処理構成要素がビジーであるとき、プロセッサ間通信を送るのを回避するための能力である。そのような状況で、第2の処理構成要素は、プロセッサ間通信からの増大した作業負荷が第2の処理構成要素のDCVSに、高周波数において動作することによってなど、電力消費を増大させることになるレベルで動作している可能性がある。第2の処理構成要素がビジーであり、かつ/またはしきいレベルを超えて動作していると決定された場合、第1の処理構成要素からのデータは、第2の処理構成要素があまりビジーでなくなるまで、可能な場合(たとえばバッファリングなどにより)、遅延され得る。このようにして、本システムおよび本方法は、プロセッサ間通信からの電力消費のかなりの、多くの場合、不要な増大を回避する。
【００２５】
PCD内の動作を特に参照して説明するが、動的クロックおよび電圧スケーリング(DCVS)対応プロセッサ間通信のための、説明するシステムおよび方法は、電力消費を節約し、性能を強化し、サービス品質を改善することが望ましいプロセッサまたは処理サブシステムを備えた任意のシステムに適用可能である。別の形で述べると、説明するシステムおよび方法は、ポータブルデバイス以外のシステム内に動的クロックおよび電圧スケーリング(DCVS)対応プロセッサ間通信を提供するために実装され得る。
【００２６】
本明細書で説明する動的クロックおよび電圧スケーリング(DCVS)対応プロセッサ間通信のためのシステム、またはシステムの一部は、ハードウェアまたはソフトウェアで実装され得る。ハードウェアで実装する場合、すべてが当技術分野でよく知られている、以下の技術のいずれか、またはそれらの組合せを含み得る:すなわち、適切に構成された半導体デバイスおよび抵抗要素を有する、個別電子構成要素、集積回路、特定用途向け集積回路などである。これらのハードウェアデバイスのうちのいずれも、単独で動作しようと、他のデバイス、またはメモリなどの他の構成要素とともに動作しようと、開示する方法の様々な動作またはステップを実行するための構成要素または手段を形成するかまたは備えることがやはり可能である。
【００２７】
本明細書で説明するPCDまたは他のシステムが、ソフトウェアで実装されるか、またはソフトウェアで部分的に実装されるとき、そのソフトウェア部分は、第1の処理構成要素において少なくとも1つのデータパケットを受信し、第1の処理構成要素において、動的クロックおよび電圧スケーリング(DCVS)の下で動作する第2の処理構成要素に関する作業負荷情報を受信し、受信された作業負荷情報に少なくとも部分的に基づいて、少なくとも1つのデータパケットを第1の処理構成要素から第2の処理構成要素に送るか、またはバッファに送るかを決定するために使用され得る。
【００２８】
様々な要素を表す際に使用されるソフトウェアおよびデータは、メモリ内に記憶され、適切な命令実行システム(マイクロプロセッサ)によって実行され得る。ソフトウェアは、論理機能を実装するために実行可能な命令の順位リストを備えてよく、シングルコアプロセッサもしくはマルチコアプロセッサまたはプロセッサ包含システム(processor-containing system)など、命令実行システム、装置、またはデバイスによって、またはそれらとともに使用するために任意の「プロセッサ可読媒体」内で実施され得る。そのようなシステムは、一般に、命令実行システム、装置、またはデバイスから命令にアクセスし、それらの命令を実行することになる。
【００２９】
図1は、本開示の実施形態が採用され得る、ワイヤレス通信システム100と通信するワイヤレスデバイス110を示す図である。上記のシステムの各々またはいずれかは、一般に、本明細書で「ワイヤレス通信プロトコル」または「ワイヤレス通信技術」という標示を用いて言及される場合がある。
【００３０】
図1は、1つまたは複数のワイヤレス通信システムと通信することができるワイヤレス電話の形態で本システムおよび本方法を実装することができるPCD 100の例示的な非限定的な態様のブロック図である。そのようなワイヤレス通信システムは、ロングタームエボリューション(LTE)システム、符号分割多元接続(CDMA)システム、周波数分割多元接続(FDMA)システム、モバイル通信用グローバルシステム(GSM(登録商標):Global System for Mobile Communications)システム、ワイヤレスローカルエリアネットワーク(WLAN)システム、いくつかの他のワイヤレスシステム、またはそれらの内のいずれかの組合せを含めて、広帯域ワイヤレス通信システムであり得る。CDMAシステムは、広帯域CDMA(WCDMA(登録商標))、CDMA 1X、エボリューションデータオプティマイズド(EVDO)、時分割同期CDMA(TD-SCDMA)、またはCDMAの何らかの他のバージョンを実装してもよい。
【００３１】
示すように、PCD 100は、互いに結合された異種マルチコア中央処理装置(「CPU」)110およびアナログ信号プロセッサ126を含むオンチップシステム102を含む。当業者によって理解されるように、CPU 110は、第0のコア222、第1のコア224、および第Nのコア230を含み得る。さらに、当業者によって理解されるように、CPU 110の代わりに、デジタル信号プロセッサ(「DSP」)も採用され得る。その上、異種マルチコアプロセッサの技術分野で理解されるように、コア222、224、230の各々は、同様の動作条件の下で異なる効率で作業負荷を処理し得る。コア222、224、230の各々は、PCD 100の1つまたは複数の機能を制御することができる。たとえば、第1のコア224は、PCD 100内のグラフィックスを制御するためのグラフィックス処理ユニット(GPU)であり得る。そのようなGPU/第1のコア224は、GPUコア326と(バッファを含む)メモリ112との間の通信を制御することを含めて、PCD 100内のグラフィックスを制御するために必要なドライバおよび/または他の構成要素をさらに含み得る。別の例では、第Nのコア230など、異なるコアがカメラ148を制御する場合があり、そのようなコア230は、コア230と(バッファを含む)メモリ112との間の通信を含めて、カメラ148を制御するために必要なドライバおよび/または他の構成要素をさらに含み得る。
【００３２】
いくつかの実施形態では、PCD 100は、マルチコアCPU 110および/またはコア222、224、230のうちの1つまたは複数と通信しているプロセッサ相互通信(「PI」)モジュール101を含み得る。PIモジュール101は、下で説明するように、処理ユニット/コア222、224、230間の通信のうちのいくつかまたはすべてを制御するように動作し得る。PIモジュール101は、マルチコアCPU 110によって実行されるソフトウェアを備え得る。しかしながら、本発明の範囲から逸脱することなく、PIモジュール101はまた、ハードウェアおよび/またはファームウェアから形成することができる。他の実装形態では、PCD 100は、別個のPIモジュール101を含まない場合があるが、代わりに、コア222、224、230のうちの1つまたは複数は、他の処理ユニット/コア222、224、230との通信を制御するためのモジュール、構成要素、論理、ソフトウェア、またはファームウェアを有し得る。
【００３３】
図1に示すように、ディスプレイコントローラ128およびタッチスクリーンコントローラ130がマルチコアCPU 110に結合される。次に、オンチップシステム102の外部のディスプレイ/タッチスクリーン132が、ディスプレイコントローラ128およびタッチスクリーンコントローラ130に結合される。
【００３４】
図1のPCD 100は、ビデオエンコーダ134、たとえば、マルチコアCPU 110に結合された、位相反転線(PAL:phase alternating line)エンコーダ、順次式カラーメモリ(SECAM:sequential couleur a memoire)エンコーダ、もしくは全国テレビジョン方式委員会(NTSC:national television system(s) committee)エンコーダ、または任意の他のタイプのビデオデコーダ134をさらに含み得る。さらに、ビデオ増幅器136が、ビデオエンコーダ134およびディスプレイ/タッチスクリーン132に結合される。ビデオポート138は、ビデオ増幅器136に結合される。図1に示すように、ユニバーサルシリアルバス(USB)コントローラ140がマルチコアCPU 110に結合される。同様に、USBポート142は、USBコントローラ140に結合される。メモリ112および加入者識別モジュール(SIM)カード146も、マルチコアCPU 110に結合され得る。他の実施形態では、複数のSIMカード146が実装され得る。
【００３５】
デジタルカメラ148が、マルチコアCPU 110に結合され得る。上で論じたように、そのような実施形態では、デジタルカメラ148は、マルチコアCPU 110のコアのうちの1つによって制御され得る。例示的な態様において、デジタルカメラ148は、電荷結合デバイス(CCD:charge-coupled device)カメラまたは相補型金属酸化物半導体(CMOS:complementary metal-oxide semiconductor)カメラである。
【００３６】
図1にさらに示すように、ステレオオーディオコーデック150がマルチコアCPU 110に結合される場合がある。その上、オーディオ増幅器152が、ステレオオーディオコーデック150に結合されてもよい。例示的な態様では、第1のステレオスピーカ154および第2のステレオスピーカ156が、オーディオ増幅器152に結合される。図1は、マイクロフォン増幅器158が、また、ステレオオーディオコーデック150に結合され得ることを示している。さらに、マイクロフォン160が、マイクロフォン増幅器158に結合される場合がある。特定の態様では、周波数変調(FM)ラジオチューナ162が、ステレオオーディオコーデック150に結合される場合がある。同様に、FMアンテナ164が、FMラジオチューナ162に結合される。さらに、ステレオヘッドフォン166が、ステレオオーディオコーデック150に結合されてもよい。
【００３７】
図1は、モデムデバイス/高周波(「RF」)送受信機168がマルチコアCPU 110に結合され得ることをさらに示す。モデムデバイス168は、GSM(登録商標)、CDMA、W-CDMA、TDSCDMA、LTE、および、FDB/LTEワイヤレスプロトコルおよびPDD/LTEワイヤレスプロトコルに限定されないが、これらなど、LTEの変形体など、ワイヤレス通信プロトコルのうちの1つまたは複数をサポートし得る。加えて、複数のモデムデバイス168が存在する場合があり、そのような実施形態では、異なるモデムデバイス168が、上に記載したワイヤレス通信プロトコルおよび/または技術のうちのいくつかまたはすべてをサポートし得る。
【００３８】
いくつかの実装形態では、モデムデバイス168はさらに、別個のプロセッサ、メモリ、および/またはRF送受信機を含めて、様々な構成要素からなり得る。他の実装形態では、モデムデバイス168は単なるRF送受信機であり得る。さらに、モデムデバイス168は集積回路に組み込まれる場合がある。すなわち、モデムデバイス168を備える構成要素はチップ内のフルソリューションであり得る。加えて、モデムデバイス168を備える様々な構成要素は、マルチコアCPU 110に結合される場合もある。RFスイッチ170が、モデムデバイス168およびRFアンテナ172に結合されてもよい。様々な実施形態では、複数のRFアンテナ172が存在し得、そのようなRFアンテナ172の各々は、RFスイッチ170を介してモデムデバイス168に結合され得る。
【００３９】
図1に示すように、キーパッド174は、直接的に、またはアナログ信号プロセッサ126を介してのいずれかで、マルチコアCPU 110に結合され得る。また、マイクロフォン付きモノヘッドセット176が、マルチコアCPU 110および/またはアナログ信号プロセッサ126に結合される場合がある。さらに、バイブレータデバイス178が、マルチコアCPU 110および/またはアナログ信号プロセッサ126に結合されてもよい。図1は、電源188がオンチップシステム102に結合され得、いくつかの実装形態では、電源188がUSBコントローラ140を介して結合されることも示す。特定の態様では、電源188は電力を必要とするPCD 100の様々な構成要素に電力を供給する直流(DC)電源である。さらに、特定の態様では、電源188は、交流(AC)電源に接続されたAC-DC変換器から得られる、充電式DCバッテリーまたはDC電源であり得る。
【００４０】
マルチコアCPU 110は、1つまたは複数の内部のオンチップ熱センサー157A、ならびに、1つまたは複数の外部のオフチップ熱センサー157Bにも結合され得る。オンチップ熱センサー157Aは、縦型PNP構造に基づき、通常は相補型金属酸化膜半導体(「CMOS」)の超大規模集積(「VLSI:very large-scale integration」)回路に専用の、1つまたは複数の絶対温度比例(「PTAT:proportional to absolute temperature」)の温度センサーを備え得る。オフチップ熱センサー157Bは、1つまたは複数のサーミスタを備え得る。熱センサー157は、アナログデジタル変換器(「ADC」)コントローラ103を用いてデジタル信号に変換される、電圧降下を生じさせ得る。しかしながら、本発明の範囲から逸脱することなく、他のタイプの熱センサー157が採用され得る。
【００４１】
図1は、PCD 100がデータネットワーク、たとえばローカルエリアネットワーク、パーソナルエリアネットワーク、または任意の他のネットワークにアクセスするために使用される場合があるネットワークカード114も含む場合があることをさらに示す。ネットワークカード114は、Bluetooth(登録商標)ネットワークカード、WiFiネットワークカード、パーソナルエリアネットワーク(PAN)カード、または当技術分野でよく知られている任意の他のネットワークカードとすることができる。さらに、ネットワークカード114は集積回路に組み込まれる場合がある。すなわち、ネットワークカード114は、チップ内のフルソリューションとすることができ、別個のネットワークカード114でなくてもよい。
【００４２】
図1に示すように、ディスプレイ/タッチスクリーン132、ビデオポート138、USBポート142、カメラ148、第1のステレオスピーカ154、第2のステレオスピーカ156、マイクロフォン160、FMアンテナ164、ステレオポートヘッドフォン166、RFスイッチ170、RFアンテナ172、キーパッド174、モノヘッドセット176、バイブレータ178および電源188は、オンチップシステム102の外部にある。
【００４３】
オンチップシステム102はまた、様々なバスコントローラ(図示せず)を含み得る。たとえば、第1の例は、ビデオエンコーダ134を含めて、マルチメディアサブシステムの構成要素にCPU 110を通信可能に結合するバスインターフェース内の信号に対応し得る。任意の数の同様に構成されたバスコントローラが、オンチップシステム102内に配置されたバスインターフェースを監視するように配置され得ることを理解されよう。代替的に、必要に応じて、CPU 110とPCD 100の様々なサブシステムとの間で信号を通信する2つ以上のバスインターフェースを監視するように配置された入力を備えた単一のバスコントローラが構成され得る。
【００４４】
特定の態様では、本明細書で説明する方法ステップのうちの1つまたは複数は、メモリ112内に記憶されたデータおよびプロセッサ命令の組合せを介して使用可能にされる場合がある。これらの命令は、本明細書で説明する方法を実行するために、マルチコアCPU 110内の1つまたは複数のコアによって実行される場合がある。さらに、マルチコアCPU 110、コア222、224、230のうちの1つまたは複数、メモリ112、PIモジュール101、またはこれらの組合せは、DCVS対応プロセッサ間通信を可能にするために本明細書で説明する方法ステップの1つまたは複数を実行するための手段として機能し得る。
【００４５】
図2Aは、図1に示したPCD内で実装することができる処理構成要素に関する、ある時間期間にわたるある例示的な論理負荷を示すグラフである。図2Aでは、垂直軸は処理構成要素上の負荷を表す。図2A(ならびに、後続のグラフ3A)は、負荷レベルに関する2つの境界、すなわち、下位範囲に対する80%と上位範囲に対する90%を示し、これらの境界は、例証のためであり、処理構成要素に関して、任意の数の、または任意の量の境界レベルが利用可能であり得る。水平軸は時間を表す。図2Aは4つの等しい時間間隔T1〜T4を示すが、負荷は、必要に応じて、任意の数の等しいまたは等しくない時間間隔にわたって決定または測定されてよい。
【００４６】
図2Aで曲線によって示す処理構成要素上の負荷は、処理構成要素上のアクティブ作業負荷を表し、任意の所望の方法で測定または決定されてよい。図2Aの例で示すように、処理構成要素のアクティブ作業負荷は、下位範囲に対して80%内、かつ上位範囲に対して90%内に留まる。図2Aで測定されている処理構成要素がDVCSアルゴリズムまたは論理を実装すると想定すると、これらの範囲内のアクティブ作業負荷の測定は、DCVSアルゴリズムまたは論理に安定した状態で処理ユニットの周波数を維持させることができる。
【００４７】
図2Bは、図2Aに示した論理負荷下の処理構成要素のある例示的な周波数を示すグラフである。図2Bのグラフでは、垂直軸は、DCVSアルゴリズムまたは論理からの命令に従ってなど、処理構成要素が保持され得る動作周波数レベルを表す。特に、図2Bのグラフ(ならびに、後続の図3Bのグラフ)は、所与の処理構成要素に利用可能な2つの動作周波数レベル(800MHzおよび1.4GHz)を示すが、これらの動作周波数レベルは例証のためであり、所与の処理構成要素に対して任意の数の動作周波数レベルが利用可能であり得、特定の周波数は、必要に応じて、示した周波数とは異なる場合があることが想定される。水平軸は時間を表す。
【００４８】
図2Bに示すように、処理構成要素は、DCVSによって、処理構成要素の低周波数800MHzに保持されている。当業者が理解するように、低周波数において処理構成要素を動作させることは低い電力消費をもたらす。したがって、処理構成要素に関するアクティブ作業負荷が図2Aの90%の上限より下に留まると決定/測定されている結果として、処理ユニットのDCVSアルゴリズムまたは論理は、処理構成要素の周波数を図2Bの低周波数において安定状態に保持し、電力消費を低減する。
【００４９】
しかしながら、処理構成要素が電力消費を低減するためのDCVSアルゴリズムまたは論理の努力は、図3A〜図3Bに示すように、他の処理構成要素からの通信によって損なわれる場合がある。図3Aは、図1に示したPCD実施形態で実装することができる処理構成要素に関する、ある時間期間にわたる別の例示的な論理負荷を示すグラフである。図3Aでは、垂直軸はこの場合も処理構成要素上の負荷を表す。図3Aは、負荷レベルに関する2つの境界、すなわち、下位範囲に対する80%と上位範囲に対する90%を示し、これらの境界は、例証のためであり、処理構成要素に関して、任意の数の、または任意の量の境界レベルが利用可能であり得る。水平軸は時間を表す。図3Aは4つの等しい時間間隔T1〜T4を示すが、負荷は、必要に応じて、任意の数の等しいまたは等しくない時間間隔にわたって決定または測定されてよい。
【００５０】
図3Aに曲線によって示す処理構成要素上の負荷は、この場合も、処理構成要素上のアクティブ作業負荷を表し、任意の所望の方法で測定または決定されてよい。図2Aの前のグラフとは異なり、図3Aでは、処理構成要素のアクティブ作業負荷は、時間間隔T2において、上限すなわち90%を越えて上昇する。処理構成要素のアクティブ作業負荷の増大は、別の処理ユニットからのプロセッサ間通信、たとえば、CPU 110内の異なるコア222、224、230など、別の処理回路からのメッセージ、割込み、リモートプロシージャコール、共有メモリ呼出しなどによって引き起こされる場合がある。受信処理構成要素がすでにアクティブ状態にある間に受信されるそのようなプロセッサ間通信は、受信処理構成要素上に1つまたは複数の追加のスレッドをもたらし、処理構成要素上のアクティブ作業負荷を増大し得る。図3Aに示すように、処理構成要素のアクティブ作業負荷は、次いで、時間間隔T3およびT4の間に90%の上位範囲より下に戻ることができる。
【００５１】
図3Aに示すように90%の上位範囲を超えた、時間間隔T2におけるアクティブ作業負荷の測定の結果として、処理構成要素のDCVSアルゴリズムまたは論理は、処理構成要素に図3Bに示すような1つまたは複数の時間間隔の間により高い周波数で動作させることができる。図3Bは、図3Aに示した論理負荷下の処理構成要素のある例示的な周波数を示すグラフである。図3Bのグラフでは、垂直軸は、この場合も、DCVSアルゴリズムまたは論理からの命令に従ってなど、処理構成要素が保持され得る動作周波数レベルを表す。特に、図3Bのグラフは、所与の処理構成要素に利用可能な2つの動作周波数レベル(800MHzおよび1.4GHz)を示すが、これらの動作周波数レベルは例証のためであり、所与の処理構成要素に対して任意の数の動作周波数レベルが利用可能であり得、特定の周波数は、必要に応じて、示した周波数とは異なる場合があることが想定される。水平軸は時間を表す。
【００５２】
図3Bに示すように、処理構成要素は、DCVSによって、初めの2つの時間間隔T1およびT2の間、処理構成要素の低周波数、800MHzに保持されている。しかしながら、T2における90%(または、どんな所望のしきい値であろうと)を超えるアクティブ作業負荷の測定または決定の結果として、処理構成要素の周波数は、少なくとも時間間隔T3の間、1.4GHzに増大する。高周波数における処理構成要素のこの増大は、処理構成要素の電力消費のかなりの増大をもたらし得る。したがって、別の処理構成要素からのプロセッサ間通信の結果として、図3A〜3Bに示す処理構成要素に関するアクティブ作業負荷が図3Aにおいて90%の上限を超えるとして決定/測定され得、図3Bにおける処理ユニットの周波数の増大をもたらし、電力消費を増大する。
【００５３】
図4は、処理構成要素によって電力消費をより良好に管理するために、DCVS対応プロセッサ間通信をサポートするためのある例示的なシステムを示すブロック図である。図4に示す実施形態では、図1に示したマルチコアCPU 110のコア222、224、230のうちの1つであり得る第1のコア410として、図4に示す第1の処理構成要素によってデータが受信される。第1のコア410は、アプリケーションプロセッサ/コア、モデムプロセッサ/コア、WiFiプロセッサ/コア、ビデオデコーダプロセッサ/コア、オーディオデコーダプロセッサ/コア、GPU/グラフィックスコアなどを含めて、PCD 100内の任意のタイプのプロセッサまたはコア222、224、230であり得る。図4に示す実装形態では、第1のコア410は、パケット送出論理414を備えたプロセッサCPU 412と、CPU 412と通信している少なくとも1つのバッファ418とを含む。図4に示すように、バッファ418は、第1のコア410の(または、CPU 412の)内部バッファ418Aであり得る。加えて、または代替として、バッファ418はまた、第1のコア410と追加の処理構成要素とによって共有される外部バッファ418Bを含めて、1つまたは複数の外部バッファ418Bであり得る。
【００５４】
図4の第1のコア410の特徴の構成は、例示的であり、非限定的である。たとえば、CPU 412上に含まれているとして示すが、いくつかの実施形態では、パケット送出論理414は、別個のハードウェアもしくはソフトウェア構成要素、モジュール、またはCPU 412および/もしくは第1のコア410の外部にあるが、それらと通信している論理であり得る。同様に、CPU 412自体が第1のコア410内に含まれているとして示されているが、いくつかの実装形態ではCPU 412は、第1のコア410の外部であり得るが、第1のコア410と通信している場合がある。加えて、いくつかの実装形態では、CPU 412自体が第1のコア410を備え得る。
【００５５】
図4の例示的なシステムはまた、第1のコア410と通信している第2のコア420として示す、第1の処理構成要素と通信している第2の処理構成要素を含む。第2のコア420はまた、アプリケーションプロセッサ/コア、モデムプロセッサ/コア、WiFiプロセッサ/コア、ビデオデコーダプロセッサ/コア、オーディオデコーダプロセッサ/コア、GPU/グラフィックスコアなどを含めて、PCD 100内の任意のタイプのプロセッサまたはコア222、224、230であり得る。図4に示す実装形態では、第2のコア420はプロセッサCPU 422を含む。CPU 422は第2のコア420内に含まれているとして示されているが、いくつかの実装形態では、CPU 422は、第2のコア420の外部であり得るが、第2のコア420と通信している場合がある。加えて、いくつかの実装形態では、CPU 422自体が第2のコア420を備え得る。
【００５６】
図4に示すように、CPU 422はDCVSモジュール424と通信している。DCVSモジュール424は、第2のコア420および/または第2のコア420のプロセッサCPU 422に対して動的クロックおよび電圧スケーリングを実行する。DCVSモジュール424は、所望によりハードウェア、ソフトウェア、またはファームウェアで実装することができる。加えて、CPU 422の外部にあるとして示すが、DCVSモジュール424は代わりにCPU 422の一部であり得る。同様に、DCVSモジュール424はまた、第2のコア420の外部に配置され得るが、第2のコア420と通信している場合がある。どのように実装されるかにかかわらず、DCVSモジュール424は、図2A〜図2Bおよび図3A〜3Bに関して上で論じた動作周波数調節など、アクティブ作業負荷に応答して、第2のコア420および/またはCPU 422に関する、少なくとも何らかの形態の電力消費調整を実行する。
【００５７】
示すDCVSモジュール424は、第1のコア410のパケット送出論理414によって読み取られること、またはそれと通信することが可能であるように、第2のコア420および/またはCPU 422のアクティブ作業負荷を測定するためのカウンタ426を含む。いくつかの実装形態では、カウンタ426はDCVSモジュール424の構成要素または一部であり得る。そのような実装形態では、カウンタ426は、たとえば、第2のコア420および/またはCPU422が現在のサンプリング期間/時間間隔内で非アイドルスレッドを実行するのに費やしたビジークロックサイクルを計数する、DCVSモジュール424内の論理であり得る。他の実装形態では、カウンタ426は、ハードウェア、ソフトウェア、もしくはファームウェアモジュール、カウンタ、またはDCVSモジュール424から情報を読み取るか、または受信する、DCVSモジュール424とは別の構成要素であり得る。
【００５８】
第2のコア420はまた、第1のコア410など、他のコアから第2のコア420によって受信されたデータまたはデータパケットを制御するための、図4に示すようなパケット受信論理428を含み得る。第2のコア420のパケット受信論理428および/またはCPU 424は、図4に示すように、1つまたは複数の外部バッファ418Bと通信している場合がある。外部バッファ418Bはまた、第1のコア410および/または第1のコア410のCPU 412など、他の処理構成要素と通信している場合がある。パケット受信論理428は、ハードウェア、ソフトウェア、またはファームウェアで実装することができる。加えて、パケット受信論理428は、様々な実施形態では、第2のコア420のCPU 422から外部であり得るか、またはCPU 422内に含まれ得る。
【００５９】
動作中、図4のシステム400は、第1のコア410と第2のコア420との間など、DCVS対応プロセッサ間通信を可能にする。図4に示すように、第1のコア410、たとえば、WiFiコアは、データの1つまたは複数のストリームを受信し、各ストリームはデータパケットからなる。いくつかの実装形態では、第1のコア410のCPU 412は、受信されたデータパケットのうちの1つまたは複数が、この例では、動作アプリケーション用のコアである、第2のコア420など、1つまたは複数の追加の処理構成要素に送られる必要があることを決定し得る。他の実装形態では、別の要素または構成要素は、受信されたデータパケットのうちの1つまたは複数が1つまたは複数の追加の処理構成要素に送られる必要があるという決定を行うことができる。そのような他の要素または構成要素は、パケット送出論理414など、第1のコア410の一部であり得る。代替として、そのような他の要素は、データが第1のコア410に送られるのに先立って、その決定を行い、データを用いてその決定を第1のコア410に通信する要素または構成要素など、第1のコア410の外部であり得る。
【００６０】
データパケットを、第2のコア420など、他の処理構成要素に単に転送するのではなく、第1のコア410は、まず、第2のコア420を含めて、いずれの宛先処理構成要素のアクティブ作業負荷をチェックする。図4の例示的なシステムでは、第1のコア410のパケット送出論理414は、第2のコア420および/または第2のコアのCPU 422のアクティブ作業負荷を「読み取る」または決定するために、第2のコア420のカウンタ426から情報を受信する。アクティブ作業負荷は、任意の所望の方法で読み取られること、または受信されることが可能であり、第2のコア420/CPU 422の「ビジー割合」または第2のコア420/CPU 422が現在のサンプリング期間内で非アイドルスレッドを実行するのに費やしたビジークロックサイクルの数など、任意の所望の形態であり得る。
【００６１】
いくつかの実装形態では、パケット送出論理414は、第2のコア420および/またはCPU 422のアクティブ作業負荷を「読み取る」ために、第2のコア420のDCVSモジュール424および/またはカウンタ426と直接的に通信することができる。他の実装形態では、第1のコア410のCPU 412は、アクティブ作業負荷を「読み取る」ために、第2のコア420のDCVSモジュール424および/またはカウンタ426と通信することができ、その場合、CPU 412は、第2のコア420/CPU 422のアクティブ作業負荷に関する情報をパケット送出論理414に渡す。
【００６２】
パケット送出論理414は、次いで、第2のコア420/CPU 422のアクティブ作業負荷に関する受信された情報を使用して、データパケットを第2のコア420/CPU 422に速やかに送るべきかどうか、または、データパケットをバッファ418Aまたは418B内に一時的に記憶することによってなど、データパケットを第2のコア420/CPU 422に送るのを遅延させるかどうかを決定する。
【００６３】
1つの例示的な実施形態では、第2のコア420/CPU 422のアクティブ作業負荷に関する受信された情報は、第2のコア420/CPU 422に関するビジー割合であり得る。その実装形態では、パケット送出論理414は、データパケットを第2のコア420/CPU 422に速やかに送るべきかどうかを判定することができ、これは、第2のコア420/CPU 422のアクティブ作業負荷の増大をもたらすことになる。この判定はまた、増大したアクティブ作業負荷が第2のコア420のDCVSモジュール424に、第2のコア420/CPU 422の動作周波数を上げることによってなど、第2のコア420/CPU 422の電力消費を増大させることになるかどうかを決定することを含み得る。
【００６４】
一実装形態では、パケット送出論理414は、第2のコア420/CPU 422のアクティブ作業負荷が、図2A〜図2Bおよび図3A〜図3Bに関して上で論じた90%しきい値など、所定のしきい値を越えて増大し、第2のコア420/CPU 422の動作周波数を増大することをDCVSモジュールに要求することになるか否かを評価することによってこの決定を実行することができる。この評価は、パケット送出論理414が宛先処理構成要素の受信されたアクティブ作業負荷割合をしきい値と比較することによって、パケット送出論理414が、宛先処理構成要素のアクティブ作業負荷割合を受信し、データを速やかに送ることによって引き起こされることになる作業負荷の増大を推定することによって、または任意の他の所望の方法によって行われ得る。
【００６５】
データパケットを第2のコア420/CPU 422に速やかに送ることが、ビジー割合を90%しきい値を越えて増大させる場合、パケット送出論理414は、データパケットを第2のコア420/CPU 422に速やかに送らず、代わりに、データパケットを1つまたは複数のバッファ418A、418B内に記憶することを決定し得る。パケット送出論理414は、次いで、パケット送出論理414がデータパケットを送ることは第2のコア420/CPU 422のアクティブ作業負荷を増大することにならないと決定するまで、または、データパケットタイミングアウトを回避するために、パケット送出論理414がデータパケットは第2のコア420/CPU 422に送られなければならないと決定するまで、第2のコア420/CPU 422のアクティブ作業負荷に関する情報を受信し続けることができる。そのような状況で、パケット送出論理414は、データパケットをバッファ418A、418Bから第2のコア420/CPU 422に送らせることができる。代替として、パケット送出論理414は、第2のコア420/CPU 422に対する共有メモリ呼出しを介してなど、第2のコア420/CPU 422に共有バッファ418Bからデータパケットを取り出させることができる。
【００６６】
パケット送出論理414による、データパケットを第2のコア420/CPU 422に速やかに送るかどうかの決定は、動作パラメータなど、他の要件に部分的に基づいてもよい。決定を行うときに評価され得る例示的な動作パラメータは、データパケット内に含まれた情報の重要性、データが送られている宛先処理構成要素の性質(すなわち、アクティブアプリケーションまたはGPU)、サービス品質(「QoS」)、バッファの可用性、データをバッファリングする電力「コスト」などを含み得る。これらの様々な動作パラメータの評価または決定は、任意の所望のパラメータまたは最適化成果に重みを与えて、アルゴリズムまたは一連のアルゴリズムによって行われ得る。代替として、評価または決定は、ルックアップテーブルなど、任意の他の所望の手段によって行われ得る。
【００６７】
そのような要因の要件の一例は、マルチメディアデータがPCD 100への3G接続を介して受信されたかどうかであり得る。QoSがそのような情報をPCD 100に提供することができる重要性は、宛先処理構成要素がビジーであり、情報を送ることが宛先処理構成要素を高周波数で動作させることになる場合ですら、ユーザが、迅速にかつ中断なしに、パケット送出論理414にその情報をGPUまたはビデオデコーダなどの別の処理構成要素に速やかに提供することを決定させることができることである。
【００６８】
他方で、第1のコア410によって受信されているデータが、様々なアプリケーションに対する更新など、ファイルダウンロードである場合、緊急性がより低い、そのような情報の重要性およびそのような情報のQoSに対するわずかな影響は、データを宛先処理構成要素に送るいずれの機会が高電力消費モードで動作させることになる場合、パケット送出論理414にその情報をバッファリングさせるべきであると決定させることができる。
【００６９】
別の例として、パケット送出論理414は、PCD 100のアーキテクチャ、PCD 100の現在の動作条件、および/または他の理由により、第1のコア410によって受信されたデータをバッファリングする電力コストが高いかどうか、および/または宛先処理構成要素の動作のレベルを増大する電力コストよりも高いかどうかを考慮することができる。そのような状況で、第2の処理ユニットに関するアクティブ作業負荷が、さもなければデータパケットのバッファリングを保証する場合ですら、パケット送出論理414は、データをその第2の処理構成要素に速やかに送ることを決定することができる。代替として、そのような状況で、可能な場合、第2の/宛先処理構成要素に対するデータパケット引き渡しを遅延することによって、電力節約を得ることを依然として試みながら、バッファリングコストを最小限に抑えるために、パケット送出論理414の決定プロセスは、データがいつ第2の/宛先処理構成要素に送られることになるかに関するアクティブ作業負荷しきい値を増大することによってなど、同調され得る。
【００７０】
理解しやすいように、図4は、プロセッサ間通信のための宛先処理構成要素である第2のコア420からデータを受信する第1のコア410を示す。時には、第2のコア420(または、図示しない追加の処理構成要素)がデータを受信することが可能であり、その場合、第1のコア410は、プロセッサ間通信のための宛先処理構成要素であり得、第2のコア420の対応する構成要素が第1のコア410と通信し、データまたはデータパケットを第1のコア410に速やかに送るべきかどうか、またはバッファ418B内などにデータパケットをバッファリングすべきかどうかの決定を行うことが想定される。
【００７１】
同様に、図4は1つの宛先処理構成要素(第2のコア420)だけを示すが、いくつかの実施形態では、図4の第1のコア410が、受信されたデータパケットのうちのいくつか、またはすべてを送ることができる複数の宛先処理構成要素が存在し得る。そのような実施形態では、第1のコア410のパケット送出論理414は、上記の要因または要件のうちのいずれかに基づいて、または所望のいずれの追加の要因または要件に基づいて、各宛先処理構成要素に関して独立して、上で説明した決定を行うことができる。そのような実施形態では、各宛先処理構成要素に関して決定を行うとき、パケット送出論理414が同じしきい値を適用すること、同じ要因または要件を評価すること、および/または同様の要因または要件に同じように重み付けすることは不要である。したがって、パケット送出論理414は、指定されたデータパケットセットは1つの宛先処理構成要素に速やかに送られるべきであるが、第1の宛先処理構成要素が第2の宛先処理構成要素よりも高いアクティブ作業負荷で現在動作している場合ですら、同じデータパケットは、第2の宛先処理構成要素に速やかに送られるのではなく、バッファリングされるべきであると決定することができる。
【００７２】
図5は、処理構成要素によって電力消費を管理するために、DCVS対応プロセッサ間通信をサポートするための別の例示的なシステムを示すブロック図である。図5に示すシステム500は、データを受信しているソース処理構成要素(第1のコア510)と、2つの宛先処理構成要素(第2のコア520および第Nのコア530)とを含む。理解しやすいように、2つの宛先処理構成要素を示すが、システム500は任意の数の宛先処理構成要素を含み得る。
【００７３】
図5のシステム500は、第1のコア510、第2のコア520、および第Nのコア530の各々と通信している別個のかつ/または集中型のパケット送出論理モジュール514を実装することを除いて、図5に示すシステム500の実施形態は、図4のシステム400と同様である。システム500のパケット送出論理モジュール514は、図4に関して上で説明した方法と同様の方法で、第1のコア510と、第2のコア520と、第Nのコア530との間にDCVS対応プロセッサ間通信を提供するように動作可能である。
【００７４】
第1のコア510、第2のコア520、および第Nのコア530の各々は、アプリケーションプロセッサ/コア、モデムプロセッサ/コア、WiFiプロセッサ/コア、ビデオデコーダプロセッサ/コア、オーディオデコーダプロセッサ/コア、GPU/グラフィックスコアなどを含めて、PCD 100内の任意のタイプのプロセッサまたはコア222、224、230(図1参照)であり得る。図5に示す実装形態では、第1のコア510は、プロセッサCPU 512と、CPU 512と通信している少なくとも1つのバッファ518とを含む。図5に示すように、バッファ518は、第1のコア510の(または、CPU 512の)の内部バッファ518Aであり得る。加えて、または代替として、バッファ518はまた、第1のコア510、ならびに第2のコア520および/または第Nのコア530など、追加の処理構成要素によって共有される外部バッファ518Bを含めて、1つまたは複数の外部バッファ518Bであり得る。
【００７５】
図5の第1のコア510の特徴の構成は、例示的であり、非限定的である。たとえば、CPU 512自体が第1のコア510内に含まれているとして示されているが、いくつかの実装形態では、CPU 512は、第1のコア510の外部であり得るが、第1のコア510と通信している場合がある。加えて、いくつかの実装形態では、CPU 512自体が第1のコア510を備え得る。
【００７６】
図5の例示的なシステムはまた、第1のコア510と通信している第2のコア520および第Nのコア530として示す、第1の処理構成要素と通信している第2の処理構成要素および第3の処理構成要素を含む。図5に示す実装形態では、第2のコア520は、プロセッサCPU 522を含み、第Nのコア530は、プロセッサCPU 532を含む。CPU 522および532は、それぞれ、第2のコア520および第Nのコア530内に含まれているとして示すが、いくつかの実装形態では、CPU 522および532は、それぞれ、第2のコア520および第Nのコア530の外部であり得るが、それらと通信している場合がある。代替として、いくつかの実装形態では、CPU 522および532自体が、それぞれ、第2のコア520と第Nのコア530とを備え得る。さらに別の実装形態では、第2のコア520および第Nのコア530は、コア520および530の両方に関する処理を実行する1つのCPU 522を共有し得る。
【００７７】
図5に示すように、第2のコア520のCPU 522はDCVSモジュール524と通信している。同様に、第Nのコア530のCPU 532は、第Nのコア530に関してDCVSモジュール534と通信している。DCVSモジュール524および534は、それぞれ、第2のコア520/CPU 522および第Nのコア530/CPU 532に関して動的クロックおよび電圧スケーリングを実行する。DCVSモジュール524および534は、必要に応じて、ハードウェア、ソフトウェア、またはファームウェアで実装することができる。加えて、CPU 522および532の外部にあるとして示すが、DCVSモジュール524および534は、それぞれ、代わりにCPU 522および532の一部であり得る。同様に、DCVSモジュール524および534はまた、それぞれ、第2のコア520および第Nのコア530の外部に配置され得るが、それらと通信している場合がある。どのように実装されるかにかかわらず、DCVSモジュール524および534は、たとえば、図2A〜図2Bおよび図3A〜3Bに関して上で論じた動作周波数調節など、アクティブ作業負荷に応答して、そのそれぞれのコア520もしくは530および/またはCPU 522もしくは532の何らかの形態の電力消費調整を実行する。
【００７８】
第2のコア520に関して示すDCVSモジュール524は、パケット送出論理モジュール514によって読み取られること、またはそれと通信することが可能であるように、第2のコア520および/またはCPU 522のアクティブ作業負荷を測定または記録するためのカウンタ526を含む。いくつかの実装形態では、カウンタ526はDCVSモジュール524の構成要素または一部であり得る。そのような実装形態では、カウンタ526は、たとえば、第2のコア520および/またはCPU 522が現在のサンプリング期間/時間間隔内で非アイドルスレッドを実行するのに費やしたビジークロックサイクルを計数する、DCVSモジュール524内の論理であり得る。
【００７９】
対照的に、第Nのコア530は、第Nのコア530および/またはCPU 532のアクティブ作業負荷に関する情報を測定、記録、または受信するために第Nのコア530に対するDCVSモジュール534の外部にモニタ536を含む。モニタ536は、パケット送出論理モジュール514によって読み取られること、またはそれと通信することが可能であるように、作業負荷情報を同様に記録する。モニタ536は、ハードウェア、ソフトウェア、もしくはファームウェアモジュール、またはDCVSモジュール534と通信する構成要素であり得、第Nのコア530またはCPU 532内に配置され得るか、または第Nのコア530またはCPU 532の外部にあり得るが、それらと通信している場合がある。第Nのコア530のモニタ536および第2のコア520のカウンタ526は両方とも、図4に関して上で説明したのと同様の方法で、を含めて、パケット送出論理モジュール514に情報を提供するか、またはパケット送出論理モジュール514によって情報が読み取られることを可能にするように機能する。
【００８０】
第2のコア520および第Nのコア530はまた、第1のコア510など、他の処理構成要素から第2のコア520および第Nのコア530によって受信されたデータまたはデータパケットを制御するための、図5に示すような、それぞれ、パケット受信論理528および538を含み得る。第2のコア520のパケット受信論理528および/またはCPU 522は、図5に示す1つまたは複数の外部バッファ518Bと通信している場合がある。同様に、第Nのコア530のパケット受信論理538および/またはCPU 532はまた、1つまたは複数の外部バッファ518Bと通信している場合がある。外部バッファ518Bはまた、パケット送出論理モジュール514ならびに第1のコア510および/または第1のコア510のCPU 512など、他の処理構成要素と通信している場合がある。パケット受信論理528および538は、ハードウェア、ソフトウェア、またはファームウェアで実装することができる。加えて、パケット受信論理528および538は、様々な実施形態では、第2のコア520のCPU 522および第Nのコア530のCPU 532から外部であり得るか、またはそれらの内に含まれ得る。
【００８１】
動作中、図5のシステム500のパケット送出論理モジュール514は、第1のコア510と第2のコア520および/または第Nのコア530との間など、DCVS対応プロセッサ間通信を可能にする。図5に示すように、第1のコア510、たとえば、WiFiコアは、データの1つまたは複数のストリームを受信し、各ストリームはデータパケットからなる。いくつかの実装形態では、第1のコア510のCPU 512は、受信されたデータパケットのうちの1つまたは複数が、第2のコア520および/または第Nのコア530など、1つまたは複数の追加の処理構成要素に送られる必要があることを決定し得る。
【００８２】
他の実装形態では、別の要素または構成要素は、受信されたデータパケットのうちの1つまたは複数が1つまたは複数の追加の処理構成要素に送られる必要があるという決定を行うことができる。そのような他の要素または構成要素は、第1のコア510の一部であり得る。そのような他の要素または構成要素は、パケット送出論理モジュール514、またはデータが第1のコア510に送られるのに先立って、その決定を行い、データを用いてその決定を第1のコア510に通信する要素または構成要素など、第1のコア510の外部であり得る。
【００８３】
第1のコア510がデータパケットを、第2のコア520または第Nのコア530などの他の処理構成要素に転送することを単に可能にするのではなく、パケット送出論理モジュール514は、まず、図4において上で論じたシステム400と同様の任意のそのような宛先処理構成要素のアクティブ作業負荷をチェックする。図5の例示的なシステムでは、パケット送出論理モジュール514は、それぞれのコア520および530ならびに/またはそのそれぞれのCPU 522および532のアクティブ作業負荷を「読み取る」ために、第2のコア520のカウンタ526および第Nのコア530のモニタ536から情報を受信する。上で論じたように、アクティブ作業負荷は、第2のコア520/CPU 522および/または第Nのコア530/CPU 532の「ビジー割合」、または第2のコア520/CPU 522および/または第Nのコア530/CPU 532が現在のサンプリング期間内で非アイドルスレッドを実行するのに費やしたビジークロックサイクルの数など、所望される任意の方法で読み取られることが可能である。
【００８４】
パケット送出論理モジュール514は、第2のコア520および/またはCPU 522のアクティブ作業負荷を「読み取る」ために、第2のコア520のDCVSモジュール524および/またはカウンタ526と直接的に通信することができる。同様に、パケット送出論理モジュール514は、第Nのコア530および/またはCPU 532のアクティブ作業負荷を「読み取る」ために、第Nのコア530のモニタ536と直接的に通信することができる。パケット送出論理モジュール514は、次いで、第2のコア520/CPU522および/または第Nのコア530/CPU 532のアクティブ作業負荷に関する、受信された情報を使用して、データパケットをコア520または530(または、そのそれぞれのCPU 522または532)に速やかに送るべきかどうか、または、データパケットをバッファ518B内に一時的に記憶することによってなど、データパケットを第2のコア520/CPU 522または第Nのコア530/CPU 532に送るのを遅延させるかどうかを決定する。
【００８５】
1つの例示的な実施形態では、第2のコア520/CPU 522のアクティブ作業負荷に関する、受信された情報は、第2のコア520/CPU 522に関するビジー割合であり得る。その実装形態では、パケット送出論理モジュール514は、データパケットを第2のコア520/CPU 522に速やかに送ることが第2のコア520/CPU 522のアクティブ作業負荷の増大をもたらすことになるかどうかを決定し得る。この決定はまた、増大したアクティブ作業負荷が第2のコア520のDCVSモジュール524に、第2のコア520/CPU 522の動作周波数を上げることによってなど、第2のコア520/CPU 522の電力消費を増大させるかどうかを決定することを含み得る。
【００８６】
一実装形態では、パケット送出論理モジュールは、第2のコア520/CPU 522のアクティブ作業負荷が、図2A〜図2Bおよび図3A〜図3Bに関して上で論じた90%しきい値など、所定のしきい値を越えて増大し、第2のコア520/CPU 522の(動作周波数を増大することによってなど)電力消費を増大することをDCVSモジュール524に要求することになるか否かを評価することによって、この決定を実行することができる。この評価は、パケット送出論理モジュール514が宛先処理構成要素の受信されたアクティブ作業負荷割合をしきい値と比較することによって、パケット送出論理モジュール514が、宛先処理構成要素のアクティブ作業負荷割合を受信し、データを速やかに送ることによって引き起こされることになる作業負荷の増大を推定することによって、または任意の他の所望の方法によって行われ得る。
【００８７】
上の例では、第Nのコア530/CPU 532のアクティブ作業負荷に関する受信された情報はまた、第Nのコア530/CPU 532に関するビジー割合であり得、パケット送出論理モジュール514は、第Nのコア530/CPU 532のアクティブ作業負荷に関して同様の決定を行うことができる。しかしながら、第Nのコア530/CPU 532のアクティブ作業負荷に関する受信された情報のタイプは、第2のコア520/CPU 522のアクティブ作業負荷に関する受信された情報と同じ情報タイプでなくてよい。たとえば、パケット送出論理モジュール514は、第Nのコア530/CPU 532のアクティブ作業負荷を示す異なるタイプの情報を第Nのコア530のモニタ536から取得または受信する間に、第2のコア520/CPU 522の作業負荷に関するビジー割合情報を取得または受信することができる。
【００８８】
受信された情報のタイプにかかわらず、パケット送出論理モジュール514は、第2のコア520/CPU 522および第Nのコア530/CPU 532の各々に関して、データパケットを速やかに送ることが、コア520/530および/またはCPU 522/532の動作周波数を増大することによってなど、第2のコア520/CPU 522および/または第Nのコア530/CPU 532の電力消費の増大をもたらすことになるかどうかを決定することになる。その場合、パッケージ送出論理モジュール514は、データパケットを第2のコア520/CPU 522および第Nのコア530/CPU532のうちの1つまたは複数に速やかに送らず、代わりに、データパケットを1つまたは複数のバッファ418B内に記憶することを決定することができる。
【００８９】
パケット送出論理モジュール514は、次いで、パケット送出論理モジュール514がデータパケットを送ることがそれぞれのコア520/530またはCPU 522/532のアクティブ作業負荷を増大することにならないと決定するまで、または、パケット送出論理モジュール514が、データパケットタイミングアウトを回避するために、データパケットは送られなければならないと決定するまで、第2のコア520/CPU 522および/または第Nのコア530/CPU 532のアクティブ作業負荷に関する情報を受信し続けることができる。そのような状況で、パケット送出論理モジュール514は、データパケットをバッファ418Bから適切な宛先コア520/530またはCPU 522/532に送らせることができる。代替として、パケット送出論理モジュール514は、第2のコア520/CPU 522または第Nのコア530/CPU 532に対する共有メモリ呼出しを介してなど、第2のコア520/CPU 522および/または第Nのコア530/CPU 532に共有バッファ418Bからデータパケットを取り出させることができる。
【００９０】
上で論じたように、パケット送出論理モジュール514による、データパケットを第2のコア520/CPU 522または第Nのコア530/CPU 532に送るかどうかの決定は、動作パラメータなど、他の要件に部分的に基づいてもよい。決定を行うときに評価され得る例示的な動作パラメータは、データパケット内に含まれた情報の重要性、データが送られている宛先処理構成要素の性質(すなわち、アクティブアプリケーションまたはGPU)、サービス品質(「QoS」)、バッファの可用性、データをバッファリングする電力「コスト」などを含み得る。パケット送出論理モジュール514による評価または決定は、任意の所望の要因、要件、または最適化成果に重みを与えて、アルゴリズムまたは一連のアルゴリズムによって行われ得るか、またはルックアップテーブルなど、任意の他の所望の手段によって行われ得る。
【００９１】
同様に、図5は2つの宛先処理構成要素(第2のコア520および第Nのコア530)を示すが、いくつかの実施形態では、図5の第1のコア510が、受信されたデータパケットのうちのいくつか、またはすべてを送ることができる複数の宛先処理構成要素が存在し得る。論じたように、パケット送出論理モジュール514は、上記の要因または要件のうちのいずれかに基づいて、または所望のいずれかの追加の要因または要件に基づいて、各宛先処理構成要素に関して独立して、上で説明した決定および/または評価を行うことができる。各宛先処理構成要素に関して決定を行うとき、パケット送出論理モジュール514が同じしきい値を適用すること、同じ要因または要件を評価すること、および/または同様の要因または要件に同じように重み付けすることは不要である。したがって、パケット送出論理モジュール514は、指定されたデータパケットセットは第2のコア520/CPU 522に速やかに送られるべきであるが、第2のコア520/CPU 522が第Nのコア530/CPU 532よりも高いアクティブ作業負荷で現在動作している場合ですら、同じデータパケットは、第Nのコア530/CPU 532(または、いくつかの他の処理構成要素)に速やかに送られるのではなく、バッファリングされるべきであると決定することができる。
【００９２】
加えて、図4のパケット送出論理412および/または図5のパケット送出論理モジュール514による決定はまた、新しい条件を反映するように適応的に変更されてよく、改善された、かつ/またはより正確な最適化およびプロセッサ間通信からの電力消費削減を可能にする。理解しやすいように、本明細書ではPCD 100内のプロセッサ構成要素間の通信に関して説明するが、システム400および500、ならびに方法600(図6a〜図6B)の原理は、任意のコンピュータシステム内のプロセッサ構成要素、プロセッサ、コア、モデムサブシステムなど、他のタイプのプロセッサ構成要素に等しく適用可能である。
【００９３】
図6Aは、PCD内でまたはPCDとともに使用されるプロセッサ構成要素内でなど、動的クロックおよび電圧スケーリング(DCVS)対応プロセッサ間通信を提供するための方法のある例示的な実施形態を説明するフローチャートである。方法600はブロック610から始まり、ここで、処理構成要素またはコアにおいて少なくとも1つのデータパケットを受信する。上で論じたように、処理構成要素は、コア、CPU、DSP、またはPCD 100内の他の処理要素であり得、処理構成要素は、簡単のために、方法600の議論において「コア」と呼ばれる。加えて、第1のコアは、複数のデータパケットを受信することができ、各データパケットは第1のコアによって受信された1つまたは複数のデータストリームの一部である。
【００９４】
ブロック620で、1つまたは複数のデータパケットが別の処理構成要素またはコアによって必要とされ得るかどうかが決定される。説明の目的で、そのような他の処理構成要素は、方法600の議論において、「他のコア」または「宛先コア」と呼ばれる。論じたように、1つまたは複数のデータパケットが他のコアによって必要とされるかどうかの決定は、第1のコアによって、または図4に示した例示的なシステム400内の第1のコア410のCPU 412またはパケット送出論理414など、第1のコアの構成要素によって行われ得る。
【００９５】
他の実装形態では、ブロック620の決定は、第1のコアの外部であるCPUなど、第1のコアの外部の要素または構成要素、または図5に示した例示的なシステム500のパケット送出論理モジュール514によって行われ得る。さらに別の実装形態では、ブロック620は、たとえば、別の構成要素が他のコアもデータパケットのうちのいくつかまたはすべてを必要することになると決定し、データパケットとともに、その情報を第1のコアに通信するなど、第1のコアがデータパケットを受信するのに先立って、または第1のコアがデータパケット受信し始めるのに先立って、もしくはその後に、生じ得る。
【００９６】
ブロック630で、データパケットが送られることになる他のコアが「ビジー」であるかどうかが決定される。この決定は、第1のコアによって、または図4に示した例示的なシステム400内の第1のコア410のパケット送出論理414によってなど、第1のコア内の構成要素によって行われ得る。代替として、ブロック630の決定は図5に示した例示的なシステム500のパケット送出論理モジュール514など、第1のコアの外部の要素または構成要素によって行われ得る。システム400および500に関して上で論じたように、ブロック630におけるそのような決定は、データパケットを速やかに送ることが、任意の宛先コアの動作周波数の増大によってなど、宛先コアにおいて電力消費を増大させることになるかどうかの決定であり得る。
【００９７】
ブロック630での決定は、上で論じたように、宛先コアのアクティブ作業負荷など、宛先コアから受信された、または宛先コアから取得された/読み取られた情報に基づく。図5の例示的なシステムでは、たとえば、パケット送出論理モジュール514は、それぞれのコア520および530ならびに/またはそのそれぞれのCPU 522および532のアクティブ作業負荷を「読み取る」ために、第2のコア520のカウンタ526および第Nのコア530のモニタ536から情報を受信する。アクティブ作業負荷は、第2のコア520/CPU 522および/または第Nのコア530/CPU 522の「ビジー割合」、または第2のコア520/CPU 522および/または第Nのコア530/CPU 532が現在のサンプリング期間内で非アイドルスレッドを実行するのに費やしたビジークロックサイクルの数など、所望される任意の方法で読み取られることが可能である。ブロック630における評価または決定は、アルゴリズムまたは一連のアルゴリズムによって行われ得るか、またはルックアップテーブルなど、任意の他の所望の手段によって行われ得る。
【００９８】
ブロック630での決定が、任意の宛先コアは「ビジー」ではないというものである場合、ブロック640で、データパケットは第1のコアからその宛先コアに速やかに送られ、方法600が戻る。ブロック640でデータパケットを宛先コアに送ることは、所望の任意の方法または手段によって達成され得る。
【００９９】
ブロック630での決定が、宛先コアが「ビジー」であるというものである場合、ブロック650で、方法600はデータパケットを遅延することができると決定する。この決定は、データパケット内に含まれた情報の重要性、データが送られている宛先コア、サービス品質(「QoS」)、バッファの可用性、データをバッファリングすることの電力「コスト」、データが宛先コアに送られない場合、データがタイムアウトになるかどうかなどを含めて、様々な要件および/または要因に少なくとも部分的に基づき得る。上記は、ブロック650の決定を行うときに評価され得る例示的な要因、パラメータ、または要件である。
【０１００】
ブロック650での決定は、たとえば、図4に示したシステム400のパケット送出論理414および/または図5に示したシステム500のパケット送出論理モジュール514に関して上で論じた決定の方法を含めて、任意のハードウェア、ソフトウェア、またはファームウェア構成要素によって、所望される任意の方法で行われ得る。ブロック650での決定は、任意の所望の要因、要件、または最適化成果に重みを与えて、アルゴリズムまたは一連のアルゴリズムによって行われ得るか、またはルックアップテーブルなど、任意の他の所望の手段によって行われ得る。当業者が理解するように、いくつかの実施形態では、ブロック630およびブロック640は別個の決定でない場合がある。代わりに、宛先コアがビジーであるかどうかの決定(ブロック630)およびパケットを遅延することができるかどうかの決定(650)は、図6Aに示した2つの別個の決定/ステップではなく、1つの決定/ステップで行われ得る。
【０１０１】
ブロック650での決定が、任意の宛先コアに対してデータパケットは遅延され得ないというものである場合、ブロック640で、データパケットは第1のコアからその宛先コアに速やかに送られてよく、方法600が戻る。この場合も、ブロック640でデータパケットを宛先コアに送ることは、所望の任意の方法または手段によって達成され得る。
【０１０２】
ブロック650での決定が、データパケットを宛先コアに送ることが遅延され得るというものであるとき、その宛先コアに対するデータパケットはブロック660でバッファリングされる。バッファは、たとえば、図4に示したバッファ418Aおよび418B、または図5に示したバッファ518Aおよび518Bを含めて、任意のタイプのメモリバッファであり得る。同様に、遅延されたデータパケットを送る先のバッファは、第1のコアの内部のバッファであってよく、または第1のコアと1つまたは複数の宛先コアとによって共有される外部バッファを含めて、第1のコアの外部であってもよい。
【０１０３】
ブロック660でデータパケットをバッファリングした後、方法600は続いてブロック630に戻り、バッファリングされたデータパケットが送られるべき宛先コアが依然として「ビジー」であるかどうかのチェックを開始する。したがって、方法600は、条件がバッファリングされたデータパケットが宛先コアに送られることを保証する前に、1つまたは複数の宛先コアが複数回ビジーであるかどうかをチェックすることができる。そのような条件は、たとえば、特定の宛先コアがもはや「ビジー」でないという決定、バッファリングされたデータパケットがまさにタイムアウトするところであり、それによりそれらのデータパケットは送られなければならないという決定、バッファリングし続ける電力コストがデータを宛先コアに送る電力コストを上回るという決定を含み得る。
【０１０４】
バッファリングされたデータパケットが1つまたは複数の宛先コアに送られるべきであるという決定が行われると、ブロック640で、データパケットを所望される任意の方法で適切な宛先コアに送ることができる。たとえば、上記のシステム500を一例として使用すると、パケット送出論理モジュール514は、データパケットをバッファ418Bから適切な宛先コア520/530またはCPU 522/532に送らせることができる。代替として、パケット送出論理モジュール514は、第2のコア520/CPU 522または第Nのコア530/CPU 532に対する共有メモリ呼出しを介してなど、第2のコア520/CPU 522および/または第Nのコア530/CPU 532に共有バッファ418Bからデータパケットを取り出させることができる。
【０１０５】
図6Aは、PCD内でまたはPCDとともに使用されるプロセッサ構成要素内でなど、動的クロックおよび電圧スケーリング(DCVS)対応プロセッサ間通信を提供するための方法のある例示的な実施形態だけを説明する。他の実施形態では、追加のブロックまたはステップを方法600に加えることができる。同様に、いくつかの実施形態では、図6Aに示す様々なブロックまたはステップは、上で論じた図6Aに示した2つの別個のブロック/ステップではなく、ブロック630および650を組み合わせて、1つの決定ブロック/ステップにすることなど、組み合わせること、または省略することが可能である。方法600のそのような変形体は本開示の範囲内である。
【０１０６】
加えて、本発明が説明した通りに機能するように、本明細書で説明したプロセスまたはプロセスフロー内の特定のステップが他のステップよりも先行するのは当然である。しかしながら、そのような順序またはシーケンスが本発明の機能を変えない場合、本発明は、たとえば、上で論じたブロック610の前にブロック620を実行するなど、説明したステップの順序に限定されない。さらに、いくつかのステップが、本発明の範囲から逸脱することなく、他のステップの前、後、またはそれと並行して(実質的に同時に)実行される場合があることを認識されたい。場合によっては、いくつかのステップは、本発明から逸脱することなく、省略されてもよく、または実行されなくてもよい。さらに、「それ以降」、「次いで」、「次に」、「後に」などの語は、ステップの順序を制限することは意図していない。これらの言葉は単に、例示的な方法の説明を理解できるように読者を導くために使用される。
【０１０７】
上で説明した様々な動作および/または方法を様々なハードウェアおよび/もしくはソフトウェア構成要素ならびに/またはモジュールで実行することが可能であり、そのような構成要素および/またはモジュールはそのような動作および/または方法を実行するための手段を提供し得る。概して、対応する等価物であるミーンズプラスファンクションを有する、図に示した方法が存在する場合、動作ブロックは類似に番号付けされたミーンズプラスファンクションに対応する。たとえば、図6Aに示したブロック610〜660は、図6Bに示したミーンズプラスファンクションブロック610'〜660'に対応する。
【０１０８】
さらに、プログラミングに関する当業者は、たとえば、本明細書におけるフローチャートおよび関連する説明に基づいて、難なく、開示した発明を実装施するコンピュータコードを書くことができるか、または実装するのに適したハードウェアおよび/もしくは回路を特定することができる。したがって、特定の1つのセットのプログラムコード命令または詳細なハードウェアデバイスの開示は、本発明の作製方法および使用方法を十分に理解するのに必要であるとは見なされない。特許請求されるプロセッサ実施プロセスの本発明の機能性は、種々のプロセスフローを例示する場合がある図面とともに、上述の説明において、より詳細に説明されている。
【０１０９】
先に示したような1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装することができる。ソフトウェアにおいて実装される場合には、その機能は、非一時的プロセッサ可読媒体のようなコンピュータ可読媒体上に1つまたは複数の命令またはコードとして記憶すること、または送信することができる。コンピュータ可読媒体は、ある場所から別の場所へのプログラムの転送を容易にする任意の媒体を含む、コンピュータ記憶媒体とコンピュータ通信媒体との両方を含む。
【０１１０】
記憶媒体は、コンピュータまたはプロセッサによってアクセスすることができる任意の利用可能な媒体とすることができる。限定はしないが、例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形態で所望のプログラムコードを搬送または記憶するために使用することができ、コンピュータによってアクセスすることができる任意の他の媒体を含むことができる。ディスク(diskおよびdisc)は、本明細書において使用されるときに、コンパクトディスク(disc)(「CD」)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(「DVD」)、フロッピーディスク(disk)およびブルーレイディスク(disc)を含み、diskは通常、データを磁気的に再生し、一方、discは、レーザを用いてデータを光学的に再生する。上記の組合せも、非一時的コンピュータ可読媒体の範囲内に含まれるべきである。
【０１１１】
選択された態様が詳細に図示および説明されたが、以下の特許請求の範囲によって規定されるような本発明から逸脱することなく、本明細書において様々な置換および改変がなされる場合があることは理解されよう。
【符号の説明】
【０１１２】
100  PCD
101  プロセッサ相互通信(PI)モジュール
102  オンチップシステム
103  アナログデジタル変換器(ADC)コントローラ
110  異種マルチコア中央処理装置(CPU)
112  メモリ
114  ネットワークカード
126  アナログ信号プロセッサ
128  ディスプレイコントローラ
130  タッチスクリーンコントローラ
132  ディスプレイ/タッチスクリーン
134  ビデオエンコーダ
136  ビデオ増幅器
138  ビデオポート
140  ユニバーサルシリアルバス(USB)コントローラ
142  USBポート
146  加入者識別モジュール(SIM)カード
148  カメラ、デジタルカメラ
150  ステレオオーディオコーデック
152  オーディオ増幅器
154  第1のステレオスピーカ
156  第2のステレオスピーカ
157A  オンチップ熱センサー、熱センサー
158  マイクロフォン増幅器
160  マイクロフォン
162  周波数変調(FM)ラジオチューナ
164  FMアンテナ
166  ステレオヘッドフォン
168  モデムデバイス/高周波(RF)送受信機、モデムデバイス
170  RFスイッチ
172  RFアンテナ
174  キーパッド
176  マイクロフォン付きモノヘッドセット、モノヘッドセット
178  バイブレータデバイス、バイブレータ
188  電源
222  第0のコア、コア
224  第1のコア、コア
230  第Nのコア、コア
326  GPUコア
410  第1のコア
412  プロセッサCPU、CPU
414  パケット送出論理
418  バッファ
418A  内部バッファ
418B  外部バッファ
420  第2のコア
422  プロセッサCPU、CPU
424  DCVSモジュール
426  カウンタ
428  パケット受信論理
500  システム
510  第1のコア
512  CPU
514  パケット送出論理モジュール
518  バッファ
518A  内部バッファ
518B  外部バッファ
520  第2のコア、コア
522  CPU
524  DCVSモジュール
526  カウンタ
528  パケット受信論理
530  第Nのコア、コア
532  CPU
534  DCVSモジュール
536  モニタ
538  パケット受信論理
【図１】
2017515191.tif 000003
【図２Ａ】
2017515191.tif 000004
【図２Ｂ】
2017515191.tif 000005
【図３Ａ】
2017515191.tif 000006
【図３Ｂ】
2017515191.tif 000007
【図４】
2017515191.tif 000008
【図５】
2017515191.tif 000009
【図６Ａ】
2017515191.tif 000010
【図６Ｂ】
2017515191.tif 000011
【国際調査報告】
2017515191.tif 000012
2017515191.tif 000013