(57)【特許請求の範囲】
【請求項１】
ポータブルコンピューティングデバイスの複数のマスタープロセッサのリソースに対する要求を管理するための方法であって、
マスタープロセッサから、前記マスタープロセッサにサービスするための複数のリソースが識別された旨、および前記複数のリソースについての要求された状態が識別された旨を示すアラートを受信するステップであり、前記複数のリソースの識別、および前記要求された状態の識別が、前記ポータブルコンピューティングデバイスの一部である記憶装置に記憶される、ステップと、
リソースに対する1つまたは複数の以前の要求が完了まで処理されているかどうかを決定するステップと、
リソースに対する前記1つまたは複数の以前の要求が完了まで処理されている場合、前記複数のリソースを識別し、前記リソースの前記要求された状態を識別するために、前記記憶装置の内容をレビューするステップと、
前記複数のリソースに前記リソースの前記識別された要求された状態を渡すステップと、
メタリソースを確立する1つまたは複数の記憶されたテーブルをレビューするステップであり、前記1つまたは複数の記憶されたテーブルが、複数のリソース、および前記リソースに対するステータス変更について前記マスタープロセッサに通知すべきかどうかを示すフィールドを記載する、ステップと
を含む方法。
【請求項２】
前記複数のリソースに前記リソースの前記識別された要求された状態を渡すステップは、前記渡された要求された状態がスリープセットの一部であるか、アクティブセットの一部であるかを決定するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記複数のリソースに前記リソースの前記識別された要求された状態を渡すステップは、前記渡された要求された状態がリソースについてのステータス変更をもたらす場合、前記記憶装置に前記リソースについての新しいステータスを記録するステップをさらに含み、
前記新しいステータスは、前記マスタープロセッサに通知される、請求項1に記載の方法。
【請求項４】
リソースが、1つまたは複数のマスタープロセッサによって実行されるソフトウェアアプリケーションのタスク、コマンド、または特徴をサポートするクロックおよびプロセッサの少なくとも1つを含む、請求項1に記載の方法。
【請求項５】
少なくとも1つのリソースが、少なくとも2つのマスタープロセッサの間で共有されるリソースである、請求項1に記載の方法。
【請求項６】
前記渡された要求された状態がスリープセットの一部である場合、前記渡された要求された状態がリソースの制限を上回るかどうかを決定するステップをさらに含む、請求項2に記載の方法。
【請求項７】
前記渡された要求された状態がリソースの制限を上回る場合、前記渡された要求された状態の値が前記リソースの前記制限内に含まれるように、前記渡された要求された状態の前記値を調整するステップをさらに含む、請求項6に記載の方法。
【請求項８】
前記渡された要求された状態の前記値が調整された旨のアラートを生成するステップをさらに含み、
前記アラートは、前記マスタープロセッサにより読み取られる、請求項7に記載の方法。
【請求項９】
前記複数のリソースに前記リソースの前記識別された要求された状態を渡すステップは、前記ポータブルコンピューティングデバイスの各マスタープロセッサに割り当てられる前記メタリソースにおける値に基づいて、1つまたは複数のマスタープロセッサにリソースについてのステータス変更のアラートを送るステップをさらに含み、
前記マスタープロセッサは、前記記憶装置の内容を読み取る、請求項1に記載の方法。
【請求項１０】
ポータブルコンピューティングデバイスの複数のマスタープロセッサのリソースに対する要求を管理するためのコンピュータシステムであって、
前記マスタープロセッサにサービスするための複数のリソースを識別し、
前記複数のリソースについての要求された状態を識別するように動作可能なマスタープロセッサであって、
前記複数のリソースの識別、および前記要求された状態の識別が、前記ポータブルコンピューティングデバイスの一部である記憶装置に記憶され、前記マスタープロセッサがさらに、
前記複数のリソースおよび前記要求された状態が識別された旨を示すアラートを生成する
ように動作可能なマスタープロセッサと、
前記アラートを受信し、
リソースに対する1つまたは複数の以前の要求が完了まで処理されているかどうかを決定し、
前記1つまたは複数の以前の要求が完了まで処理されている場合、前記複数のリソースを識別し、前記リソースの前記要求された状態を識別するために、前記記憶装置の内容をレビューし、
前記複数のリソースに前記リソースの前記識別された要求された状態を渡し、
メタリソースを確立する1つまたは複数の記憶されたテーブルをレビューするように動作可能なコントローラであって、前記1つまたは複数の記憶されたテーブルが、複数のリソース、および前記リソースに対するステータス変更について前記マスタープロセッサに通知すべきかどうかを示すフィールドを記載する
ように動作可能なコントローラと
を含むコンピュータシステム。
【請求項１１】
前記複数のリソースに前記リソースの前記識別された要求された状態を渡す動作は、
前記渡された要求された状態がスリープセットの一部であるか、アクティブセットの一部であるかを決定する
動作をさらに含み、請求項10に記載のシステム。
【請求項１２】
前記複数のリソースに前記リソースの前記識別された要求された状態を渡す動作は、
前記渡された要求された状態がリソースについてのステータス変更をもたらす場合、前記記憶装置に前記リソースについての新しいステータスを記録する
動作をさらに含み、前記新しいステータスは、前記マスタープロセッサに通知される、請求項10に記載のシステム。
【請求項１３】
リソースが、1つまたは複数のマスタープロセッサによって実行されるソフトウェアアプリケーションのタスク、コマンド、または特徴をサポートするクロックおよびプロセッサの少なくとも1つを含む、請求項10に記載のシステム。
【請求項１４】
少なくとも1つのリソースが、少なくとも2つのマスタープロセッサの間で共有されるリソースである、請求項10に記載のシステム。
【請求項１５】
前記コントローラが、
前記渡された要求された状態がスリープセットの一部である場合、前記渡された要求された状態がリソースの制限を上回るかどうかを決定する
ように動作可能である、請求項11に記載のシステム。
【請求項１６】
前記渡された要求された状態がリソースの制限を上回る場合、前記コントローラがさらに、前記渡された要求された状態の値が前記リソースの前記制限内に含まれるように前記渡された要求された状態の前記値を調整するように動作可能である、請求項15に記載のシステム。
【請求項１７】
前記コントローラがさらに、
前記渡された要求された状態の前記値が調整された旨のアラートを生成する
ように動作可能であり、前記アラートは、前記マスタープロセッサにより読み取られる、請求項16に記載のシステム。
【請求項１８】
前記複数のリソースに前記リソースの前記識別された要求された状態を渡す動作は、
前記ポータブルコンピューティングデバイスの各マスタープロセッサに割り当てられる前記メタリソースにおける値に基づいて、1つまたは複数のマスタープロセッサにリソースについてのステータス変更のアラートを送る
動作をさらに含み、前記マスタープロセッサは、前記記憶装置の内容を読み取る、請求項10に記載のシステム。
【請求項１９】
ワイヤレスハンドヘルドコンピューティングデバイスの1つまたは複数のメモリリソースを管理するためのコンピュータシステムであって、
マスタープロセッサから、前記マスタープロセッサにサービスするための複数のリソースが識別された旨、および前記複数のリソースについての要求された状態が識別された旨を示すアラートを受信するための手段であり、前記複数のリソースの識別、および前記要求された状態の識別が、前記ワイヤレスハンドヘルドコンピューティングデバイスの一部である記憶手段に記憶される、手段と、
1つまたは複数の以前の要求が完了まで処理されているかどうかを決定するための手段と、
前記1つまたは複数の以前の要求が完了まで処理されている場合、前記複数のリソースを識別し、前記リソースの前記要求された状態を識別するために、前記記憶手段の内容をレビューするための手段と、
前記複数のリソースに前記リソースの前記識別された要求された状態を渡すための手段と、
メタリソースを確立する1つまたは複数の記憶されたテーブルをレビューするための手段であり、前記1つまたは複数の記憶されたテーブルが、複数のリソース、および前記リソースに対するステータス変更について前記マスタープロセッサに通知すべきかどうかを示すフィールドを記載する、手段と
を含むコンピュータシステム。
【請求項２０】
前記複数のリソースに前記リソースの前記識別された要求された状態を渡すための手段は、前記渡された要求された状態がスリープセットの一部であるか、アクティブセットの一部であるかを決定するための手段
をさらに含む、請求項19に記載のシステム。
【請求項２１】
前記複数のリソースに前記リソースの前記識別された要求された状態を渡すための手段は、前記渡された要求された状態がリソースについてのステータス変更をもたらす場合、前記記憶手段に前記リソースについての新しいステータス状態を記録するための手段をさらに含み、
前記新しいステータスは、前記マスタープロセッサに通知される、請求項19に記載のシステム。
【請求項２２】
リソースが、1つまたは複数のマスタープロセッサによって実行されるソフトウェアアプリケーションのタスク、コマンド、または特徴をサポートするクロックおよびプロセッサの少なくとも1つを含む、請求項19に記載のシステム。
【請求項２３】
少なくとも1つのリソースが、少なくとも2つのマスタープロセッサの間で共有されるリソースである、請求項19に記載のシステム。
【請求項２４】
前記渡された要求された状態がスリープセットの一部である場合、前記渡された要求された状態がリソースの制限を上回るかどうかを決定するための手段をさらに含む、請求項20に記載のシステム。
【請求項２５】
前記渡された要求された状態がリソースの制限を上回る場合、前記渡された要求された状態の値が前記リソースの前記制限の範囲内に含まれるように前記渡された要求された状態の値を調整するための手段
をさらに含む、請求項24に記載のシステム。
【請求項２６】
前記渡された要求された状態の前記値が調整された旨のアラートを生成するための手段
をさらに含み、
前記アラートは、前記マスタープロセッサにより読み取られる、請求項25に記載のシステム。
【請求項２７】
前記複数のリソースに前記リソースの前記識別された要求された状態を渡すための手段は、前記ワイヤレスハンドヘルドコンピューティングデバイスの各マスタープロセッサに割り当てられる前記メタリソースにおける値に基づいて、1つまたは複数のマスタープロセッサにリソースについてのステータス変更のアラートを送るための手段をさらに含み、
前記マスタープロセッサは、前記記憶手段の内容を読み取る、請求項19に記載のシステム。
【請求項２８】
コンピュータシステムのコントローラに操作を実行させるように構成されたソフトウェア命令を記録した、コンピュータ可読記録媒体であって、前記操作が、
ポータブルコンピューティングデバイスのマスタープロセッサから、前記マスタープロセッサにサービスするための複数のリソースが識別された旨、および前記複数のリソースについての要求された状態が識別された旨を示すアラートを受信するステップであり、前記複数のリソースの識別、および前記要求された状態の識別が、前記ポータブルコンピューティングデバイスの一部である記憶装置に記憶される、ステップと、
リソースに対する1つまたは複数の以前の要求が完了まで処理されているかどうかを決定するステップと、
リソースに対する前記1つまたは複数の以前の要求が完了まで処理されている場合、前記複数のリソースを識別し、前記リソースの前記要求された状態を識別するために、前記記憶装置の内容をレビューするステップと、
前記複数のリソースに前記リソースの前記識別された要求された状態を渡すステップと、
メタリソースを確立する1つまたは複数の記憶されたテーブルをレビューするステップであり、前記1つまたは複数の記憶されたテーブルが、複数のリソース、および前記リソースに対するステータス変更について前記マスタープロセッサに通知すべきかどうかを示すフィールドを記載する、ステップと
を含む、コンピュータ可読記録媒体。
【請求項２９】
前記複数のリソースに前記リソースの前記識別された要求された状態を渡すステップは、前記渡された要求された状態がスリープセットの一部であるか、アクティブセットの一部であるかを決定するステップ
をさらに含む、請求項28に記載のコンピュータ可読記録媒体。
【請求項３０】
前記複数のリソースに前記リソースの前記識別された要求された状態を渡すステップは、前記渡された要求された状態がリソースについてのステータス変更をもたらす場合、前記記憶装置に前記リソースについての新しいステータスを記録するステップをさらに含み、前記新しいステータスは、前記マスタープロセッサに通知される、請求項28に記載のコンピュータ可読記録媒体。
【請求項３１】
リソースが、1つまたは複数のマスタープロセッサによって実行されるソフトウェアアプリケーションのタスク、コマンド、または特徴をサポートするクロックおよびプロセッサの少なくとも1つを含む、請求項28に記載のコンピュータ可読記録媒体。
【請求項３２】
少なくとも1つのリソースが、少なくとも2つのマスタープロセッサの間で共有されるリソースである、請求項28に記載のコンピュータ可読記録媒体。
【請求項３３】
前記渡された要求された状態がスリープセットの一部である場合、前記渡された要求された状態がリソースの制限を上回るかどうかを決定するステップ
をさらに含む、請求項29に記載のコンピュータ可読記録媒体。
【請求項３４】
前記渡された要求された状態がリソースの制限を上回る場合、前記渡された要求された状態の値が前記リソースの前記制限の範囲内に含まれるように前記渡された要求された状態の値を調整するステップ
をさらに含む、請求項33に記載のコンピュータ可読記録媒体。
【請求項３５】
前記渡された要求された状態の前記値が調整された旨のアラートを生成するステップをさらに含み、前記アラートは、前記マスタープロセッサにより読み取られる、請求項34に記載のコンピュータ可読記録媒体。
【請求項３６】
前記複数のリソースに前記リソースの前記識別された要求された状態を渡すステップは、前記ポータブルコンピューティングデバイスの各マスタープロセッサに割り当てられる前記メタリソースにおける値に基づいて、1つまたは複数のマスタープロセッサにリソースについてのステータス変更のアラートを送るステップをさらに含み、前記マスタープロセッサは、前記記憶装置の内容を読み取る、請求項28に記載のコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権および関連出願に関する陳述
本出願は、「Method and system for managing resources within a portable computing device」と題する2010年12月21日に出願された米国仮特許出願第61/425,683号に対する米国特許法第119条(e)項に基づく優先権を主張する。この米国仮特許出願の内容全体が、参照により本明細書に組み込まれる。
【背景技術】
【０００２】
ポータブルコンピューティングデバイス(「PCD」)は、個人レベルおよび専門レベルにおいて人々に必要なものになりつつある。これらのデバイスは、セルラー電話、携帯情報端末(「PDA」)、ポータブルゲームコンソール、パームトップコンピュータ、および他のポータブル電子デバイスを含み得る。
【０００３】
PCDは通常、中央処理装置、デジタル信号プロセッサなどを含む複数の処理ユニットから一般的に作られる複雑でコンパクトな電子パッケージングを有する。従来のPCDは、現在、当業者によって理解されるように、リモートプロシージャ呼出し(「RPC」)プロトコルを使用している。RPCプロトコルは、PCD内の異なる処理ユニットの間のリソース要求を管理する。RPCプロトコルに関する1つの問題は、プロトコルがPCD内の複数の処理ユニットの間のリソース要求を管理するのが非常に遅いことが多いことである。RPCプロトコルに関する別の問題は、PCDがバッテリー電力を節約するのに重要である低レベルの電力状態を、プロトコルが効率的にサポートすることができないということである。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
したがって、当技術分野では、さらなるエネルギー保存を達成しながら、PCD内の複数の処理ユニットの間のリソース要求をより効率的に管理するための方法およびシステムが必要である。また、当技術分野では、処理ユニットの間の要求が処理され得る速度を上げるプロセッサ間通信プロトコルも必要である。
【課題を解決するための手段】
【０００５】
ポータブルコンピューティングデバイス(「PCD」)のプロセッサの間のリソースに対する要求を管理するための方法およびシステムは、各マスタープロセッサが、メッセージRAMなどの記憶装置におけるPCDの複数のリソースを識別することを含む。このメッセージRAMは、PCDの一部である。マスタープロセッサは、メッセージRAMにおける複数のリソースに望ましい状態を識別することができる。次いで、マスタープロセッサは、複数のリソース、およびリソースに望ましい状態が設定されている旨のアラートを生成することができる。アラートを受信した後、コントローラは、1つまたは複数の以前の要求が完了まで処理されているかどうかを決定することができる。そうである場合、コントローラは、複数のリソースを識別し、リソースの望ましい状態を識別するために、メッセージRAMの内容をレビューすることができる。
【０００６】
適切なとき、コントローラは、複数のリソースに、望ましい状態を渡すことができる。コントローラは、望ましい状態がリソースの制限を上回るかどうかを決定することもでき、望ましい状態が制限を上回る場合、コントローラは、値がリソースの制限内に含まれるように、望ましい状態の値を調整することができる。
【０００７】
システムは、テーブルを含むメタリソースを確立するステップも含む。このテーブルは、複数のリソースと、リソースに対するステータス変更についてコントローラによってプロセッサに通知すべきかどうかを示すフィールドとを記載することができる。PCDの各マスタープロセッサに割り当てられるメタリソース内の値に基づいて、コントローラは、リソースについてのステータス変更のアラートを1つまたは複数のプロセッサに送ることができる。
【０００８】
図中、別段に規定されていない限り、同様の参照番号は、様々な図の全体を通じて、同様の部分を指す。「102A」または「102B」のような文字指定を伴う参照番号について、文字指定は、同じ図に存在する2つの同様の部分または要素を区別し得る。参照番号の文字指定は、参照番号が、すべての図において同じ参照番号を有するすべての部分を包含することが意図される場合には、省略されることがある。
【図面の簡単な説明】
【０００９】
【図１】ポータブルコンピューティングデバイス(PCD)の一実施形態を示す機能ブロック図である。
【図２】コントローラ、マスタープロセッサ、低レベルドライバ、共有リソース、およびローカルリソースの間の関係を示す機能ブロック図である。
【図３】コントローラおよびメッセージRAMに関する詳細を示す機能ブロック図である。
【図４Ａ】1つまたは複数のマスタープロセッサの間の要求を管理するための方法を示す論理フローチャートである。
【図４Ｂ】1つまたは複数のマスタープロセッサの間の要求を管理するための方法を示す論理フローチャートである。
【図５】要求からリソースの状態を識別し、適切なとき、リソースに状態を渡すためのサブメソッドまたはルーチンを示す論理フローチャートである。
【図６】リソースについての制限外の要求を処理するためのサブメソッドまたはルーチンを示す図である。
【図７Ａ】プロセッサについての通知メタリソースの一部であるテーブルを示す図である。
【図７Ｂ】プロセッサについての通知メタリソースの一部であるテーブルを示す図である。
【図８】通知メタリソースを管理するためのサブメソッドまたはサブルーチンを示す論理フローチャートである。
【発明を実施するための形態】
【００１０】
「例示的な」という語は、「例、実例、または具体例としての役割を果たすこと」を意味するように本明細書において用いられている。「例示的な」ものとして本明細書で説明する何らかの態様は、必ずしも他の態様よりも好ましい、または有利であると解釈されるわけではない。
【００１１】
本明細書では、「アプリケーション」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなど、実行可能なコンテンツを有するファイルを含むこともある。加えて、本明細書で言及する「アプリケーション」は、開封される必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなど、本質的に実行可能ではないファイルを含むこともある。
【００１２】
「コンテンツ」という用語は、オブジェクトコード、スクリプト、バイトコード、マークアップ言語ファイル、およびパッチなど、実行可能なコンテンツを有するファイルを含むこともある。加えて、本明細書で言及する「コンテンツ」は、開封される必要があり得るドキュメント、またはアクセスされる必要がある他のデータファイルなど、本質的に実行可能ではないファイルを含むこともある。
【００１３】
本明細書で使用される場合、「構成要素」、「データベース」、「モジュール」、「システム」などの用語は、ハードウェア、ファームウェア、ハードウェアとソフトウェアの組合せ、ソフトウェア、実行中のソフトウェアを問わず、コンピュータ関連のエンティティを指すことが意図されている。たとえば構成要素は、プロセッサ上で作動しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラムおよび/またはコンピュータであってよいが、これらであることに限定されない。例を挙げると、コンピューティングデバイス上で作動しているアプリケーションとコンピューティングデバイスの両方が構成要素であり得る。1つまたは複数の構成要素は、プロセスおよび/または実行スレッド内に存在してよく、1つの構成要素を1つのコンピュータに局在化すること、および/または2つ以上のコンピュータ間に分散することが可能である。加えて、これらの構成要素は、様々なデータ構造を記憶している様々なコンピュータ可読媒体から実行することができる。構成要素は、1つまたは複数のデータパケット(たとえば、信号によりローカルシステム、分散システムにおいて別の構成要素と対話し、かつ/または他のシステムとインターネットなどのネットワークにわたって対話する、1つの構成要素からのデータ)を有する信号に従うなどしてローカルプロセスおよび/またはリモートプロセスにより通信することができる。
【００１４】
本明細書では、「通信デバイス」、「ワイヤレスデバイス」、「ワイヤレス電話」、「ワイヤレス通信デバイス」、および「ワイヤレスハンドセット」という用語は交換可能に用いられる。第3世代(「3G」)および第4世代(「4G」)のワイヤレス技術が出現したことによって、利用可能な帯域が拡大されたので、より多くのワイヤレス機能を備えたより携帯が容易なコンピューティングデバイスが利用可能になっている。
【００１５】
本明細書では、「ポータブルコンピューティングデバイス」(「PCD」)という用語は、バッテリーなど限られた容量の電源で動作する任意のデバイスを説明するために使用される。何十年もの間バッテリー式PCDが使用されてきたが、第3世代(「3G」)および第4世代(「4G」)ワイヤレス技術の出現とともにもたらされた充電式バッテリーの技術的進歩は、複数の機能を有する多数のPCDを可能にした。したがって、PCDは、中でも、セルラー電話、衛星電話、ページャ、PDA、スマートフォン、ナビゲーションデバイス、スマートブックまたはリーダー、メディアプレーヤ、上述したデバイスの組合せ、およびワイヤレス接続を有するラップトップコンピュータであってよい。
【００１６】
図1:PCD100のプロセッサ間通信要素
図1を参照すると、この図は、PCD100のプロセッサ110、126の間のリソースを管理するための方法およびシステムを実現するためのワイヤレス電話の形態によるPCD100の例示的で非限定的な態様の機能ブロック図である。図示のように、PCD100は、マルチコアである第1の中央処理装置(「CPU」)110A、シングルコアタイプである第2のCPU110B、およびアナログ信号プロセッサ126を含むオンチップシステム102を含む。これらのプロセッサ110A、110B、および126は連結され得る。第1のCPU110Aは、当業者によって理解されるように第0のコア222、第1のコア224、および第Nのコア230を含むことができる。代替実施形態では、2つのCPU110を使用する代わりに、当業者によって理解されるように2つのデジタル信号プロセッサ(「DSP」)を用いることもできる。
【００１７】
図1は、1つまたは複数のコントローラモジュール101を含む。この説明の残り部分では、コントローラモジュール101を複数形ではなく単数形でコントローラ101と呼ぶ。当業者は、本発明から逸脱することなく、コントローラ101を様々な部分に分割し、異なるプロセッサ110、126によって実行することができることを認識されよう。代替的に、コントローラ101を、単一の要素として編成し、単一のプロセッサ110または126によって実行することができる。
【００１８】
コントローラ101は、CPU110によって実行されるソフトウェアを含むことができる。ただし、コントローラ101は、当業者によって理解されるように、ハードウェアおよび/またはファームウェアから形成されてもよい。
【００１９】
一般に、コントローラ101は、CPU110およびプロセッサ126から発するリソースについての要求を管理するなど、プロセッサ間通信をサポートする役目を果たし得る。例示的な一実施形態では、コントローラ101は、1つまたは複数のマスタープロセッサ110、126の間のリソース要求を管理するプロセッサ間通信プロトコルをサポートする。リソース要求は、リソースによるアクションまたは機能を要求するために、マスタープロセッサ110によって出され得る。
【００２０】
リソースは、1つまたは複数のマスタープロセッサ110、126によって実行されるソフトウェアアプリケーションのタスク、コマンド、および特徴をサポートするクロックおよび他の低レベルプロセッサを含むことができる。コントローラ101は、複数のマスタープロセッサ110、126の間のリソース要求競合を防ぐように設計され得る。
【００２１】
図1は、PCD100がメモリまたはメッセージRAM112を含み得ることを示している。以下でさらに詳細に説明するように、CPU110上で動作するコントローラ101は、メッセージRAM112にアクセスして、リソース105を管理することができる(図2参照)。
【００２２】
特定の態様において、本明細書で説明する方法ステップのうちの1つまたは複数は、コントローラ101を形成するメモリ112に記憶された実行可能命令およびパラメータによって実施され得る。コントローラ101を形成するこれらの命令は、CPU110、アナログ信号プロセッサ126、または別のプロセッサによって実行され得る。さらに、プロセッサ110、126、メモリ112、メモリ112に記憶された命令、またはそれらの組合せは、本明細書で説明する方法ステップのうちの1つまたは複数を実行するための手段として動作し得る。
【００２３】
図1:PCD100の他の要素
図1に示すように、CPU110は、1つまたは複数の内蔵オンチップまたは外部オフチップ熱センサ157に結合することもできる。オンチップ熱センサ157は、垂直PNP構造に基づく、通常、相補型金属酸化膜半導体(「CMOS」)超大規模集積(「VLSI」)回路専用である1つまたは複数の絶対温度比例(「PTAT」)温度センサを備え得る。オフチップ熱センサ157は、1つまたは複数のサーミスタを備え得る。熱センサ157は、アナログデジタル変換器(「ADC」)コントローラでデジタル信号に変換される電圧降下を引き起こし得る。しかしながら、当業者によって理解されるように、他のタイプの熱センサ157を使用することができる。
【００２４】
ディスプレイコントローラ128およびタッチスクリーンコントローラ130が、デジタル信号プロセッサ110に結合される。オンチップシステム102の外部にあるタッチスクリーンディスプレイ132が、ディスプレイコントローラ128およびタッチスクリーンコントローラ130に結合される。
【００２５】
図1は、ビデオコーダ/デコーダ(「コーデック」)134、たとえば、位相反転線(「PAL」)エンコーダ、順次式カラーメモリ(「SECAM」)エンコーダ、全国テレビジョン方式委員会(「NTSC」)エンコーダ、または任意の他のタイプのビデオエンコーダ134を含むポータブルコンピューティングデバイス(PCD)の一実施形態を示す概略図である。ビデオコーデック134は、マルチコア中央処理装置(「CPU」)110に結合される。ビデオ増幅器136が、ビデオエンコーダ134およびタッチスクリーンディスプレイ132に結合される。ビデオポート138がビデオ増幅器136に結合される。図1に示すように、ユニバーサルシリアルバス(「USB」)コントローラ140がCPU110に結合される。また、USBポート142がUSBコントローラ140に結合される。加入者識別モジュール(SIM)カード146も、CPU110に結合され得る。さらに、図1に示すように、デジタルカメラ148がCPU110に結合され得る。例示的な態様では、デジタルカメラ148は、電荷結合デバイス(「CCD」)カメラまたは相補型金属酸化膜半導体(「CMOS」)カメラである。
【００２６】
図1にさらに示すように、ステレオオーディオコーデック150がアナログ信号プロセッサ126に結合され得る。さらに、オーディオ増幅器152がステレオオーディオコーデック150に結合され得る。例示的な態様では、第1のステレオスピーカー154および第2のステレオスピーカー156がオーディオ増幅器152に結合される。図1は、マイクロフォン増幅器158もステレオオーディオコーデック150に結合され得ることを示している。加えて、マイクロフォン160がマイクロフォン増幅器158に結合され得る。特定の態様では、周波数変調(「FM」)ラジオチューナー162がステレオオーディオコーデック150に結合され得る。また、FMアンテナ164がFMラジオチューナー162に結合される。さらに、ステレオヘッドフォン166がステレオオーディオコーデック150に結合され得る。
【００２７】
図1は、無線周波(「RF」)トランシーバ168がアナログ信号プロセッサ126に結合され得ることをさらに示している。RFスイッチ170がRFトランシーバ168およびRFアンテナ172に結合され得る。図1に示されるように、キーパッド174がアナログ信号プロセッサ126に結合され得る。また、マイクロフォンを備えたモノヘッドセット176がアナログ信号プロセッサ126に結合され得る。さらに、バイブレータデバイス178がアナログ信号プロセッサ126に結合され得る。図1は、たとえばバッテリーなどの電源180がオンチップシステム102に結合されることも示している。特定の態様では、電源180は、充電式DCバッテリー、または交流(「AC」)電源に接続されたAC-DC変換器から導かれるDC電源を含む。
【００２８】
図1に示されるように、タッチスクリーンディスプレイ132、ビデオポート138、USBポート142、カメラ148、第1のステレオスピーカー154、第2のステレオスピーカー156、マイクロフォン160、FMアンテナ164、ステレオヘッドフォン166、RFスイッチ170、RFアンテナ172、キーパッド174、モノヘッドセット176、バイブレータ178、熱センサ157B、および電源180は、オンチップシステム322の外部にある。
【００２９】
図2は、コントローラ101、マスタープロセッサ110、126、低レベルドライバ103、共有リソース105A〜C、およびローカルリソース105D〜Hの間の関係を示す機能ブロック図である。この図は、タッチスクリーン132がどのようにタッチスクリーンドライバ/コントローラ130に結合され得るかについて示す。タッチスクリーンドライバ/コントローラ130は、第1のマスタープロセッサ110Aのクロックコード113Aに結合され得る。
【００３０】
第1のマスタープロセッサ110Aは、メッセージRAM112およびコントローラ101に結合され得る。コントローラ101は、第1のマスタープロセッサ110Aのクロックコード113Aに結合することができ、コントローラ101は、1つまたは複数の低レベルドライバ103を備え得る。1つまたは複数の低レベルドライバ103は、1つまたは複数の共有リソース105A〜Cと通信する役目を果たすことができる。共有リソース105A〜Cは、マスタープロセッサ110のタスクまたは機能をサポートする任意のタイプのデバイスを含むことができる。共有リソース105A〜Cは、グラフィカルプロセッサ、デコーダなどの単一の機能要素および他のプロセッサのクロックのようなデバイスを含むことができる。
【００３１】
共有リソース105A〜Cは、1つまたは複数のローカルリソース105D〜Hに結合され得る。1つまたは複数のローカルリソース105D〜Hは、マスタープロセッサ110のタスクまたは機能をサポートする任意のタイプのデバイスを含み得るという点で、共有リソース105A〜Cに類似していてよい。ローカルリソース105D〜Hは、グラフィカルプロセッサ、デコーダなどの単一の機能要素および他のプロセッサのクロックのようなデバイスを含むことができる。ローカルリソース105D〜Hは、リーフノードを含むことができる。リーフノードは、他のリソース105を参照せず、または依存しないローカルリソース105D〜Hとして当業者によって理解される。
【００３２】
コントローラ101は、1つまたは複数のマスタープロセッサ110、126から出される要求を管理する役目を果たすことができる。たとえば、コントローラ101は、第1のマスタープロセッサ110Aから生じる要求を管理することができる。第1のマスタープロセッサ110Aは、オペレータがタッチスクリーン132を操作したことに応答して、この要求を出すことができる。タッチスクリーン132は、タッチスクリーンドライバ/コントローラ130に信号を出すことができる。そして、タッチスクリーンドライバ/コントローラ130は、第1のマスタープロセッサ110Aのクロックコード113Aに信号を出すことができる。
【００３３】
図2に示した例示的な実施形態では、最初にマスタープロセッサ110Aがコントローラ101に要求を発行する前に、第1のマスタープロセッサ110Aは、以下でさらに詳細に説明するように、メッセージRAM112に情報を送る。第1のマスタープロセッサ110Aは、メッセージRAM112に情報を送った後、次いで、メッセージRAM112に記憶される情報をレビューする旨の要求をコントローラ101に発行する。
【００３４】
メッセージRAM112内に含まれている情報に基づいて、コントローラ101は、第1のマスタープロセッサ110Aから発せられた要求を1つまたは複数の低レベルドライバ103に対して発行することができる。次に、低レベルドライバ103は、1つまたは複数の共有リソース105A〜Cに対してコマンドを発行する。
【００３５】
図3は、プロセッサ間通信システム300を形成するコントローラ101およびメッセージRAM112に関する詳細を示す機能ブロック図である。コントローラ101は、図2に示した例示的な実施形態と同様に、第1のマスタープロセッサ110Aおよび第2のマスタープロセッサ110Bに結合することができる。コントローラ101は、要求割込みライン109A、Bおよび肯定応答割込みライン107A、Bによってこれらのプロセッサ110A、110Bに結合することができる。
【００３６】
コントローラ101は、メッセージランダムアクセスメモリ(「RAM」)112に結合することもできる。第1のマスタープロセッサ110Aおよび第2のマスタープロセッサ110BもメッセージRAM112に結合することができる。例示的な実施形態はRAMタイプを使用するが、当業者は諒解されるように、他のメモリデバイスまたはメモリデバイスの組合せを使用することができる。他のメモリデバイスは、限定はしないが、ダイナミックランダムアクセスメモリ(「DRAM」)「オフチップ」102、スタティックランダムアクセスメモリ(「SRAM」)「オンチップ」122、キャッシュメモリ、電気的消去可能プログラマブル(「EEPROM」)などを含む。
【００３７】
コントローラ101は、1つまたは複数の構成セット311、313を備える1つまたは複数のテーブル307をその内部メモリにおいて維持することができる。コントローラの内部メモリは、たとえばRAMなどのメモリデバイスを備えることができる。1つまたは複数の構成セット311、313は、特定のマスタープロセッサ110によって関連付けられ、必要とされるリソース105の様々な状態を記載する。
【００３８】
たとえば、テーブル307は、リスト309に列挙される複数のリソース105についての状態を記載する第1の構成セット311Aおよび第2の構成セット313Aを含む。この第1の構成セット311Aおよび第2の構成セット313Aを、図2の第1のマスタープロセッサ110Aに割り当てることができる。一方、第3の構成セット311Bおよび第4の構成セット313Bを、図2の第2のマスタープロセッサ110Bに割り当てることができる。
【００３９】
各構成セット311、313は、特定のリソース105についてのマスタープロセッサ110によって望まれる状態を記載する。図3に示した例示的な構成セット311、313は、特定のリソース105が特定の状態についての1つまたは複数の設定値を有することができることを示す。たとえば、図3に示したように、第1の構成セット311Aについての第1のローカルリソース(ローカルリソース#1)は、少なくとも4つの設定値を備える。これらの設定値は、リソース105の特定の状態に対応する数値を備え得る。一方、第1の共有リソース(#1)は、構成セット311、313ごとに、単一の設定値を備えることができるだけである。
【００４０】
図3に示した例示的な実施形態では、0は「オフ」状態を示すことができ、数字1は「オン」状態を示すことができる。数値は、バイナリ状態のみに限られるのではなく、英数字、および何百または数千の数値など、他の値を含むことができる。たとえば、数値は、当業者によって理解されるように、MHzまたはGHzでクロック速度を示すために、100または200のような設定値を含むことができる。
【００４１】
各第1の構成セット311は、プロセッサ110が通常のやり方で動作している間の特定のマスタープロセッサ110についてのデフォルトのセットであるアクティブセットを備える。マスタープロセッサ110に対応する各第2の構成セット313は、特定のプロセッサ110についての低レベルの消費電力またはスリープ状態用に指定されたセットであるスリープセットを備えることができる。図3に示したように、コントローラ101は、メッセージRAM112に結合される。メッセージRAM112は、リソースステータスセクション315を含む第1の部分301を含み得る。リソースステータスセクション315は、コントローラ101によって管理されるすべてのリソース105の現在のアグリゲート状態を記載する。図3に示した例示的な実施形態のリソースステータスセクション315は、単一のカラムを有するテーブルを備えることができる。この単一のカラムのテーブルは、コントローラ101によって管理され得る各リソース105のステータスに対応する値を記載する。
【００４２】
図3に示した例示的な実施形態において、ステータスセクション315は、第1の共有リソース(#1)105Aが「1」のステータス値を有し、第2の共有リソース(#2)105Bが「1」のステータス値を有することを反映する。N番目の共有リソース(#N)105Cは、「0」のステータス値を有し、第1のローカルリソース(#1)105Dは、それぞれ「1、0、1、および1」の4つのステータス値を有する。図3の例示的な実施形態のリソースステータスセクション315にはリソース105が4つのみ示されているが、通常、コントローラ101によって管理されるすべてのリソース105がリソースステータスセクション315に提示されることを当業者であれば理解する。
【００４３】
リソースステータスセクション315は、コントローラ101によってアクセスすることができる。コントローラ101は、リソースステータスセクション315に対する書込みおよび読取りを行うことができる。一方、各マスタープロセッサ110は、特定のプロセッサ110、126に関係のあるリソース105のステータスを取得するために、リソースステータスセクション315から情報を読み取ることができるだけである。
【００４４】
メッセージRAM112は、マスター当たりの領域とも呼ばれる追加の部分303をさらに備え得る。マスター当たりの領域303は、各マスタープロセッサ110、126、および単一のマスタープロセッサ110、126から発行される要求に対応する。
【００４５】
たとえば、メッセージRAM112の第1のマスター当たりの領域303Aは、第1のマスタープロセッサ110Aから発せられる要求および動作と直接対応するサブセクション318A、333Aおよび336Aを備え得る。同様に、メッセージRAM112の第2のマスター当たりの領域303Bは、第2の制御セクション318B、ならびに、メッセージRAM112の第2のマスター当たりの領域303Aに設けられている3つと類似した他のもの(図示せず)などのサブセクションを備えることもできる。
【００４６】
メッセージRAM112の各マスター当たりの領域303は、単一のマスタープロセッサ110、126からの要求の状態を追跡する。メッセージRAM112内の各マスター当たりの領域303の3つのサブセクションは、制御セクション318、要求セクション333、および肯定応答セクション336を含む。
【００４７】
各制御セクション318は、変更要求フィールド321、リソース指示要求フィールド324、リソース指示肯定応答フィールド327、および変更肯定応答フィールド330の少なくとも4つのステータスフィールドを備え得る。コントローラ101および割り当てられた、単一のマスタープロセッサ110または126は、この制御セクション内に含まれているフィールドに対する読取りおよび書込みを行うことができる。したがって、第1のマスタープロセッサ110Aに割り当てられた第1の制御セクション318Aについて、第1のマスタープロセッサ110Aおよびコントローラ101、ならびに第1のマスタープロセッサ110Aのみおよびコントローラ101(任意の他のマスター110でない)は両方、制御セクション318Aの4つのフィールド321、324、327、および330に対する読取りおよび書込みを行うことができる。
【００４８】
メッセージRAM112の第1のマスター当たりの領域303Aの第2のサブセクション333Aは、要求セクション333Aを備え得る。第1のマスター当たりの領域303Aの制御セクション318Aと同様に、コントローラ101および第1のマスタープロセッサ110Aのみは、要求セクション333Aと対話することができる。しかし、割り当てられたマスタープロセッサ110Aのみは、要求セクション333Aに書き込むことができる。コントローラ101は、要求セクション333A内に含まれる値を読み取ることができるだけである。図3に示される例示的な実施形態では、第1の共有リソース(SR#1)105Aは、「0」の要求セクションステータス値を有する。第2の共有リソース(SR#2)105Bも、「0」のステータス値を有する。N番目の共有リソース(SR#N)は、「1」のステータス値を有し、第1のローカルリソース(LR#1)は、4つの0のステータス値を有する。
【００４９】
第3のサブセクション336Bは、肯定応答セクション336Bである。第1のマスター当たりの領域303Aの肯定応答セクション336Bは、特定のリソース105になされる以前の要求に対応する値を記載する。通常、この肯定応答セクション336Bの値は、要求セクション333Aに提供される値をミラーリングする。
【００５０】
図4Aおよび図4Bは、1つまたは複数のマスタープロセッサ110、126の間の要求を管理するための方法400を示す論理フローチャート400A、400Bである。決定ブロック405は、方法400の最初のステップである。決定ブロック405では、要求側のマスタープロセッサ110または126は、メッセージRAM112における制御セクション318の変更要求フィールド321およびリソース指示要求フィールド324が0の値に等しいかどうかを決定する。このステップでは、マスタープロセッサ110または126は、完了していない、別のプロセッサ110、126から発せられた以前の要求が、現在の要求によってメッセージRAM112において上書きされないことを確実にしている。
【００５１】
決定ブロック405への照会が否定であれば、ループでブロック405の開始に戻って、「いいえ」分岐に進む。決定ブロック405への照会が肯定であれば、前の要求が処理されていることを意味し、ブロック410への「はい」分岐に進む。
【００５２】
ブロック410で、要求されたリソース105のすべてについての要求されたリソース状態は、図3に示したように、要求側のマスタープロセッサ110または126によって、メッセージRAM112のマスター領域303の要求セクション333に書き込まれる。次に、ブロック415で、どのリソース105がマスター110または126によって要求されているかを示すために、マスタープロセッサ110または126によって、値がリソース指示要求フィールド324に書き込まれる。
【００５３】
ブロック420で、どの構成セット311または313が要求されたリソース105のために選択されたかを識別するために、値がメッセージRAM112における制御セクション318の変更要求フィールド321に書き込まれる。次に、ブロック425で、要求側マスタープロセッサ110または126は、コントローラ101に要求割込みライン109のうちの1つに沿って、要求割込みを送信する。
【００５４】
ブロック430では、コントローラ101は、要求割込みライン109から要求割込みを受信し、どのマスター110または126が要求したかを決定する。次に、決定ブロック435で、コントローラ101は、変更肯定応答フィールド330およびリソース指示肯定応答フィールド327が0の値を有するかどうかを決定する。この段階では、コントローラ101は、コントローラ101か要求を管理または処理し始める前に、前の要求がまだ処理中であるかどうかを決定している。
【００５５】
決定ブロック435に対する照会が否定であれば、コントローラ101が、前の要求がシステムによってまだ処理中である旨のメッセージを、要求側マスタープロセッサ110または126に送り返すブロック440への「いいえ」分岐に進む。ブロック440の後、方法400は、ブロック435の開始に戻る。決定ブロック435に対する照会が肯定であれば、変更肯定応答フィールド330およびリソース指示肯定応答フィールド327が0の値を有することを意味し、方法400はブロック445に進む。
【００５６】
ブロック445で、コントローラ101は、どのリソース105が要求されているかを識別するために、メッセージRAM212における制御セクション318の変更要求フィールド321およびリソース指示要求フィールド324を読み取る。次に、ブロック450で、コントローラ101は、メッセージRAM212の要求セクション333からすべての関連のある要求状態を読み取り、コントローラ101内にローカルにこれらの値をキャッシュ(記憶)する。次に、ブロック455で、コントローラ101は、メッセージRAM212における制御セクション318の変更要求フィールド321およびリソース指示フィールド324に0の値を書き込む。
【００５７】
方法400は、ブロック455からブロック460に進み、ここで方法400は、図4Bのプロセスまたはルーチンブロック465で再開する。図4Bのプロセスまたはルーチンブロック465は、図5に関連して以下でさらに詳細に説明する複数のステップを備えることができる。プロセスブロック465で、コントローラ101は、マスタープロセッサ110または126から発せられる要求から、リソース105ごとに望ましい状態を識別する。次いで、コントローラ101は、もし適切な場合、1つまたは複数のリソース105に要求された状態を渡す。
【００５８】
ブロック470におけるプロセスまたはルーチンブロック465の後、コントローラ101は、メッセージRAM112の変更肯定応答フィールド330およびリソース指示肯定応答フィールド327に要求によって変更されたリソース105のステータスを書き込むことができる。
【００５９】
次に、ブロック475で、コントローラ101は、要求を発したマスター110または126に、図3の肯定応答割込みライン107のうちの1つに沿って、肯定応答割込みを送信することができる。ブロック480で、肯定応答割込みを受信するマスタープロセッサ110または126によって、メッセージRAM112の制御セクション318の変更肯定応答フィールド330およびリソース指示肯定応答フィールド327を読み取ることができる。これらのフィールド330および327は、マスタープロセッサ110または126によって要求されたリソース105に関連付けられた状態の現在の値を備え得る。マスタープロセッサ110または126は、コントローラ101にメッセージを送ることによって、これら2つのフィールドの状態を随意に肯定応答することができる。
【００６０】
ブロック485で、肯定応答割込みを受信したマスタープロセッサ110または126は、次いで、他のマスタープロセッサ110または126がリソース105に他の要求を発行することができるようにするために、メッセージRAM112における制御セクション318の変更肯定応答フィールド330およびリソース指示肯定応答フィールド327に0を書き込むことができる。方法400は、決定ブロック405に戻り、上記で説明したように、開始することができる。
【００６１】
図5は、要求からリソース105の状態を識別し、適切なとき、リソース105に状態を渡すためのサブメソッドまたはルーチン465(図4Bに対応する)を示す論理フローチャートである。ブロック505が、サブメソッド465の最初のステップである。ブロック505で、メッセージRAM112における制御セクション318のリソース指示要求フィールド324に記載されているリソース105ごとに、要求された状態が、メッセージRAM112のマスター部分303の要求セクション333から、コントローラ101によって読み取られる。
【００６２】
図3に示した例示的な実施形態では、第1の共有リソース(SR#1)105Aは、0の要求された状態値を有し、一方、第2の共有リソース(SR#2)105Bも、0の要求された状態値を有する。N番目の共有リソース(SR#N)105Cは、1の要求された状態値を有し、一方、第1のローカルリソース(LR#1)105Dは、0の4つの要求された状態値を有する。
【００６３】
次に、決定ブロック510で、コントローラ101は、特定のリソース105についての要求された状態がスリープ構成セット311の一部であるか、アクティブ構成セット313の一部であるかを決定する。決定ブロック510への照会が「アクティブセット」を戻せば、ブロック515への「アクティブセット」分岐に進む。決定ブロック510への照会が「スリープセット」を戻せば、ブロック525への「スリープセット」分岐に進む。
【００６４】
ブロック515で、コントローラ101は、1つまたは複数の低レベルドライバ103に要求された状態を渡し、低レベルドライバ103は次に、たとえば、図2に示したように、共有リソース105A〜105Cまたはローカルリソース105D〜105Gなど、特定のリソースに要求された状態を送信する。次に、ブロック520で、リソース105についての要求された状態が特定のリソース105に対するステータス変更をもたらす場合、リソースの新しいステータスが、コントローラ101によってメッセージRAM112のリソースステータスセクション315に書き込まれる。
【００６５】
ブロック525で、要求された状態が、コントローラ101によって、メッセージRAM112のリソースステータスセクション315に保存される。ブロック530で、要求された状態が、メッセージRAM112の肯定応答セクション336にコピーされる。そして、ルーチン465は、図4Bのブロック470に戻る。
【００６６】
図6は、リソース105についての制限外の要求を処理するためのサブメソッドまたはルーチン600を示す。サブメソッド600は、図4A、図4B、および図5に示したように、方法400およびサブメソッド465の番号付けされたブロックと一致するように番号付けされているブロックを含む。したがって、サブメソッド600の番号付けされブロックが方法400またはサブメソッド465の対応する番号付けされたブロックよりも大きい値を有する場合、サブメソッド600の番号付けされたブロックは、方法400またはサブメソッド465の対応する番号付けされたブロックの後に行われることになる。
【００６７】
たとえば、決定ブロック513は、サブメソッド600の最初のステップである。決定ブロック513は、サブメソッド465のブロック510よりも大きい値、およびブロック515未満である値を有する。したがって、当業者によって理解されるように、決定ブロック513は、決定ブロック510の後、しかしサブメソッド465のブロック515の前に行われることになる。
【００６８】
決定ブロック513で、コントローラ101は、要求された状態がリソース105の制限を上回るかどうかを決定することができる。たとえば、特定のリソース105が800MHzの最大クロック速度を有し、要求された状態が900MHzである場合、この要求された状態はこのリソース105の制限を上回る。
【００６９】
決定ブロック513への照会が否定であれば、「いいえ」分岐に進み、サブメソッド600は、図5におけるサブメソッド465のブロック515に戻る。決定ブロック513への照会が肯定であれば、要求された状態が特定のリソース105の制限を上回ることを意味し、ブロック518への「はい」分岐に進む。
【００７０】
ブロック518で、コントローラ101は、リソース105の最大または最小の制限を決定し、リソース105を、要求された状態に最も近い適切な制限に設定することができる。そのため、上記の例では、リソースの最大クロック速度が800MHzであり、要求された状態が900MHzである場合、コントローラ101は、クロック速度を、要求された状態よりも100MHz小さい800MHzの最大値に設定する。ブロック519で、コントローラ101は、要求された状態のためにコントローラ101によって選択された制限を示すために、変更フラグを設定することができる。
【００７１】
ブロック482は、ここで、ブロック480の後、図4Bの方法400に追加されるので、ブロック519に続く。ここで図4Bのブロック480に続くブロック482で、マスターが図3のメッセージRAM112の制御セクション318を読み取るとき、アクティブ要求を発するマスター110または126は、ブロック519で設定された変更フラグを読み取ることができる。そして、合計600は、図5のブロック515に戻る。
【００７２】
本発明が説明通りに機能するように、本明細書で説明したプロセスまたはプロセスの流れの特定のステップが他のステップよりも前に行われるのは当然である。しかしながら、ステップの順序または手順によって本発明の機能が変わることがない場合、本発明は説明したステップの順序に限定されない。つまり、開示されたシステムおよび方法から逸脱することなく、あるステップを他のステップの前に実行しても、後に実行してもよく、あるいは各ステップを並行して(実質的に同時に)実行してもよいことを認識されたい。場合によっては、当業者によって理解されるように方法から逸脱することなく、特定のステップを省略してよく、実行しなくてもよい。さらに、「その後」、「次いで」、「次に」などの語は、ステップの順序を限定することを意図していない。これらの語は、単に例示的な方法の説明を通じて読者を導くために使用されている。
【００７３】
たとえば、コントローラ101がメッセージRAM112の肯定応答セクション336に要求された状態をコピーすることを要求するブロック530は、各リソース105のステータスが変わらなかった場合、完全にスキップすることができる。ブロック530のこの除去は、コントローラ101によって消費される処理時間を減らすことができる。
【００７４】
別の例として、マルチスレッド環境をサポートするために、いくつかのステップを変更することができる。特に、変更肯定応答フィールド330およびリソース指示肯定応答フィールド327がコントローラ101によってレビューされる決定ブロック435は、図5のブロック530の直前に移動またはシフトされ得る。同様に、当業者によって理解されるように、ステップ間またはステップの近くに追加の技法を用いてもよい。
【００７５】
たとえば、指数バックオフ技法をブロック440とブロック435との間に使用することができ、コントローラは、決定ブロック435でリソース105の状態をチェックすることができる。これは、ブロック440とブロック435との間の第1のパスが100ミリ秒の固定の持続時間を有し得ることを意味する。ブロック440とブロック435との間の第2のパスは、200ミリ秒の固定の持続時間を有し得る。当業者によって理解されるように、ブロック440とブロック435との間の第3のパスは、1秒の固定の持続時間を有し得る。
【００７６】
図7A〜7Bは、プロセッサ110についての通知メタリソース105Jの一部であるテーブル700を示す。通知メタリソース105Jおよび特にテーブル700は、メッセージRAM112の要求セクション333において記憶され、アクセスされ得る。例示的な実施形態では、各プロセッサ110または126は、メッセージRAM112の各マスター当たりの領域303の中に存在する制御セクション318、要求セクション333、および肯定応答セクション336と同様に、それ自体の個々の通知メタリソース105Jに割り当てられる。
【００７７】
各通知メタリソース105Jによって、マスタープロセッサ110または126は、マスタープロセッサ110に関係のあり得る特定のリソース105についてのステータス報告の受信の契約をすることができる。マスタープロセッサ110または126は、コントローラ101にステータス報告を生成して欲しいリソース105をメタリソース105Jに書き込み、記録することができる。コントローラ101は、特定のマスタープロセッサ110または126に、リソース105に関する報告を送ることをコントローラ101が必要とするかどうかを決定するために、各マスター110または126に対応する各メタリソース105Jをレビューする。
【００７８】
図7Aに示したように、通知メタリソース105Jは、特定のマスター110または126が利用可能であり得る各リソース105に対応する構成フィールド値の第1の行を含み得る。通知メタリソース105Jの第2の行は、特定のマスター110または126が利用可能であり得る各リソース105に対応する登録フィールド値を含み得る。構成フィールドは、通知を定義し、登録フィールドは、主要なセットからの状態がどのように継承され得るかについて定義する。
【００７９】
図7に示した例示的な実施形態では、構成フィールドおよび登録フィールドは、1または0のバイナリ状態を含み得る。構成フィールドにおける0の状態は、特定のマスタープロセッサ110または126がリソース変更通知についてのその設定値を継承することを望む旨を示す。この場合、登録ビットの状態は使用されず、通知は、配信されるか、主要なセットからの設定値に基づかない。
【００８０】
構成フィールドにおける1の状態は、特定のマスタープロセッサ110または126が特定のリソース105についての通知設定値を継承することを望まず、代わりに、登録ビットを使用して通知を明示的に構成することを示す。この場合、登録フィールドにおける1の状態は、特定のマスタープロセッサ110または126が特定のリソース105における変更についての通知を受信することを望むことを示す。同様に、登録フィールドにおける0の状態は、主要なセットにおける設定値に関係なく、現在のセットである間、通知を受信しないことを望むことを示す。主要なセットについて、以下でさらに詳細に説明する。
【００８１】
構成フィールドおよび登録フィールドについての概要を、以下の表1に示す。
【００８２】
【表１】
0005678210.tif 000002
【００８３】
各マスタープロセッサ110または126は、特定のマスタープロセッサ110または126の特定の状態に割り当てられる複数の通知メタリソースを有することができる。たとえば、図7Bに示した例示的な実施形態では、3つセットの通知メタリソース105J1、105J2、および105J3を特定のマスタープロセッサ110または126に割り当てることができる。
【００８４】
第1の通知メタリソース105J1は、通知のための特定のマスタープロセッサの主要なセットを備え得る。主要なセットは、マスタープロセッサ110または126が関係のある特定のリソース105について通知されることを特定のマスター110または126が望む方法についてのデフォルトの設定でもよい。主要なセット105J1の第1の列の両方の行は、この通知メタリソース105Jに割り当てられるマスタープロセッサ110または126が、第1の共有リソース(SR#1)105Aについての通知を受信することを望むことを示す、1の値を有する。
【００８５】
主要なセット105J1の第4の列の両方の行は、この通知メタリソース105Jに割り当てられるマスタープロセッサ110または126が、第1のローカルリソース(LR#1)105Dについての通知を受信することを望むことを示すために、1の値を有する。
【００８６】
通知メタリソースの第2および第3のセット105J2および105J3は、当業者によって理解されるように、スリープセットを備え得る。たとえば、第3のセット105J3の第2および第3の列の第1の行の構成フィールドは、このメタリソース105J2に割り当てられるマスタープロセッサ110または126が、第2(SR#2)105Bおよび第3の共有リソース(SR#3)105Cに関して任意の通知を継承することを望むことを示すために、0の値を有し得る。この例では、SR#2 105BおよびSR#3 105Cについての主要なセットの構成も、通知が配信されないことを示す。一方、第1および第4の列の第1の行における構成フィールドは、このメタリソース105G2に割り当てられたマスタープロセッサ110または126が、主要なセットから継承することを望まないことを示すための1である。この場合、第4の列の第2の行における登録されたビットは1であるので、LR#1 105Cについての通知がある。第1の列の第2の行における登録されたビットは0であるので、SR#1 105Aについて配信される通知はない。
【００８７】
特定の通知メタリソース105Jにおける2つの行の存在は、設定を有していない(および、したがって、主要なセットから継承されなければならない)値と明示的に設定されている値との間の区別を可能にすることである。一般に、マスタープロセッサ110または126は、主要なセット105J1におけるその通知を構成し、それらの通知が常に順守されることを期待する。しかしながら、マスタープロセッサ110または126は、いくつかのリソース105についてのみを除いて、スリープの間、異なる構成を望み得ることが考えられる。したがって、継承する、スリープ時に追加の通知を受信するために、明示的に登録する、または主要なセットを介して通知が配信される場合であっても、スリープ時に通知を受信しないように明示的に登録解除するという3つの可能な状態を解釈するには、単一の情報は不十分である。
【００８８】
図8は、通知メタリソース105Jを管理するためのサブメソッドまたはサブルーチン800を示す論理フローチャートである。サブメソッド800のステップは、全般的に、図4A〜4Bに示した方法400のいくつかのステップを参照する。ブロック436が、サブメソッド800の最初のステップである。
【００８９】
決定ブロック435から「はい」分岐に進んだ後、ブロック436が行われる。ブロック436で、コントローラ101は、メッセージRAM212の制御セクション318の変更肯定応答フィールド330にリソース105のステータスを書き込む。コントローラ101によるこのアクションは、通知フラグを設定する。
【００９０】
サブルーチン800が方法400と統合されるものとして説明されているが、コントローラ101に対する要求は、リソースの変更の通知が行われるために必要でないことを、当業者であれば認識する。ステップ435の後、マスタープロセッサ110または126が新しい状態を要求した、または、コントローラ100の内部の何らかの状態が変わった場合、1つまたは複数のリソースのステータスが変わる新しい状態が起こり得る。マスタープロセッサ110または126になされる要求に対して、通知が非同期的に生じ得ることを、当業者であれば理解されたい。
【００９１】
次に、図4Aのブロック445の後に行われるブロック446で、コントローラ101は、どのリソース105が変わったかを、メッセージRAM212における制御セクション318のリソース指示肯定応答フィールド327に記録する。次に、図4A〜4Bのステップ450および475の後行われるブロック452/476で、マスタープロセッサ110または126ごとに割り当てられる通知メタリソース105Jにおける値に基づいて、コントローラ101は、肯定応答割込みを、各関係するマスタープロセッサ110または126に送る。これは、ブロック446が図4Aのブロック450の後、図4Bのブロック475において行われることを意味する。
【００９２】
次に、ブロック481で、図4Bのステップ480の後、コントローラ101は、メッセージRAM212の制御セクション318のリソース指示肯定応答フィールド327をレビューし、各マスター110または126についての通知メタリソース105Jにおける値に基づいて、コントローラは、関係のあるマスターにステータス変更を通知する。
次に、ブロック482で、各マスター110または126は、リソース105の現在の状態を学ぶために、メッセージRAM212のリソースステータスセクション315を読み取る。
【００９３】
上記の開示に鑑みて、プログラミングの当業者は、たとえば本明細書のフローチャートおよび関連する説明に基づいて、コンピュータコードを書くか、または適切なハードウェアおよび/もしくは回路を特定し、開示された発明を容易に実施することができる。したがって、特定の1組のプログラムコード命令または詳細なハードウェアデバイスの開示が、本発明をどのように製作し使用すべきかについて適切に理解するうえで必要であるとはみなされない。特許請求されるコンピュータで実施されるプロセスの発明性のある機能は、上の説明において、かつ、様々なプロセスの流れを示し得る図面とともに、より詳細に説明される。
【００９４】
1つまたは複数の例示的な態様では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装することができる。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体上で送信され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体とコンピュータ通信媒体の両方を含む。記憶媒体は、コンピュータによってアクセスされ得る任意の利用可能な媒体であってよい。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、命令もしくはデータ構造の形式で所望のプログラムコードを搬送もしくは記憶するために使用され得るとともに、コンピュータによってアクセスされ得る任意の他の媒体を含み得る。
【００９５】
また、任意の接続をコンピュータ可読媒体と呼ぶのが妥当である。たとえば、ソフトウェアが、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
【００９６】
本明細書で使用する場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザディスク、光ディスク、デジタル多用途ディスク(DVD)、フレキシブルディスク、およびブルーレイディスクを含み、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザで光学的にデータを再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【００９７】
選択された態様について詳細に図示し説明したが、以下の特許請求の範囲によって定義されるような本発明の趣旨および範囲から逸脱することなく、各態様において様々な置換および改変を実施できることが理解されよう。
【符号の説明】
【００９８】
100  PCD
101  コントローラモジュール
102  オンチップシステム
105A  共有リソース
105B  共有リソース
105C  共有リソース
105D  ローカルリソース
105E  ローカルリソース
105F  ローカルリソース
105G  ローカルリソース
105H  ローカルリソース
105J  通知メタリソース
107A  肯定応答割込みライン
107B  肯定応答割込みライン
109A  要求割込みライン
109B  要求割込みライン
110  デジタル信号プロセッサ
110A  第1のCPU、第1のマスタープロセッサ
110B  第2のCPU、第2のマスタープロセッサ
112  メッセージRAM
113A  クロックコード
122  スタティックランダムアクセスメモリ(「SRAM」)オンチップ
126  アナログ信号プロセッサ
128  ディスプレイコントローラ
130  タッチスクリーンコントローラ
132  タッチスクリーンディスプレイ
134  ビデオコーデック
136  ビデオ増幅器
138  ビデオポート
140  USBコントローラ
142  USBポート
146  加入者識別モジュール(SIM)カード
148  デジタルカメラ
150  ステレオオーディオコーデック
152  オーディオ増幅器
154  第1のステレオスピーカー
156  第2のステレオスピーカー
157  オンチップ熱センサ
158  マイクロフォン増幅器
160  マイクロフォン
162  FMラジオチューナー
164  FMアンテナ
166  ステレオヘッドフォン
168  RFトランシーバ
170  RFスイッチ
172  RFアンテナ
174  キーパッド
176  マイクロフォンを備えたモノヘッドセット
178  バイブレータデバイス
180  電源
212  メッセージRAM
222  第0のコア
224  第1のコア
230  第Nのコア
300  プロセッサ間通信システム
301  第1の部分
303A  第1のマスター当たりの領域
303B  第2のマスター当たりの領域
307  テーブル
309  リスト
311  構成セット
311A  第1の構成セット
311B  第3の構成セット
313  構成セット
313A  第2の構成セット
315  リソースステータスセクション
318  制御セクション
318A  サブセクション
318B  第2の制御セクション
321  変更要求フィールド
324  リソース指示要求フィールド
327  リソース指示肯定応答フィールド
330  変更肯定応答フィールド
333  要求セクション
333A  サブセクション
336  肯定応答セクション
336A  サブセクション
336B  肯定応答セクション
【図１】
0005678210.tif 000003
【図２】
0005678210.tif 000004
【図３】
0005678210.tif 000005
【図４Ａ】
0005678210.tif 000006
【図４Ｂ】
0005678210.tif 000007
【図５】
0005678210.tif 000008
【図６】
0005678210.tif 000009
【図７Ａ】
0005678210.tif 000010
【図７Ｂ】
0005678210.tif 000011
【図８】
0005678210.tif 000012