(57)【特許請求の範囲】
【請求項１】
2つ以上の処理スレッドを含むマルチスレッドプロセッサにおいて共用リソースを管理する方法であって、
前記2つ以上のスレッドに対する危険レベルを決定するステップであって、スレッドの前記危険レベルが、共用リソースを利用できないことにより前記スレッドがデッドラインを潜在的に守れないことに基づいている、決定するステップと、
前記2つ以上のスレッドに関連する優先レベルを検出するステップであって、前記優先レベルが、デッドラインを守れないことが許容できないスレッドに対してより高く、前記優先レベルが、デッドラインを守れないことが許容できるスレッドに対してより低い、検出するステップと、
前記2つ以上のスレッドに対する前記決定された危険レベル、および前記2つ以上のスレッドに関連する優先レベルに少なくとも基づいて、前記2つ以上のスレッドをスケジュールするステップと
を含み、
スケジュールされる低優先度スレッドからの低優先度トランザクションの数が所定のしきい値を超える場合、前記スケジュールするステップが、少なくとも1つの低優先度スレッドをストールするステップをさらに含む、方法。
【請求項２】
前記少なくとも1つの低優先度スレッドのデッドラインを守れないことが許容でき、前記少なくとも1つの低優先度スレッドをストールするステップが、前記少なくとも1つの低優先度スレッドからの低優先度トランザクションのスケジューリングを防止するステップまたは遅らせるステップを含み、前記低優先度トランザクションが、スケジュールされると共用リソースを消費することになる、請求項1に記載の方法。
【請求項３】
デッドラインを守れないことが許容できない少なくとも1つの高優先度スレッドから高優先度トランザクションをスケジュールするステップをさらに含み、前記高優先度スレッドのための共用リソースが、前記少なくとも1つの低優先度スレッドをストールすることに基づいて利用可能にされる、請求項2に記載の方法。
【請求項４】
前記2つ以上のスレッドに対する前記危険レベルを決定するステップが、前記2つ以上のスレッドに関連する内部危険レベル、および前記マルチスレッドプロセッサの外部の1つまたは複数のコアに関連する外部危険レベルに基づいている、請求項1に記載の方法。
【請求項５】
前記内部危険レベルが、各スレッドに対する危険レベルでプログラムされるソフトウェアプログラマブルレジスタによって提供される危険レベル、スレッドに関連するタスクが完了される前にタイマーが満了する場合、前記タイマーによって提供される危険レベル、各スレッドに対する帯域幅モニタによって提供される危険レベル、または各スレッドに対するレイテンシモニタによって提供される危険レベルのうちの1つまたは複数に基づいている、請求項4に記載の方法。
【請求項６】
前記2つ以上のスレッドに関連する優先レベルに基づいて、スコアボード内の前記2つ以上のスレッドからのトランザクションをグループ分けするステップを含む、請求項1に記載の方法。
【請求項７】
前記マルチスレッドプロセッサが、デジタル信号プロセッサ(DSP)、汎用プロセッサ(GPP)、または中央処理ユニット(CPU)のうちの1つである、請求項1に記載の方法。
【請求項８】
前記2つ以上のスレッドの前記危険レベルに基づいて、一時的に前記少なくとも1つの低優先度スレッドをストールするステップをさらに含む、請求項1に記載の方法。
【請求項９】
2つ以上の処理スレッドを処理するように構成されたマルチスレッドプロセッサと、
前記2つ以上のスレッドに対する危険レベルを決定するように構成された危険アグリゲータであって、スレッドの前記危険レベルが、共用リソースを利用できないことにより前記スレッドがデッドラインを潜在的に守れないことに基づいている、危険アグリゲータと、
前記2つ以上のスレッドに関連する優先レベルを追跡するように構成されたトランザクションスコアボードであって、前記優先レベルが、デッドラインを守れないことが許容できないスレッドに対してより高く、前記優先レベルが、デッドラインを守れないことが許容できるスレッドに対してより低い、トランザクションスコアボードと、
前記2つ以上のスレッドに対する前記決定された危険レベル、および前記2つ以上のスレッドに関連する優先レベルに少なくとも基づいて、前記2つ以上のスレッドをスケジュールするように構成されたデキューエンジンと
を備え、
スケジュールされる低優先度スレッドからの低優先度トランザクションの数が所定のしきい値を超える場合、前記デキューエンジンが、少なくとも1つの低優先度スレッドをストールするようにさらに構成される、処理システム。
【請求項１０】
前記危険アグリゲータが、前記2つ以上のスレッドに関連する内部危険レベル、および前記マルチスレッドプロセッサの外部の1つまたは複数のコアに関連する外部危険レベルに基づいて、前記2つ以上のスレッドに対する前記危険レベルを決定するように構成される、請求項9に記載の処理システム。
【請求項１１】
前記内部危険レベルが、各スレッドに対する危険レベルでプログラムされるソフトウェアプログラマブルレジスタによって提供される危険レベル、スレッドに関連するタスクが完了される前にタイマーが満了する場合、前記タイマーによって提供される危険レベル、各スレッドに対する帯域幅モニタによって提供される危険レベル、または各スレッドに対するレイテンシモニタによって提供される危険レベルのうちの1つまたは複数に基づいている、請求項10に記載の処理システム。
【請求項１２】
前記トランザクションスコアボードが、前記2つ以上のスレッドに関連する優先レベルに基づいて、前記2つ以上のスレッドからのトランザクションをグループ分けするように構成される、請求項9に記載の処理システム。
【請求項１３】
前記少なくとも1つの低優先度スレッドが、前記2つ以上のスレッドに対する前記危険レベルに基づいて一時的にストールされる、請求項9に記載の処理システム。
【請求項１４】
請求項1から8のいずれか一項に記載の方法を実行するための手段
を備える装置。
【請求項１５】
プロセッサによって実行されると、前記プロセッサに、請求項1から8のいずれか一項に記載の方法を実行させるコードを含む非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
米国特許法第119条に基づく優先権の主張
本特許出願は、本出願の譲受人に譲渡され、参照により本明細書に明確に組み込まれる、2015年5月29日に出願された「BANDWIDTH/RESOURCE MANAGEMENT FOR MULTITHREADED PROCESSORS」と題する米国仮出願第62/168,708号の優先権を主張する。
【０００２】
開示する態様は、マルチスレッドプロセッサを備える処理システムに関する。より詳細には、例示的な態様は、1つまたは複数のマルチスレッドプロセッサのリソースおよび帯域幅管理に関する。
【背景技術】
【０００３】
ポータブルコンピューティングデバイス(PCD)は、携帯電話、携帯情報端末(PDA)、ポータブルゲームコンソール、ラップトップコンピュータ、および他のポータブル電子デバイスを含む。PCDは、同じチップまたはダイ上に集積された1つまたは複数の処理コアを備えるシステムオンチップ(SOC)アーキテクチャを採用する場合がある。処理コアは、それを逸するとPCDの動作中に許容できない、検出可能または視認可能な障害を引き起こすことがあるデッドラインを有することがある。そのようなコアは、本開示では、許容できないデッドラインミス(UDM)コアと呼ばれる。UDMコアは、リアルタイムまたはコアの動作中のデッドラインミスが許容できないことを伝えるために、リアルタイムクライアント/コア(または、当技術分野で知られている適切な代替物)と呼ばれることもある。
【０００４】
対照的に、パフォーマンスの低下に見舞われる可能性があるが、そのパフォーマンス低下、またはたとえばデッドラインを守れないことが許容できる可能性がある他のコアがある場合がある。そのようなコアは、本開示では、非UDMコアと呼ばれる。非UDMコアは、コアに対するリアルタイムのデッドラインミスが容認できることを伝えるために、非リアルタイムクライアント/コアまたは適切な代替物と呼ばれることもある。
【０００５】
一般に、コアのデッドラインは、メモリ(たとえば、ダイナミックランダムアクセスメモリ(DRAM)、内部スタティックランダムアクセスメモリ(SRAM)メモリ(IMEM))、バス(たとえば、周辺構成要素相互接続エクスプレス(PCI-e)、外部トランスポートリンク)などの共用リソース、または任意の共用帯域幅リソースからコアが受け取る帯域幅(BW)の量によって決定され得る。より詳細には、デッドラインは、指定時間期間の間コアに利用可能にされる帯域幅に基づいていてもよい。指定時間期間は、比較的小さい、たとえば、10〜100マイクロ秒の範囲内であってもよい。
【０００６】
いくつかのコアが指定時間期間に十分なメモリBWを受け取らないとき、ユーザに視認できることがある障害が発生することがある。たとえば、PCD内のコアの1つは、メモリ要素(たとえば、DRAM)からデータを読み取り、ユーザが見ることができるようにディスプレイパネル/デバイスにデータを出力するディスプレイエンジンである場合がある。ディスプレイエンジンが一定の時間期間内にDRAMから十分なデータを読み取ることができない場合、ディスプレイエンジンは、そのためにディスプレイデータが不足し、ディスプレイ上に固定の一色(たとえば、青または黒)を表示せざるを得ないことがある。これは、ディスプレイエンジンに関係するエラー状態であり、当技術分野では「ディスプレイアンダーフロー」、「ディスプレイアンダーラン」、または「ディスプレイテアリング」と呼ばれることがある。そのようなディスプレイエラー状態は、許容できないと見なされ、ディスプレイエンジンをUDMコアにする。
【０００７】
許容できない障害の別の例は、PCD内のカメラを含む場合がある。一般に、カメラは、センサからデータを受け取り、そのデータをDRAMに書き込んでもよい。しかしながら、カメラによって受け取られたデータが、一定の時間期間内にDRAMに書き込まれない場合、カメラは受け取ったデータでバックアップされた状態になり、センサから受け取られる入力データを失い始めるおそれがある。これは、カメラのエラー状態であり、「カメラオーバーフロー」または「カメラ画像破損」と呼ばれることがある。カメラエラー状態は、画像品質の許容できない低下を招く可能性があり、カメラをUDMコアにする。
【０００８】
許容できない障害のまた別の例は、モデムコアが固定の時間期間にわたって十分なデータをDRAMから読み取る/DRAMへ書き込むことができず、モデムコアが重要なタスクを時間通りに完了することを妨げる可能性があることに関係する場合がある。重要なタスクが、あるデッドライン内に完了されない場合、モデムコアのファームウェアは、クラッシュすることがあり、PCDの音声またはデータ呼が時間期間の間失われ、またはインターネット接続が遅くなる(すなわち、インターネット接続中にとぎれとぎれになる)ように思われることがある。これは、許容できないモデムコアのエラー状態であり、したがってモデムコアもまた、UDMコアと見なすことができる。
【０００９】
上記の例は、特定のコアの許容できないデッドラインミスとして説明するが、いくつかのコアは、2つ以上の並列処理スレッドを有するマルチスレッドプロセッサであることがある。マルチスレッドプロセッサがデッドラインミスになるとき、それはさらなる問題を有することがある。許容できないデッドラインミスのあるタスクが、1つまたは複数のスレッドで実行されることがある。UDMタスクが実行されるスレッドは、UDMスレッドと呼ばれることがある。UDMスレッド上のタスクは、デッドラインが守られない場合、許容できない障害につながることになる。マルチスレッドプロセッサはまた、1つまたは複数の非UDMスレッドを有することもあり、非UDMスレッド上のタスクは、デッドラインが守られない場合、許容できない障害につながることはない。
【００１０】
UDMスレッドおよび非UDMスレッドの混合を有するPCDのマルチスレッドプロセッサのために帯域幅およびリソースを管理することは厄介である。マルチスレッドプロセッサ内の非UDMスレッドによって帯域幅/リソースが不足しないようにUDMスレッドを保護することが望まれる場合がある。さらに、処理システムが、マルチスレッドプロセッサの外部に1つまたは複数のコアを備えることがある。したがって、マルチスレッドプロセッサの外部のコアからマルチスレッドプロセッサのUDMスレッドのための帯域幅/リソースを保護することもまた望まれる場合がある。その上、いくつかの処理システムは、2つ以上のマルチプロセッサを含むことがあり、これは、各マルチプロセッサのUDMスレッドを帯域幅/リソース低下から保護することもまた望まれる場合があることを意味する。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
したがって、当技術分野では、少なくとも1つのマルチスレッドプロセッサを備える処理システムの帯域幅/リソースを管理する必要があり、マルチスレッドプロセッサは少なくとも1つのUDMスレッドを含むことがある。
【課題を解決するための手段】
【００１２】
例示的な態様は、2つ以上の処理スレッドを含むマルチスレッドプロセッサにおける共用リソースを管理するためのシステムおよび方法に関する。スレッドは、UDMスレッドまたは非UDMスレッドとすることができる。マルチスレッドプロセッサは、デジタル信号プロセッサ(DSP)、汎用プロセッサ(GPP)、または中央処理ユニット(CPU)のうちの1つとすることができる。一態様は、2つ以上のスレッドに対する危険レベルを決定することを含み、スレッドの危険レベルは、共用リソースを利用できないことによりスレッドがデッドラインを潜在的に守れないことに基づいている。一態様は、さらに、2つ以上のスレッドに関連する優先レベルを検出することを含み、優先レベルは、デッドラインを守れないことが許容できないスレッドに対してより高く、優先レベルは、デッドラインを守れないことが許容できるスレッドに対してより低い。いくつかの態様では、スレッドの優先レベルに基づいてスコアボード内の1つまたは複数のスレッドからのトランザクションをグループ分けすることにより、優先レベルに基づくスケジューリングが可能になる。例示的な態様は、スレッドの関連する危険レベルおよび優先レベルに基づいて2つ以上のスレッドの各々をスケジュールするステップをさらに含む。
【００１３】
いくつかの態様では、デッドラインを守れないことが許容できる、少なくとも1つの低優先度スレッド(たとえば、非UDMスレッド)がスロットリングされる。低優先度スレッドをスロットリングすることは、低優先度スレッドからの低優先度トランザクションのスケジューリングを防止することまたは遅らせることを意味することができ、低優先度トランザクションは、スケジュールされると共用リソースを消費することになる。さらに、低優先度スレッドをスロットリングすることはまた、デッドラインを守れないことが許容できない、少なくとも1つの高優先度スレッド(たとえば、UDMスレッド)からの高優先度トランザクションをスケジュールすることにつながる、またはこれを可能にすることができ、低優先度トランザクションをスロットリングすることに基づいて、高優先度スレッドのための共用リソースが利用可能にされる。
【００１４】
いくつかの態様は、2つ以上のスレッドの内部危険レベル、およびマルチスレッドプロセッサを備えるシステムの1つまたは複数のコアの外部危険レベルに基づいて、2つ以上のスレッドに対する危険レベルを決定することを含む。たとえば、内部危険レベルは、各スレッドに対して危険レベルでプログラムされたソフトウェアプログラマブルレジスタによって提供される危険レベル、スレッドに関連するタスクが完了する前にタイマーが満了する場合はタイマーによって提供される危険レベル、各スレッドに対して帯域幅モニタによって提供される危険レベル、または各スレッドに対してレイテンシモニタによって提供される危険レベルのうちの1つまたは複数に基づくものとすることができる。
【００１５】
したがって、例示的な態様は、2つ以上の処理スレッドを含むマルチスレッドプロセッサにおいて共用リソースを管理する方法に関し、この方法は、2つ以上のスレッドに対する危険レベルを決定するステップであって、スレッドの危険レベルが、共用リソースを利用できないことによりスレッドがデッドラインを潜在的に守れないことに基づくものである、決定するステップと、2つ以上のスレッドに関連する優先レベルを検出するステップであって、優先レベルが、デッドラインを守れないことが許容できないスレッドに対してより高く、優先レベルが、デッドラインを守れないことが許容できるスレッドに対してより低い、検出するステップと、2つ以上のスレッドに対する決定された危険レベルおよび2つ以上のスレッドに関連する優先レベルに少なくとも基づいて、2つ以上のスレッドをスケジュールするステップとを含む。
【００１６】
別の例示的な態様は、2つ以上の処理スレッドを処理するように構成されたマルチスレッドプロセッサと、2つ以上のスレッドに対する危険レベルを決定するように構成された危険アグリゲータであって、スレッドの危険レベルが、共用リソースを利用できないことによりスレッドがデッドラインを潜在的に守れないことに基づくものである、危険アグリゲータと、2つ以上のスレッドに関連する優先レベルを追跡するように構成されたトランザクションスコアボードであって、優先レベルが、デッドラインを守れないことが許容できないスレッドに対してより高く、優先レベルが、デッドラインを守れないことが許容できるスレッドに対してより低い、トランザクションスコアボードと、2つ以上のスレッドに対する決定された危険レベルおよび2つ以上のスレッドに関連する優先レベルに少なくとも基づいて、2つ以上のスレッドをスケジュールするように構成されたデキューエンジンとを備える処理システムに関する。
【００１７】
また別の例示的な態様は、2つ以上の処理スレッドを処理するためのマルチスレッド処理手段と、2つ以上のスレッドに対する危険レベルを決定するための手段であって、スレッドの危険レベルが、共用リソースを利用できないことによりスレッドがデッドラインを潜在的に守れないことに基づくものである、決定するための手段と、2つ以上のスレッドに関連する優先レベルを検出するための手段であって、優先レベルが、デッドラインを守れないことが許容できないスレッドに対してより高く、優先レベルが、デッドラインを守れないことが許容できるスレッドに対してより低い、検出するための手段と、2つ以上のスレッドに対する決定された危険レベルおよび2つ以上のスレッドに関連する優先レベルに少なくとも基づいて、2つ以上のスレッドをスケジュールするための手段とを備える処理システムに関する。
【００１８】
別の例示的な態様は、プロセッサによって実行されると、2つ以上の処理スレッドを含むマルチスレッドプロセッサにおいて共用リソースを管理するための動作をプロセッサに実行させるコードを含む、非一時的コンピュータ可読記憶媒体を対象とするものであり、この非一時的コンピュータ可読記憶媒体は、2つ以上のスレッドに対する危険レベルを決定するためのコードであって、スレッドの危険レベルが、共用リソースを利用できないことによりスレッドがデッドラインを潜在的に守れないことに基づくものである、決定するためのコードと、2つ以上のスレッドに関連する優先レベルを検出するためのコードであって、優先レベルが、デッドラインを守れないことが許容できないスレッドに対してより高く、優先レベルが、デッドラインを守れないことが許容できるスレッドに対してより低い、検出するためのコードと、2つ以上のスレッドに対する決定された危険レベルおよび2つ以上のスレッドに関連する優先レベルに少なくとも基づいて、2つ以上のスレッドをスケジュールするためのコードとを含む。
【００１９】
添付の図面は、本発明の態様の記述において助けになるように提示され、単に態様の説明のために提供されており、態様を制限するものではない。
【図面の簡単な説明】
【００２０】
【図１】共用リソースを利用することがある1つまたは複数の許容できないデッドラインミス(UDM)コアから監視される危険信号に基づいて帯域幅エンジニアリング/調整/シェーピング/スロットリングを行うためのポータブルコンピューティングデバイス(PCD)内の例示的なシステムのブロック図である。
【図２】UDMスレッドおよび非UDMスレッドを含むハイブリッドUDMコア(HUC)またはマルチスレッドプロセッサのブロック図である。
【図３】図2のHUCの出力トランザクションスケジューラ/マルチプレクサのブロック図である。
【図４】マルチスレッドプロセッサにおいて共用リソースを管理する方法のフローチャートである。
【図５】本開示の一態様が有利に採用され得る例示的なワイヤレスデバイスまたはPCDを示す図である。
【発明を実施するための形態】
【００２１】
本発明の態様は、本発明の特定の態様に向けられた以下の説明および関連する図面において開示される。本発明の範囲から逸脱することなく、代替態様が考案され得る。加えて、本発明のよく知られている要素は、本発明の関連する詳細を不明瞭にしないように、詳細には説明されず、または省略される。
【００２２】
「例示的な」という単語は、本明細書では、「例、実例、または例証として機能する」を意味するために使用される。「例示的」として本明細書において説明されるいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきでない。同様に、「本発明の態様」という用語は、本発明のすべての態様が議論された特徴、利点、または動作モードを含むことを必要としない。
【００２３】
本明細書で使用する用語は、特定の態様のみを説明する目的のためのものであり、本発明の態様の限定であることを意図しない。本明細書で使用する単数形「a」、「an」、および「the」は、コンテキストがはっきりと別段に指示しない限り、複数形も含むことが意図される。さらに、「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、および/または「含んでいる(including)」という用語は、本明細書で使用されるとき、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことが理解されよう。
【００２４】
さらに、多くの態様について、たとえば、コンピュータデバイスの要素によって実行されるべき一連のアクションに関して説明する。本明細書で説明する様々なアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つもしくは複数のプロセッサによって実行されているプログラム命令によって、または両方の組合せによって実行され得ることが認識されよう。加えて、本明細書で説明するアクションのこれらのシーケンスは、実行時に関連するプロセッサに本明細書で説明する機能を実行させるコンピュータ命令の対応するセットを記憶しているコンピュータ可読記憶媒体の任意の形態内に完全に具体化されていると考えられ得る。したがって、本発明の様々な態様は、そのすべてが特許請求される主題の範囲内にあると考えられているいくつかの異なる形態において具体化されてもよい。加えて、本明細書で説明する対応の各々について、任意のそのような態様の対応する形態は、たとえば、説明するアクションを実行する「ように構成された論理」として本明細書で説明される場合がある。
【００２５】
本開示では、少なくとも1つの許容できないデッドラインミス(UDM)スレッドおよび少なくとも1つの非UDMスレッドの混合を含むマルチスレッドプロセッサが、ハイブリッドUDMコア(HUC)と呼ばれる。例示的な態様では、少なくとも1つのUDMスレッドおよび少なくとも1つの非UDMスレッドは、HUCにおいて同時に実行することが可能である。デッドラインの障害またはミスが許容できないUDMスレッドの一例は、HUCのオーディオスレッドである。オーディオアプリケーションまたはタスクが実行されるオーディオスレッドは、アプリケーションが時間通りに完了しない場合、可聴「ポップ」または音を生じることがある。このポップは、UDMを含むと見なされる。その障害が品質の低下をもたらす可能性があるが、許容できないとは見なされない非UDMスレッドの例は、ビデオ符号化スレッドである。HUCでUDMオーディオスレッドと同時にまたは並行して実行される非UDMビデオ符号化スレッドは、現在のフレームの符号化が、次または後続のフレームの開始前に完了されない場合、後続のフレームをスキップすることがある。このように後続のフレームをスキップすると、品質の低下をもたらす可能性があるが、許容できないとは見なされない。
【００２６】
HUCの文脈において、スレッドおよびコアという用語は、タスクを同時に実行することができる処理エンジンを指すために互換的に使用される場合がある。HUCまたはマルチスレッドプロセッサのスレッド/コア間に存在すると仮定される物理的分離はない。
【００２７】
HUCは、2つ以上の処理スレッドを並行して実行することができる、中央処理ユニット(CPU)、デジタル信号プロセッサ(DSP)、汎用プロセッサ(GPU)などとすることができる。HUCは、たとえば、前述のポータブルコンピューティングデバイス(PCD)として構成される、システムオンチップ(SoC)の1つまたは複数の処理コアのうちの1つとすることができる。本開示の例示的な態様において、HUCのリソース/帯域幅の管理について説明する。HUCはUDMスレッドおよび非UDMスレッドを含むことがあるので、UDMスレッドの許容できないデッドラインミスを防止することができるように、UDMスレッドが十分な帯域幅/リソースを受け取ることを確保するために注意を払わなければならない。HUCのUDMスレッドは、HUC内の非UDMスレッド、ならびにPCD内の他のコアまたは他のHUCなどの外部要素によって引き起こされたスロットリングによって、スロットリングされる、またはリソース/帯域幅が不足することがある。UDMスレッド/コアをスロットリングすることができる要素は、アグレッサと呼ばれることがある。
【００２８】
本開示の例示的な態様では、HUC外のUDMコアがHUCをスロットリングする(外部スロットリングとも呼ばれる)場合、HUC内の非UDMスレッド/コアをスロットリングするが、HUC内のUDMスレッド/コアに影響を及ぼさないシステムおよび方法が採用される。一方、スロットリングの危険(throttling danger)が、HUC内から生じることがある(内部スロットリング)。内部スロットリングの場合、HUCは、例示的な態様では、そのUDMスレッド/コアの1つまたは複数が、リソース/帯域幅の不足による許容できないデッドラインミスの切迫した危険な状態であることを検知するように設計されてもよい。切迫した危険な状態のUDMスレッド/コアをスロットリングすることを避けるために、例示的なソリューションは、内部のUDMコア/スレッドがスロットリングされることを防止されるように、外部の非UDMコアまたは内部の非UDMコア/スレッドの1つまたは複数をスロットリングすることに関する。
【００２９】
図1を参照すると、例示的な処理システム101のブロック図が示されている。処理システム101は、ポータブルコンピューティングデバイス(PCD)に関係する、またはこれを備えることがある。処理システム101は、一般に、メモリ112、相互接続部210などの共用リソースを利用することがある、コア222などの1つまたは複数のハードウェア要素からの監視される危険信号に基づいた帯域幅スロットリングのために構成される。処理システム101は、許容できないデッドラインミス(UDM)コア222a1および222a2を含み、全体的に参照番号222aで示された1つまたは複数のUDMコアに結合されたサービス品質(「QoS」)コントローラ204を備えてもよい。UDMコア222a1〜a2は、限定はしないが、ディスプレイアンダーフロー、カメラオーバーフロー、電話呼の途切れ、遅いインターネット接続などの、本開示で許容できないと見なされる例示的なエラー状態を引き起こす場合がある。UDMコア222a1〜a2は、危険レベル信号「B」を出す危険レベルセンサ「A」を含んでもよく、危険レベル信号Bは、QoSコントローラ204によって受け取られ、監視される。
【００３０】
処理システム101はまた、全体的に参照番号222bで示され、非UDMコア222b1〜b4を含む非UDMコアを含むように示されている。非UDMコア222b1〜b4は、危険レベルセンサAを含むように示されていない。いくつかの態様では、非UDMコア222b1〜b4の1つまたは複数が危険レベルセンサAを有することが可能であるが、QoSコントローラ204がこれらの非UDMコア222b1〜b4から任意の危険レベル信号Bを受信しないように、非UDMコア222b1〜b4のこれらのセンサAはいずれもQoSコントローラ204に結合されないか、またはこれらの危険レベルセンサAのスイッチ(図示せず)がオフにされてもよい。
【００３１】
加えて、上述のように、処理システム101はまた、全体的に参照番号222cによって示され、HUC222c1および222c2を含む、ハイブリッドUDMコア(HUC)を含む。HUC222c1〜c2もまた、ハイブリッド危険レベルセンサHと表す危険レベルセンサを含む。ハイブリッド危険レベルセンサHもまた、QoSコントローラ204によって受け取られ、監視される危険レベル信号Bを生成するように構成される。さらに、HUC222cは、QoSコントローラ204によって受け取られ、監視される優先モード信号Fもまた生成し、QoSコントローラ204からHUC内QoSポリシー信号Gを受け取る。HUC222cに関係する信号F、G、およびHについては、以下で図2を参照しながらさらに詳細に説明する。
【００３２】
各UDMコア222a、非UDMコア222b、およびHUC222cは、トラフィックシェーパーまたは、全体的に参照番号206で示され、それぞれのコア222に結合されたトラフィックスロットル206a〜jを含むトラフィックスロットルに結合されてもよい。トラフィックスロットル206は、相互接続部210に結合されてもよく、相互接続部210は、当業者によって理解されるように、1つまたは複数のスイッチファブリック、リング、クロスバー、バスなどを備えることができる。相互接続部210は、1つまたは複数のメモリコントローラ214に結合されてもよい。
【００３３】
全体的に参照番号214によって示され、メモリコントローラ214a〜nを含むメモリコントローラは、メモリ112に結合されてもよい。メモリ112は、揮発性メモリまたは不揮発性メモリを含んでもよい。メモリ112は、限定はしないが、DRAM、IMEMなどを含んでもよい。図示されていないが、処理システム101は、PCI-e外部トランスポートを介して1つまたは複数のPCI周辺機器に結合されたPCIコントローラもまた含んでもよい。
【００３４】
QoSコントローラ204は、スロットルレベルコマンドライン208を介して個別のトラフィックスロットル206にコマンド信号を発してもよい。同様に、QoSコントローラ204は、メモリコントローラQoSポリシーデータライン212を介して個別のメモリコントローラ214にメモリコントローラQoSポリシー信号を発してもよい。QoSコントローラ204はまた、周波数コントローラ202に対して、相互接続部および/またはメモリコントローラの周波数を変更するためのコマンド220Aを発行してもよい。QoSコントローラ204は、UDMコア222aおよびHUC222cによって生成される危険レベル信号Bを監視してもよい。QoSコントローラ204はまた、入力218と表す、相互接続部およびメモリコントローラの周波数を監視してもよい。
【００３５】
周波数コントローラ202は、コマンドライン220Bおよび220Cを介してそれぞれ相互接続部210およびメモリコントローラ214に、周波数変更コマンドを発行してもよい。周波数コントローラ202は、入力として、UDMコア222a、非UDMコア222b、およびHUC222cからなど、マスターから周波数変更要求216を受け取ってもよい。前述のように、周波数コントローラ202はまた、QoSコントローラ204から、相互接続部210および/またはメモリコントローラ214に対する周波数を変更するためのコマンド220Aを受け取ってもよい。
【００３６】
上記で説明したように、その入力の1つとして、QoSコントローラ204は、UDMコア222aおよびHUC222cから危険レベル信号Bを受け取る。さらに、QoSコントローラ204はまた、HUC222cから優先モード信号Fを受け取る。QoSコントローラ204の動作を示すために、まず危険レベル信号Bを説明する。しかしながら、HUC222cに関する場合を除いて、本開示では、QoSコントローラ204、周波数コントローラ202、および関係する態様の詳細な説明は回避される。本出願人の同時係属米国特許出願、第14/588,798号および第14/588,812号が、UDMコア222aおよび非UDMコア222bを含む非HUCのための処理システム101の詳細な説明を提供している。
【００３７】
HUCおよび非HUC(すなわち、UDMコア222aおよび非UDMコア222b)に関してQoSコントローラ204の動作についての関係する背景を提供するために、次に、QoSコントローラ204で危険レベル信号Bを受け取ることおよびスロットル206の管理の概念を、UDMコア222aについて提供する。危険レベル信号Bは、UDMコア222aがデッドラインを守れない危険がある、および/または障害の危険があると考えるレベルまたは度合いを示す情報を含んでもよい。障害は、限定はしないが、ディスプレイエンジン、カメラ、およびモデムなどのハードウェアデバイスに関する背景技術セクションで上述した1つまたは複数のエラー状態を含む場合がある。各危険レベル信号Bは、それぞれのハードウェア要素に対して一意であってもよい。
【００３８】
危険レベル信号B、ならびに相互接続部およびメモリコントローラの周波数218に基づいて、QoSコントローラ204は、監視されている各コア222(UDMコア222a、非UDMコア222b、およびHUC222cを含む)に対する適切なQoSポリシーを決定する。本開示の態様では、いくつかのコア222が、危険レベル信号Bを明示的にシグナリングまたはアサートしない場合があるが、本明細書で説明するように、QoSコントローラ204が、1つまたは複数のコア222から危険レベル信号Bを受け取らないことを、危険レベルをシグナリングしなかった1つまたは複数のコア222の危険の度合いを示す情報として、たとえば、それらの1つまたは複数のコア222は危険ではないという情報として扱う場合もあることを理解されよう。したがって、本明細書で説明するように、危険レベルBを検出することまたは決定することは、明示的にアサートされた危険レベル信号を含むだけでなく、危険レベル信号Bが明示的にアサートされない場合もまた包含する。QoSコントローラ204は、各コア222に対する個別のQoSポリシーを維持する。監視されている各コア222に対するQoSポリシーの適用は、スロットルレベルコマンドライン208を介して、特定のコア222に割り当てられる各それぞれのスロットル206に伝達または中継される。各トラフィックスロットル206は、スロットルレベルコマンドライン208を介してQoSコントローラ204によって指定された帯域幅レベル「D」と合致するように、それぞれのコア222からの帯域幅を調整する。いくつかの態様では、トラフィックスロットル206に伝達されるQoSポリシーはまた、UDMコア222aまたはHUCコア222cからのトランザクションが、相互接続部210、メモリ112などのようなダウンストリーム共用リソースにおいてより高い優先度を与えられるように、トラフィックスロットル206に、それらを通って流れているトランザクションの優先度をより低いレベルに変更するように命令してもよい。
【００３９】
一般に、QoSコントローラ204は、HUC222cをスロットリングするためのポリシーが異なり、HUC222cからの危険レベル信号Bに加えて、優先モード信号Fに基づくことになることに留意しながら、UDMタイプのハードウェア要素である、またはそうではないことがあるコア222のアグレッサコアのトラフィックまたは帯域幅の優先度をスロットリングまたは変更してもよい。たとえば、非UDMコア222bなど、コア222のアグレッサコアの帯域幅をシェーピング/スロットリングすることによって、UDMコア222aは、処理システム101からより多くの帯域幅および/またはより低いレイテンシトランザクションを受け取り、それによって、それぞれのUDMコア222aのそれぞれの危険レベルを下げてもよい。
【００４０】
加えて、QoSコントローラ204はまた、各メモリコントローラ214に対するならびに相互接続部210に対する適切な動作周波数「E」を決定してもよい。相互接続部210および/または1つもしくは複数のメモリコントローラ214の周波数を上げることによって、たとえばUDMコア222aは、より大きい動作帯域幅を受け取ってもよい。QoSコントローラ204は、1つまたは複数のUDMコア222aが障害の危険がないと決定すると、周波数を下げてもよい。具体的には、QoSコントローラ204は、周波数コマンドライン220Aを介して周波数コントローラ202に、周波数制御コマンドを発行してもよい。周波数コントローラ202は、次いで相互接続部210およびメモリコントローラ214に、ライン220B、220Cで周波数変更コマンドを発行してもよい。
【００４１】
次に、HUC222cの帯域幅/リソース管理に関係する例示的な態様について、図1の処理システム101の上記の説明に基づいて詳細に説明する。前述のように、HUCの場合、2つの問題点が発生する。第1の問題点は、外部スロットリングに関する。外部スロットリングは、たとえば、1つまたは複数の非HUC UDMコア222a(たとえば、前述のディスプレイエンジン)が危険を検知し、危険レベル信号Bを発生させる場合に該当し、この危険レベル信号Bに基づいて、QoSコントローラ204は、HUC222cを含むすべての帯域幅アグレッサをスロットリングしようと努めてもよい。これは事実上、QoSコントローラ204が、スロットル206fおよび206j(それぞれHUC222c1および222c2に結合される)にHUC222c1および222c2をスロットリングさせることになる。しかしながら、HUC222cはアクティブなUDMおよび非UDMスレッドを含む場合があり、さらに非UDMスレッド自体がアグレッサである場合があるので、HUC222c1〜c2のUDMスレッドならびに非UDMアグレッサスレッドは、結局スロットリングされることになる場合がある。非UDMスレッドをスロットリングすることは望ましいが、許容できない障害が発生しないようにしている最中に、UDMスレッドがスロットリングされるべきではない。したがって、HUC222cは、以下のようにしてUDMスレッド/コアに影響を及ぼすことなく、HUC222c内の非UDMスレッド/コアをスロットリングするように設計される。
【００４２】
第2の問題点は、たとえば、HUCのUDMスレッドが、同じHUC上で実行中のアグレッサ非UDMスレッドからのリソース競合によりデッドラインを逸する危険があるとき、HUCから発生する内部プレッシャーに関係する。アグレッサ非UDMスレッドは、共用リソースを独占することによってUDMスレッドを、許容できない障害の危険な状態にすることがある。共用リソースは、たとえば、キャッシュ、バッファ、未処理トランザクションなど、HUCの内部にある場合がある。共用リソースはまた、たとえば、相互接続部210またはメモリ112の帯域幅など、HUCの外部にある場合がある。たとえばHUC222c1が内部プレッシャーを受けるこれらの場合、QoSコントローラ204は、HUC222c1上で同時に実行中のUDMスレッドおよび非UDMスレッドの空間分離がないので、HUC222c1に対してスロットル206fを介したスロットリングを適用することができない。
【００４３】
HUC内のUDMスレッドをスロットリングすることに由来する外部および内部の影響を回避するために、UDMスレッドは、例示的な態様において、アグレッサ非UDMスレッドの存在下でそれらのデッドラインを守るために追加された回復力(resiliency)を与えられる。
【００４４】
次に図2を参照すると、例示的なHUC222cのブロック図が示されている。HUC222cは、324a〜nと表す、2つ以上のマルチスレッドプログラマブルコアを含むように示されている。マルチスレッドプログラマブルコア324a〜nは、CPU/DSP/GPUなどとして構成されてもよく、1つまたは複数のプログラマブルスレッドを有することができ、各スレッドは、UDMスレッドまたは非UDMスレッドとすることができる。HUC222cはまた、固定機能サブコア326a〜nを含み、これらはUDMサブコアおよび/または非UDMサブコアを含むことができる。マルチスレッドプログラマブルコア324a〜nは、プログラム可能であるスレッドを有するが、固定機能サブコア326a〜nは、固定機能を実施するように設計されたサブコアである。
【００４５】
優先モードレジスタ320は、UDMおよび非UDMスレッド/コアの混合に関する情報を含む。一般に、UDMスレッド/コアの組成がより高いHUCに、より高い優先度が適用可能であってもよく、UDMスレッド/コアの組成がより低いHUCに、より低い優先度が適用可能であってもよい。優先モードFは、優先モードレジスタ320から出力され、図1に示すQoSコントローラ204に提供される信号である。危険レベル信号Bに加えて、QoSコントローラ204は、HUC222cから優先モード信号Fを受け取る。優先モード信号Fにより、QoSコントローラ204は、HUC222cがスロットリングされ得る程度を評価することができる。たとえば、HUC222c2が、(たとえば、優先モード信号Fのより高い値で示される)多数のUDMスレッドを有する場合、QoSコントローラ204は、対応するスロットル206jにどんなスロットリングも適用しないことがある。一方、HUC222c1が、(優先モード信号Fの低いまたは最小の値によって示されるように)低い数字のUDMコア/スレッドを有すること、またはUDMコア/スレッドがないことがわかる場合、QoSスケジューラ204は、スロットリングのためにHUC222c1を非UDMコアとして扱い、スロットル206fでより大きいスロットリングを適用してもよい。他の態様では、優先モード信号Fは、QoSコントローラ204が特定のHUC222c(たとえば、HUC222c2)に結合されたスロットル(たとえば、スロットル206j)に適用することを可能にされる(スロットリングおよび/または優先レベルを左右する)QoSポリシーを含むテーブルへのインデックスとして、QoSコントローラ204によって使用されてもよい。前に説明したように、スレッド/コアは、それらで動作しているタスクに基づいて、UDMまたは非UDMである場合がある。プログラマブルスレッドは、いくつかのタスクではUDM、いくつかの他のタスクでは非UDMであってもよく、したがって、HUC中のアクティブUDMスレッド/コアの組成は、動的に変わることがある。
【００４６】
マルチスレッドプログラマブルコア324a〜nおよび固定機能サブコア326a〜nは、それぞれの読み書きトランザクションバス304a〜nおよび306a〜n上にデータを出力する。読み書きトランザクションバス304a〜nおよび306a〜nは、図3を参照しながらさらに説明する、HUCの出力トランザクションスケジューラ/マルチプレクサ(OTSM)300に結合される。一般に、OTSM300は、読み書きトランザクションバス304a〜nおよび306a〜nから様々なトランザクションを受け取り、特定の危険レベル(内部および外部)に基づいて、必要に応じて非UDMスレッド/コアをスロットリングすることと、トランザクションに割り当てられた様々な優先度レベルを考慮することと、たとえば、相互接続バス338への読み書きトランザクションにより、相互接続部210に送り出されるトランザクションの優先順位を付け、スケジュールすることとを行うように構成される。(たとえば、非UDMスレッド/コアの)いくつかのトランザクションは、OTSM300によってストールまたは停止されてもよい。
【００４７】
信号ストールソースコマンド305は、マルチスレッドプログラマブルコア324a〜nまたは固定機能サブコア326a〜nの非UDMスレッド/サブコアのいずれか1つまたは複数をストールするために使用されるOTSM300からの出力である。ストールソースコマンド305は、一時的に、マルチスレッドプログラマブルコア324a〜nおよび固定機能サブコア326a〜nの特定のスレッド/コアに適用することができる。
【００４８】
HUC内QoSポリシー信号Gは、QoSコントローラ204の出力であり、この出力は、HUC222cへの入力、具体的には、OTSM300への入力である。HUC内QoSポリシー信号Gは、HUC222cに外部危険を伝達する。たとえば、QoSコントローラ204は、場合によっては、コア222の対応する危険レベルを示すために明示的な信号が受け取られないことがある(たとえば、1つまたは複数のUDMコア222aおよび/または1つまたは複数のHUC222cは、明示的な危険レベル信号をアサートしないことによって危険がないことを示す場合がある)ことにまたしても留意しながら、特定のHUC222c(たとえば、HUC222c2)の非UDMコア/スレッドにどの程度のスロットリングが適用され得るかを決定するために、1つまたは複数のUDMコア222aおよび/または他のHUC222c(たとえば、HUC222c1)から危険レベル信号Bを受け取ってもよい。
【００４９】
OTSM300への別の入力は、QoSコントローラ204に供給されるHUC222cの出力でもある危険レベル信号Bである。危険レベル信号Bは、図2のブロック340で表すHUC危険レベル検出センサHによってHUC222c内で生成される。HUC危険レベル検出ブロック340は、様々なタイプの危険レベル検出を含むことができ、検出することができる様々なタイプの危険レベルに基づいて、集約された危険レベル信号Bを提供するために危険アグリゲータ336を含む。たとえば、図示のように、危険レベル信号301aは、HUC222cによって生成される内部危険信号とすることができ、この信号は、(UDMスレッド/コアが送信を保留している場合、危険が誘発されるに違いないことを示すために、各スレッド/コアに対して動的にプログラムされてもよい、または静的に設定されてもよい)ソフトウェア書込み可能レジスタ328から直接提供することができる。加えて、タイマーベースの危険検出ブロック330が使用されてもよく、ソフトウェア書込み可能レジスタ328がタイマーを設定することができ、タイマーが満了する前に、UDMスレッドがHUC222cのタイマーを無効にしない場合、たとえば、タイマーの満了時に、危険信号301bを設定することができる。ハードウェアベースの危険トリガーが、スレッド/コアごとの帯域幅モニタ332およびスレッド/コアごとの外部レイテンシモニタ334によって提供されることも可能である。UDMスレッドに利用可能な帯域幅が、たとえば、スレッドに固有のあるしきい値を下回る場合、スレッド/コアごとの帯域幅モニタ332によって危険信号301cを生成することができる。たとえば、UDMスレッドのためのトランザクションのレイテンシ(たとえば、対応する読出しコマンドが読み書きトランザクションバス338上に送り出された後に、読み出されたデータがUDMスレッド/コアに戻されるためにかかる時間)が所定のしきい値を超える場合、スレッド/コアごとの外部レイテンシモニタ334によって危険信号301dを生成することができる。
【００５０】
危険レベルアグリゲータ336が、任意の適切な方法、たとえば、重み付き和で、またはルックアップテーブルもしくは他の集約/結合機構を実装することによって、危険信号301a〜dを集約してもよい。危険アグリゲータ336によって出力された危険レベル信号Bは、すでに説明したように、QoSコントローラ204ならびにOTSM300の両方に提供される。すでに説明したように、危険信号301a〜dのすべてがアサートされる、または場合によっては明示的な値を有するとは限らないことがあり、危険アグリゲータ336は、特定の危険信号のアサーションがないことも、危険レベルを決定する際の考慮に入れてもよい。
【００５１】
HUC222cでは、各UDMスレッド/コアが、(たとえば、ハードウェア、ソフトウェア、またはそれらの組合せを介して)、UDMスレッド/コアが危険な状態であることを検出してもよく、上記のように、対応する危険レベル信号BをQoSコントローラ204(HUC222cの外部)に、およびOTSM300(HUC222cの内部)に、伝達してもよい。QoSコントローラ204が、処理システム101の様々なコア222からの危険レベル信号Bを受け取り、監視する間、HUC222cの内部にあるOTSM300は、許容できない障害からUDMスレッド/コアを保護するために、内部的に危険を管理する。OTSM300は、UDMスレッド/コアが危険な状態にないことを確保するために、必要に応じて、マルチスレッドプログラマブルコア324a〜nおよび固定機能サブコア326a〜nからの非UDMスレッド/コアをスロットリングするように構成される。
【００５２】
図3を参照しながら、OTSM300について説明する。OTSM300は、マルチスレッドプログラマブルコア324a〜nおよび固定機能サブコア326a〜nから、それぞれの読み書きトランザクションバス304a〜nおよび306a〜n上でトランザクションを受け取るトラフィックスケジューラおよびマルチプレクサ405を含む。読み書きトランザクションはまた、当技術分野で知られているように、単一の読み書きバスにマージされてもよい。読み書きトランザクションバス304a〜nおよび306a〜nから受け取られるトランザクションのうち、トラフィックスケジューラおよびマルチプレクサ405は、トランザクション304x/306xとして示す第1のサブセットを、トランザクションスコアボード404に転送することができる。場合によっては、トランザクション304y/306yとして示す、読み書きトランザクションバス304a〜nおよび306a〜nから受け取られるトランザクションの第2のサブセットが、トランザクションスコアボード404をバイパスし、出力トランザクションアービタ407に直接送られることがある。
【００５３】
トランザクション304y/306yを含む第2のサブセットは、たとえば、いくつかの態様では、書込みトランザクションを含むことができる。これらの態様では、書込みトランザクションは、読取りトランザクションと同様には、共用リソースの消費に影響を及ぼさない場合があることを認識されたい(たとえば、オーディオアプリケーションを処理するUDMスレッド/コアの前述の例では、共用DRAM帯域幅が、非UDMアグレッサスレッド/コアによって独占される場合があり、UDMスレッド/コアが不足するまたはスロットリングされることを引き起こし、共用DRAMからの読取りデータが時間内にオーディオUDMスレッド/コアによって受け取られない場合、許容できない可聴ポップにつながるが、同様の問題は、書込みトランザクションの場合には存在しない可能性がある)。
【００５４】
トランザクションスコアボード404に入るトランザクションの第1のサブセット304x/306xについて、次に考える。トランザクションスコアボード404は、トランザクションの第1のサブセット304x/306xに関する2ステップのプロセスを実施する。2ステップのプロセスの第1のステップにおいて、トランザクションスコアボード404は、トランザクションの第1のサブセット304x/306xの非UDMスレッドからのトランザクションの送信を遅らせるように設計される。この点について、トランザクションスコアボード404は、危険が存在する場合に、より優先度の低い非UDMスレッド/コアにより大きな遅延が適用されるように、スレッド/コアからのトランザクションを優先度低下の複数のグループにグループ分けするように構成される。このようにしてトランザクションをグループ分けすると、非UDMスレッド/コアによって消費される(HUC222c内部および外部の)共用リソースの量を減らすことによって、非UDMスレッド/コアの実行を遅くすることができる。(HUC222c内部および/または外部の)危険レベルが増えるにつれて、非UDMスレッドから各トランザクションに適用される遅延の量は増える。
【００５５】
さらに詳細には、図3を参照すると、トランザクションスコアボード404は、インデックス「1〜k」付きの複数のエントリを含むことがわかる。各エントリは、1つのフィールドに、トランザクションまたはトランザクションのグループを有し、別のフィールドに、「トランザクションソース優先度」として表示された関連する優先度を有することができる。トランザクションスコアボード404のいくつかのエントリには、トランザクションがない場合があり、したがってそれらは「空きスロット」として示されている。トランザクションスコアボード404内のトランザクションの順序は、それらの優先度を示しておらず、したがって、各トランザクションの優先度は、トランザクションソース優先度フィールドに記憶される。このようなトランザクションスコアボード404の構成は、任意の順序での、および必ずしも到着順とは限らないトランザクションスコアボード404からのトランザクションの挿入および削除を可能にする。諒解されるように、最も高い優先度のトランザクションが、UDMスレッド/コアとなり、非UDMスレッド/コアは、トランザクションスコアボード404においてより低い/最も低い優先度値を受け取る。いくつかのトランザクションは、所定の優先度レベルを有することがあるが、トランザクションスコアボード404内のトランザクションの優先度レベルが時間とともに変化することも可能であることを理解されよう。たとえば、プリフェッチ動作に関係する(すなわち、データの実際の要求に先立って、メモリ112などの共用リソースからデータをフェッチするための)スレッド/コアは、低くてもよい。しかしながら、(たとえば、プリフェッチ動作と同じアドレスまたは同じキャッシュラインからデータを読み取る要求が、トランザクションスコアボード404によって受け取られるために)その同じトランザクションがオンデマンド(on-demand)フェッチになる場合、許容できないデッドラインミスが発生するおそれがないうちに、フェッチされるべき要求に応じたデータを取得することが重要になるので、そのトランザクションの優先度を上げることができる。
【００５６】
OTSM300はまた、参照番号403a〜nで表すN個のカウンタを含み、カウンタはそれぞれ、トランザクションスコアボード404に1〜Nの範囲の優先レベルを有するトランザクションがいくつあるかをカウントする。たとえば、優先度1トランザクションカウンタ403aは、最も高い優先レベル「1」を付けたトランザクションの数をカウントする。同様に、優先度Nトランザクションカウンタ403nは、最も低い優先レベル「N」を付けたトランザクションの数をカウントする。
【００５７】
QoSポリシー生成器401は、(図2の)HUC危険検出センサHからの危険レベル信号B(内部危険)、およびHUC内QoSポリシー信号G(外部危険)を受け入れ、スコアボードQoSポリシー410として示す信号で統合危険レベルをスコアボードデキュースケジューラ402に供給するモジュールである。QoSポリシー生成器401は、危険レベル信号BおよびHUC内QoSポリシー信号Gによってインデックス付けされたルックアップテーブルとして実装されてもよく、インデックス付きエントリは、スコアボードQoSポリシー410のようにQoSポリシー生成器401からの出力として提供される統合危険レベルを含んでもよい。代替的にはQoSポリシー生成器401は、固定またはプログラム可能な論理関数として、さらにはマイクロコントローラなど、プログラム可能なコアとして実装されてもよい。いくつかの態様では、QoSポリシー生成器401は、HUC222cのスレッド/コアの1つによって定期的にプログラムされるレジスタとすることができる。
【００５８】
したがって、スコアボードデキュースケジューラ402は、カウンタ403a〜nからの様々な優先レベルのトランザクションの数のカウント、および統合危険レベル、すなわちQoSポリシー生成器401からのスコアボードQoSポリシー410を受け取る。スコアボードデキュースケジューラ402は、したがって、様々な関連する優先レベルならびに内部および外部の危険の統合表示とともに、トランザクションスコアボード404に現在いくつのトランザクション/トランザクショングループが保留中であるかに関する情報を有する。スコアボードデキュースケジューラ402は、どのトランザクションがデキューされ、スコアボードデキューエンジン306を通して出力トランザクションアービタ407に送り出されるべきかを決定するためにこの情報を使用する。たとえば、スコアボードQoSポリシー410上の統合された内部および外部の危険表示が低い場合、低優先度(たとえば、非UDMスレッド/コア)のより多くが、スコアボードデキューエンジン306を通してデキューされ得る。スコアボードQoSポリシー410上の統合された内部および外部の危険表示が高い場合、低優先度(たとえば、非UDMスレッド/コア)が遅延されることになると同時に、スコアボードデキューエンジン306を通して高優先度(たとえば、UDMスレッド)をデキューすることが可能にされることになる。したがって、いくつかの態様では、2つ以上のスレッドに対する決定された危険レベルが低い場合、1つまたは複数の低優先度トランザクションがスケジュールされてもよく、2つ以上のスレッドに対する決定された危険レベルが高い場合、1つまたは複数の高優先度トランザクションがスケジュールされ得ると当時に、1つまたは複数の低優先度トランザクションのスケジューリングが遅延される。スコアボードデキュースケジューラ402が、同じ優先度を有するトランザクションのグループからのトランザクションをデキューすることを決定する場合、スコアボードデキュースケジューラ402は、トランザクションのグループから1つのトランザクションを選択するために裁定方式(arbitration scheme)を採用してもよく、裁定方式は、ラウンドロビン、先着順、ランダム選択、または他の技法を含むことができる。
【００５９】
出力トランザクションアービタ407は、スコアボードデキューエンジン306を通してトランザクションスコアボード404からのデキューされるトランザクション、およびトランザクションスコアボード404をバイパスするトランザクションの第2のサブセット304y/306yを受け取り、これらの間で裁定する。出力トランザクションアービタ407は、裁定に基づいて、相互接続部338に(たとえば、図1より共用相互接続部210に)読み書きトランザクションを送り出す。たとえば、UDMスレッド/コアからの高優先度トランザクションが、スコアボードデキューエンジン306から受け取られる場合、出力トランザクションアービタ407は、トランザクションスコアボード404をバイパスするトランザクションの第2のサブセット304y/306yよりも、トランザクションスコアボード404からデキューされるトランザクションを優先する。トランザクションをスケジュールするためにOTSM300によって実施される前述の2ステップのプロセスの第1のステップは、トランザクションが、相互接続部338への読み書きトランザクションとして示されるバスへ出力トランザクションアービタ407によって送り出されるとき、完了されると見なされる。
【００６０】
OTSM300によって実施される2ステップのプロセスの第2のステップについて、次に説明する。第2のステップでは、スコアボードデキュースケジューラ402がまたしても採用される。スコアボードデキュースケジューラ402は、カウンタ403a〜nによって供給される情報に基づいて、(たとえば、非UDMスレッド/コアからの)低優先度トランザクションの所定数を超えたかどうかを決定するように構成される。非UDMスレッドからのトランザクションスコアボード404内のトランザクションの数が所定数を超える場合、これらの多数の低優先度トランザクションでトランザクションスコアボード404を満たしているこれらの非UDMスレッドの実行は、ストールされることになる。これは、詳細には、スコアボードQoSポリシー410上の統合された内部および外部の危険レベル表示が高い場合である。スコアボードデキュースケジューラ402は、トランザクションスコアボード404内のこれらの低優先度スレッドからのトランザクションの数が減少するまで、マルチスレッドプログラマブルコア324a〜nおよび/または固定機能コア326a〜n上の1つまたは複数の非UDMスレッドの実行を一時的にストールするために、前述のストールソースコマンド305(図2の説明参照)を生成する。認識されるように、このプロセスによって、より優先度の低い非UDMスレッドグループが、より優先度の高い非UDMスレッドグループより先にストールされる。
【００６１】
このようにして、UDMスレッド/コア(リアルタイムスレッド/コアとも呼ばれる)ならびに非UDMスレッド/コア(非リアルタイムスレッド/コアとも呼ばれる)を含むHUC222cは、スレッド/コアの間のサービス品質(QoS)を強化し、UDMスレッド/コアをスロットリングしない、または許容できないような障害に陥らせないようにして、様々なスレッド/コアをスケジュール/管理することができる。HUC222cは、短期間の間(ソフトウェアのみの機構では十分に速く検出することができない場合がある)危険が発生した場合でも、UDMスレッド/コアがそれらのデッドラインを逸しないことを確保するために、(たとえば、図2〜図3に関して示し、説明したように)UDMスレッド/コアへの危険の検出およびシグナリングのための、ハードウェアベースのソリューションを実施することができる。説明したように、各スレッドに適用されるQoS抑制またはスロットリングのレベルは、スレッドに対する危険レベルおよびスレッドの優先度の関数である。
【００６２】
態様は、本明細書で開示するプロセス、機能、および/またはアルゴリズムを実行するための様々な方法を含むことが諒解されよう。たとえば、図4は、2つ以上の処理スレッド(たとえば、マルチスレッドプログラマブルコア324a〜n、固定機能コア326a〜nのUDMスレッド/コアおよび非UDMスレッド/コアなど)を含むマルチスレッドプロセッサ(たとえば、HUC222c)において共用リソースを管理する方法500を示す。マルチスレッドプロセッサは、たとえば、デジタル信号プロセッサ(DSP)、汎用プロセッサ(GPP)、または中央処理ユニット(CPU)のうちの1つとすることができる。
【００６３】
ブロック502において、方法500は、2つ以上のスレッドに対する危険レベルを決定するステップを含み、スレッドの危険レベルは、共用リソースを利用できないことによりスレッドがデッドラインを潜在的に守れないことに基づいている。たとえば、危険アグリゲータ336が、危険レベル信号BでHUC222cの内部危険レベルを供給し、外部危険レベルは、HUC内QoSポリシー信号Gを介してOTSM300に供給される。スレッドに対する危険レベルは、スレッドがスロットリングされる/相互接続部210、メモリ112などの共用リソースが不足することになる可能性に基づいている。
【００６４】
ブロック504において、方法500は、2つ以上のスレッドに関連する優先レベルを検出するステップを含み、優先レベルは、デッドラインを守れないことが許容できないスレッドに対してより高く、優先レベルは、デッドラインを守れないことが許容できるスレッドに対してより低い。いくつかの態様では、スレッドの優先レベルに基づいてスコアボード(たとえば、トランザクションスコアボード404)内の1つまたは複数のスレッドからのトランザクションをグループ分けすることにより、優先レベルに基づくスケジューリングが可能になる。たとえば、トランザクションスコアボード404は、優先レベルの順にグループ分けされた、様々なトランザクションに対する優先レベルを記憶する。カウンタ403a〜nは、各優先レベルを持つトランザクションの数をカウントし、それらをスコアボードデキュースケジューラ402に供給する。
【００６５】
ブロック506において、方法500は、2つ以上のスレッドに対する決定された危険レベル、および2つ以上のスレッドに関連する優先レベルに少なくとも基づいて、2つ以上のスレッドをスケジュールするステップを含む。たとえば、統合された内部および外部危険レベルは、信号スコアボードQoSポリシー410で、スコアボードデキュースケジューラ402に提供される。カウンタ403a〜nからの優先レベル情報と組み合わせられて、スコアボードデキュースケジューラ402は、スコアボードデキューエンジン306に、トランザクションスコアボード404内の保留中のトランザクションをデキューおよびスケジュールするよう命令する。トランザクションは、出力トランザクションアービタ407によって、たとえば相互接続部210に送り出される。
【００６６】
図4の図示した方法500では、デッドラインを守れないことが許容できる少なくとも1つの低優先度スレッド(たとえば、非UDMコア/スレッド)が、スロットリングされることが諒解されよう(たとえば、低優先度または非UDMスレッド/コアが、スコアボードデキュースケジューラ402によってスケジュールされることを防止されるか、または低優先度トランザクションを生成するスレッド/コアが、スコアボードデキュースケジューラ402によって供給されるストールソースコマンド305によって実行を防止/ストールされるためである)。この文脈においてわかるように、低優先度スレッドをスロットリングすることは、低優先度スレッドからの低優先度トランザクションのスケジューリングを防止することまたは遅らせることを意味することができ、低優先度トランザクションは、スケジュールされると共用リソースを消費することになる。さらに、低優先度スレッドをスロットリングすることはまた、デッドラインを守れないことが許容できない少なくとも1つの高優先度スレッド(たとえば、UDMスレッド/コア)から高優先度トランザクションをスケジュールすることをもたらす、または可能にすることができ、高優先度スレッドのための共用リソースは、低優先度トランザクションをスロットリングすることに基づいて利用可能にされる(たとえば、相互接続部210/メモリ112が、非UDMスレッド/コアをスロットリングすることによってスケジュールされる、UDMスレッド/コアからのトランザクションに使用されてもよい)。
【００６７】
方法500のいくつかの態様では、2つ以上のスレッドに対する危険レベルを決定することは、2つ以上のスレッドの内部危険レベル(たとえば、危険アグリゲータ336によって提供される危険レベル信号B)、およびマルチスレッドプロセッサを備えるシステムの1つまたは複数のコアの外部危険レベル(たとえば、QoSコントローラ204によって供給されるHUC内QoSポリシー信号G)に基づいているが、1つまたは複数の内部危険レベルまたは外部危険レベルは、明示的にアサートされない場合があることに留意する。たとえば、内部危険レベルは、(たとえば、危険アグリゲータ336により)、各スレッドに対する危険レベルでプログラムされるソフトウェアプログラマブルレジスタ(たとえば、328)によって提供される危険レベル(たとえば、301a)、スレッドに関連するタスクが完了される前にタイマーが満了する場合、タイマー(たとえば、330)によって提供される危険レベル(たとえば、301b)、各スレッドに対する帯域幅モニタ(たとえば、332)によって提供される危険レベル(たとえば、301c)、または各スレッドに対するレイテンシモニタ(たとえば、334)によって提供される危険レベル(たとえば、301d)のうちの1つまたは複数に基づくことができる。
【００６８】
図5を参照すると、例示的態様に従って構成されたワイヤレスデバイス(たとえば、PCD)のブロック図が示され、全体的に600と表されている。ワイヤレスデバイスまたはPCD600は、以下で説明するように、図1の処理システム101のいくつかの態様を含む。ワイヤレスデバイス600において、図2〜図3に示すようにUDMスレッド/コアおよび非UDMスレッド/コアの混合を含むマルチスレッドプロセッサとして構成することができるHUC222cについて、詳細に説明する。HUC222cは、DSP、CPU、汎用プロセッサなどとすることができる。HUC222cは、図4の方法500を実施するように構成することができる。HUC222cおよび相互接続部210に結合されたスロットル206f/206j、ならびに相互接続部210およびメモリ112に結合されたメモリコントローラ214など、図1のいくつかの態様は、図5に代表的に示されているが、QoSコントローラ204、周波数コントローラ202、および関係する相互接続など、図1の他の態様は、明快のために、図5には示されていないが、図1の様々な態様および詳細は、図5に再び明示的に示されていないとはいえ、ワイヤレスデバイス600に含まれる場合があることに留意する。図5に示されているように、HUC222cはまた、いくつかの適用例ではメモリ112に直接結合されてもよい(さらに例示的な態様では、HUC222cとメモリ112との間の通信は、HUC222cとメモリ112との間に構成されたスロットル206f/206j、相互接続部210、メモリコントローラ214などの構成要素を介するものであってもよい)。
【００６９】
図5は、HUC222cおよびディスプレイ628に結合された、ディスプレイコントローラ626も示している。コーダ/デコーダ(コーデック)634(たとえば、オーディオおよび/または音声コーデック)は、HUC222cに結合されることがある。(モデムを含む場合がある)ワイヤレスコントローラ640などの他の構成要素も示されている。スピーカ636およびマイクロフォン638が、コーデック634に結合されることがある。図5は、ワイヤレスコントローラ640をワイヤレスアンテナ642に結合できることも示している。いくつかの態様では、HUC222c、ディスプレイコントローラ626、メモリ112、コーデック634、およびワイヤレスコントローラ640(ならびにいくつかの例では、QoSコントローラ204、周波数コントローラ202、様々なスロットル206、様々なメモリコントローラ214、相互接続部210などの図1の態様)が、処理システム101に含まれてもよく、処理システム101は、システムインパッケージまたはシステムオンチップデバイスとして構成することができる。さらに、いくつかの態様では、ディスプレイコントローラ626、ワイヤレスコントローラ640、およびコーデック634は、図1に示すコア222(たとえば、UDMコア222a、非UDMコア222bなど)の1つまたは複数を備えることができる。
【００７０】
ある特定の態様では、入力デバイス630および電源644が、システムオンチップデバイスまたは処理システム101に結合される。さらに、ある特定の態様では、図5に示すように、ディスプレイ628、入力デバイス630、スピーカ636、マイクロフォン638、ワイヤレスアンテナ642、および電源644は、システムオンチップデバイスまたは処理システム101の外部にある。ただし、ディスプレイ628、入力デバイス630、スピーカ636、マイクロフォン638、ワイヤレスアンテナ642、および電源644の各々は、インターフェースまたはコントローラのような、システムオンチップデバイスまたは処理システム101の構成要素に結合することができる。
【００７１】
図5はワイヤレス通信デバイスを示しているが、HUC222cおよびメモリ112は、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、娯楽ユニット、ナビゲーションデバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、モバイルフォン、コンピュータ、ラップトップ、タブレット、携帯電話、または同様のデバイスに組み込まれてもよいことに留意されたい。
【００７２】
当業者は、情報および信号が、様々な異なる技術および技法のいずれを使用しても表現され得ることを諒解するであろう。たとえば、上の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表現され得る。
【００７３】
さらに、当業者は、本明細書において開示される態様に関連して説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、またはその両方の組合せとして実装され得ることを諒解するであろう。ハードウェアとソフトウェアとのこの互換性を明瞭に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、上では全般的にその機能に関して説明された。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、具体的な適用例およびシステム全体に課される設計制約によって決まる。当業者は説明した機能を特定の適用例ごとに様々な方法で実施する場合があるが、そのような実装決定は、本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
【００７４】
本明細書で開示する態様に関して説明する方法、シーケンスおよび/またはアルゴリズムは、直接ハードウェアにおいて具現化されても、プロセッサによって実行されるソフトウェアモジュールにおいて具現化されても、またはその2つの組合せにおいて具現化されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体内に存在してもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取ること、および記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替として、記憶媒体は、プロセッサと一体であってもよい。
【００７５】
したがって、本発明の態様は、マルチスレッドプロセッサのスレッドを管理/スケジュールするための方法を具現化するコンピュータ可読媒体を含むことができる。したがって、本発明は例示の例に制限されず、本明細書に記載される機能性を実施するための任意の手段は、本発明の態様に含まれる。
【００７６】
上記の開示が本発明の例示の態様を示す一方で、添付される特許請求の範囲により規定されるような、本発明の範囲から逸脱することなく、本明細書に様々な変形および変更を行うことができることに留意されたい。本明細書に記載される本発明の態様に従う方法クレームの機能、ステップ、および/または行為を、任意の特定の順序で実施する必要はない。さらに、本発明の要素は、単数形で記載され、特許請求される場合があるが、単数形への制限が明示的に言及されない限り、複数形が意図される。
【符号の説明】
【００７７】
101  処理システム
112  メモリ
202  周波数コントローラ
204  サービス品質(QoS)コントローラ
206  トラフィックスロットル
208  スロットルレベルコマンドライン
210  相互接続部
212  メモリコントローラQoSポリシーデータライン
214  メモリコントローラ
216  周波数変更要求
218  相互接続部およびメモリコントローラの周波数
220  コマンドライン
222a  許容できないデッドラインミス(UDM)コア
222b  非UDMコア
222c  ハイブリッドUDMコア(HUC)
300  出力トランザクションスケジューラ/マルチプレクサ(OTSM)
304  読み書きトランザクションバス
305  ストールソースコマンド
306  スコアボードデキューエンジン
320  優先モードレジスタ
324  マルチスレッドプログラマブルコア
326  固定機能サブコア
328  ソフトウェア書込み可能レジスタ
330  タイマー
332  帯域幅モニタ
334  レイテンシモニタ
336  危険アグリゲータ
338  読み書きトランザクションバス
402  スコアボードデキュースケジューラ
403  カウンタ
404  トランザクションスコアボード
407  出力トランザクションアービタ
410  信号スコアボードQoSポリシー
600  ワイヤレスデバイス
626  ディスプレイコントローラ
628  ディスプレイ
630  入力デバイス
634  コーダ/デコーダ(コーデック)
636  スピーカ
638  マイクロフォン
640  ワイヤレスコントローラ
642  ワイヤレスアンテナ
644  電源
【図１】
0006703009.tif 000002
【図２】
0006703009.tif 000003
【図３】
0006703009.tif 000004
【図４】
0006703009.tif 000005
【図５】
0006703009.tif 000006