(57)【要約】  発明は、ソフトウェアプログラムの計算ブロックをマルチプロセッサシステムのコアに割り当てるための方法（５００）であって、当該方法（５００）が、マルチプロセッサシステムの利用可能な第１のタイプのコアの第１の個数、及びマルチプロセッサシステムの利用可能な第２のタイプのコアの第２の個数を見積もるステップ（５０１）と、第１のタイプのコアにバインドする計算ブロックのループの第１の数、及び第２のタイプのコアにバインドする計算ブロックのループの第２の数を判定するステップ（５０２）と、第１の数のループを第１のタイプのコアにバインドするとともに、第２の数のループを第２のタイプのコアにバインドするステップ（５０３）と、バインドするステップ（５０３）に従って計算ブロックのループを実行するステップ（５０４）とを含む、方法に関連する。
2016532183.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアプログラム（３００）の計算ブロック（３０１）をマルチプロセッサシステム（４００）のコア（４０１、４０３）に割り当てるための方法（５００）であって、当該方法（５００）が、
前記マルチプロセッサシステム（４００）の利用可能な第１のタイプのコア（４０９）の第１の個数（Ｋ１ａｃｔ）、及び前記マルチプロセッサシステム（４００）の利用可能な第２のタイプのコア（４１１）の第２の個数（Ｋ２ａｃｔ）を見積もるステップ（５０１）と、
前記第１のタイプの前記コア（４０９）にバインドするための前記計算ブロックの第１の数（ｎ１）のループ（２０３）、及び前記第２のタイプの前記コア（４１１）にバインドするための前記計算ブロックの第２の数（ｎ２）のループ（２０５）を判定するステップ（５０２）と、
前記第１の数（ｎ１）のループ（２０３）を前記第１のタイプの前記コア（４０９）にバインドするとともに、前記第２の数（ｎ２）のループ（２０５）を前記第２のタイプの前記コア（４１１）にバインドするステップ（５０３）と、
前記バインドするステップ（５０３）に従って前記計算ブロック（３０１）の前記ループ（２０３、２０５）を実行するステップ（５０４）とを含む、方法。
【請求項２】
前記第１の数（ｎ１）及び前記第２の数（ｎ２）のループ（２０３、２０５）を判定する前記ステップ（５０２）が、前記利用可能な前記第１のタイプのコア（４０９）及び前記利用可能な前記第２のタイプのコア（４１１）に関する負荷バランス関係式に従う、請求項１に記載の方法（５００）。
【請求項３】
前記第１（ｎ１）及び第２の数（ｎ２）のループ（２０３、２０５）を判定する前記ステップ（５０２）が、前記第１のタイプの前記コア（４０９）及び前記第２のタイプの前記コア（４１１）の素子性能に従う、請求項１又は請求項２に記載の方法（５００）。
【請求項４】
利用可能な前記第１のタイプのコア（４０９）の前記第１の個数（Ｋ１ａｃｔ）、及び利用可能な前記第２のタイプのコア（４１１）の前記第２の個数（Ｋ２ａｃｔ）を見積もる前記ステップ（５０１）が、前記マルチプロセッサシステム（４００）のバックグラウンド負荷を見積もることに基づいている、請求項１から請求項３のいずれか一項に記載の方法（５００）。
【請求項５】
前記第１の数（ｎ１）のループが、下記のパラメータ、すなわち前記第１のコア（４０９）におけるループ実行時間（Ｔ１）、前記第２のコア（４１１）におけるループ実行時間（Ｔ２）、前記第１のコア（４０９）のクロック周波数（ｆ１）、及び前記第２のコア（４１１）のクロック周波数（ｆ２）のうちの少なくとも１つに基づいて判定される、請求項１から請求項４のいずれか一項に記載の方法（５００）。
【請求項６】
前記第１の数（ｎ１）のループが、下記の関係式に従って判定され、
【数１３】
2016532183.tif 000015
ここで、Ｋ１が前記第１のタイプのコアの個数であり、Ｋ２が前記第２のタイプのコアの個数であり、Ｋ１ａｃｔがＫ１の実際の値であり、Ｋ２ａｃｔがＫ２の実際の値であり、ｆ１が前記第１のコアのクロック周波数であり、ｆ２が前記第２のコアのクロック周波数であり、Ｎが前記計算ブロックのループの総数であり、そして、実数値の数の演算子
【数１４】
2016532183.tif 000016
が前記数の前記少数部分を除外することにより前記数の整数値の見積もりを表示する、請求項１から請求項５のいずれか一項に記載の方法。
【請求項７】
前記第２の数（ｎ２）のループ（２０５）が、前記第２の数（ｎ２）のループ（２０５）と前記第１の数（ｎ１）のループ（２０３）の合計がループの前記総数（Ｎ）に対応するように判定される、請求項１から請求項６のいずれか一項に記載の方法（５００）。
【請求項８】
利用可能なコア（４０９）の前記第１の個数（Ｋ１ａｃｔ）を見積もる前記ステップ（５０１）が、バックグラウンド負荷によって忙しい前記第１のタイプのコアの個数を見積もることに基づいているとともに、利用可能なコア（４１１）の前記第２の個数（Ｋ２ａｃｔ）を見積もるステップが、バックグラウンド負荷によって忙しい前記第２のタイプのコアの個数を見積もることに基づいている、請求項１から請求項７のいずれか一項に記載の方法（５００）。
【請求項９】
利用可能な前記第１のタイプのコア（４０９）の前記第１の個数（Ｋ１ａｃｔ）と前記バックグラウンド負荷（４０５）によって忙しい前記第１のタイプのコアの前記個数の合計が、前記第１のタイプのコアの総数（Ｋ１）に対応するとともに、利用可能な前記第２のタイプのコア（４１１）の前記第２の個数（Ｋ２ａｃｔ）と前記バックグラウンド負荷（４０７）によって忙しい前記第２のタイプのコアの前記個数の合計が、前記第２のタイプのコアの総数（Ｋ２）に対応する、請求項８に記載の方法（５００）。
【請求項１０】
前記マルチプロセッサシステム（４００）が、マルチコア・メニーコアヘテロジニアスコンピューティングシステムを備える、請求項１から請求項９のいずれか一項に記載の方法（５００）。
【請求項１１】
前記ソフトウェアプログラム（３００）の前記計算ブロック（３０１）が、大規模パラレル計算ブロック（３０１）を備える、請求項１から請求項１０のいずれか一項に記載の方法（５００）。
【請求項１２】
前記第１のタイプの前記コア（４０９）の消費電力が、前記第２のタイプの前記コア（４１１）の消費電力と異なる、請求項１から請求項１１のいずれか一項に記載の方法（５００）。
【請求項１３】
ソフトウェアプログラムの計算ブロックのループを、第１のタイプのコア及び第２のタイプのコアを備えるマルチプロセッサシステムのコアに割り当てるためのシステム（３００）であって、当該システム（３００）が、
前記第１のタイプの前記コアの利用可能なリソース、及び前記第２のタイプの前記コアの利用可能なリソースを見積もるように構成されるモニタリングブロック（３０３）と、
前記第１のタイプの前記コア及び前記第２のタイプの前記コアの前記の見積もられた利用可能なリソースに基づいて、前記ループを前記第１のタイプの前記コア及び前記第２のタイプの前記コアにバインドするように構成されるバインディングブロック（３０７）とを備える、システム。
【請求項１４】
前記バインディングブロック（３０７）により前記コアにバインドされた前記ループを実行するように構成される大規模パラレル計算ブロック（３０５）を備える、請求項１３に記載のシステム。
【請求項１５】
前記バインディングブロック（３０７）が、実行時に前記大規模パラレル計算ブロック（３０５）が前記バインドされたループによって実行されるように、前記ループを前記コアに動的にバインドするように構成される、請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ソフトウェアプログラムの計算ブロックをマルチプロセッサシステムのコアに割り当てるための方法及びシステムに関する。本開示は、さらに、マルチコア・メニーコアヘテロジニアスコンピューティングシステムにおける適応タスクスケジューリングのシステム及び方法に関する。
【背景技術】
【０００２】
マルチコア・メニーコアヘテロジニアスコンピューティングシステム（ＭＭＣＨＣＳ）は、最近、ネットワーキングにおいて、また携帯電話、ＰＤＡ、そしてさらにサブノートコンピュータのような携帯システムにおいて広く使用されている。これらのシステムは、２つのタイプのプロセッサコア、すなわち、高性能演算向けの通常のコア、及び省電力指向の演算向けの低電力コアを含む。第２のタイプのコアは、可能である場合には、コンピューティングシステムのエネルギー消費をカットすることを可能にする。これは、同様に、コンピューティングシステムの消費電力を減らすことにつながるとともに、再充電することなく、携帯システムにおける電池の寿命を延ばすことを可能にする。非常に多くの場合、全てのコア又はプロセッサは、同じチップに位置しており、そして、この場合、これらのシステムは、システムオンチップ（ＳｏＣ）コンピューティングシステムとして知られている。ＭＭＣＨＣＳの動作のために使用する通常のシステムソフトウェアは、コンパイラ及びスケジューラを含む。コンパイラは、そのような装置上で動くプログラムの生成に関与するとともに、スケジューラは、実行時におけるそのような装置のローディングに関与する。これらのシステムのためのソフトウェア開発における主な課題は、どのような種類のコアがＭＭＣＨＣＳにおける現在のプログラムブロックの動作のために使用されるべきであるかという問題の解決法にある。全ての最新のコンパイラにおいて、この解決法は、プログラマによりいわゆるマニュアルで実行される。このことは、ＭＭＣＨＣＳの効率の予測に関するプログラマ自身のアイデアを追求する全てのプログラマが、プログラマのプログラムの現在のブロックの実行のために、どのような種類のコアをプログラマが使用することになるかを決定するとともに、プログラマのプログラムにおいて、プログラマ自身によりいわゆるマニュアルで、現在のブロックをコアタイプに厳格に割り当てる、ことを意味する。
【０００３】
そのプログラムの後に続く実行の間、いかなる方法によってもこの割り当てを変更することは、可能ではない。最新のスケジューラは、同様に、この管理を変更することができない。これは、計算の不均衡に起因する、ＭＭＣＨＣＳの効率の損失を引き起こす。
【０００４】
図１において示されたように、各プログラム１００は、シーケンシャルブロック１０１、１０５、１０９を含む。最初と最後のブロック１０１、１０９は、常にシーケンシャルであるが、しかし、全ての他の中間ブロック１０３、１０５、１０７は、シーケンシャル、パラレル、又は大規模パラレルであり得る。
【０００５】
パラレルブロック１０３と大規模パラレルブロック１０７との間の差異は、パラレルブロック１０３が指定されたコア上で動いている場合のパラレルループの数にある。例えば、もしパラレルブロック１０３が８個のループを有するとともに、コンピューティングシステムが８個の利用可能なコアを含むならば、その場合に、このブロックは、全てのループがコアに一度にロードされることができるので、大規模パラレルではなく、パラレル又は単純パラレルになるであろう。もしわずか２個の利用可能なコアを有するシステムに８個のループが存在するならば、全てのループをロードするために４回を必要とするので、その場合には、大規模パラレルブロックが存在する。
【０００６】
大規模パラレルブロックの下記の定義が、これ以降で使用される。Ｋ個のコア又はプロセッサ、及びＮ個のパラレルループがブロック内に存在する。その場合に、もしＮ／Ｋ＞３であるならば、検討しているブロックは大規模パラレルである。そうでなければ、ブロックは、単純パラレル又はパラレルである。したがって、もし全ての利用可能なループが、１回、２回、又は３回でロードされることができるならば、その場合に、検討しているパラレルブロックは、単純パラレル又はパラレルである。そうでなければ、その場合に、それは、パラレルブロックのループを単位として全ての利用可能なループをロードするために４回以上を必要とし、大規模パラレルブロックが存在する。
【０００７】
現在使用されるマルチコア・メニーコアヘテロジニアスコンピューティングシステム（ＭＭＣＨＣＳ）は、プログラムブロックをプロセッサコアにスケジュールすることに関して静的である。ＣＰＵのための作業負荷の分割は、静的で、かつ動的に変更することができず、特に、静的な負荷バランススキームが使用され、そしてバックグラウンドタスクはモニタリングされない。現在使用されるＭＭＣＨＣＳは、柔軟性がなく、かつ使いにくい。
【発明の概要】
【０００８】
マルチプロセッサシステム上でプログラムタスクを柔軟にスケジュールするための技術を提供することが本発明の目的である。
【０００９】
この目的は、独立請求項の特徴によって達成される。更なる実施形態が、従属請求項、明細書、及び図面から明白である。
【００１０】
本発明は、ソフトウェアにおける現在の大規模パラレル計算ブロックをＭＭＣＨＣＳ内のコアタイプに自動的に割り当てることにより、これらのシステムの実行時における電力効率の良い負荷バランスを提供するために、マルチプロセッサシステム上でプログラムタスクを柔軟にスケジュールするための技術が達成されることができる、ということの発見に基づいている。
【００１１】
ＭＭＣＨＣＳにおけるコアタイプに対する、現在の大規模パラレル計算ブロックの自動割り当ては、実行時にこれらのシステムの最高の負荷バランスを提供するように、ソフトウェアにおいて提供される。
【００１２】
動的なループ対プロセッサマッピングは、マルチコア・メニーコアプロセッサにおける大規模パラレルブロック実行処理のための実行時に利用可能なリソースに基づいている。大規模パラレルブロック実行処理の前に、ＭＭＣＨＣＳの概算の利用可能なリソースに基づいて、スケジューラは、いくつのループ、及びどのループがＭＭＣＨＣＳのコアと関連付けられるかを決定する。この解決法は、大規模パラレルブロック実行処理の間の、異なるタイプのコアのローディングの待ち時間を最小限にする。
【００１３】
その解決法を適用することは、２つのタイプのコアを含むマルチコア・メニーコア構造を有する計算システムを使用する効率を増加させる。
【００１４】
提示された方法は、実際には、適切な人件費によって実施され得る。本発明の態様は、並列処理の最も一般的な特別な場合に適用することができる。すなわち、１つの最初のタスクの多数の同じサブタスクを並列に実行することの例が観察される。１個のループの異なる反復を並列に実行する場合に、そのような種類の並列処理が存在する。一方、通常、それは、まさに全プログラムの実行時間の大部分を必要とするループである。したがって、本発明の態様は、ループ反復の並列処理を開発することにより、並列処理を使用することの最も効果的な取り組み方を提供する。
【００１５】
本発明を詳細に説明するために、下記の用語、省略形、及び表記法が使用されることになる。
ＭＭＣＨＣＳ：マルチコア・メニーコアヘテロジニアスコンピューティングシステム。
ＳｏＣ：システムオンチップ。
ＣＰＵ：中央処理装置。
【００１６】
第１の態様によれば、本発明は、ソフトウェアプログラムの計算ブロックをマルチプロセッサシステムのコアに割り当てるための方法であって、当該方法が、前記マルチプロセッサシステムの利用可能な第１のタイプのコアの第１の個数、及び前記マルチプロセッサシステムの利用可能な第２のタイプのコアの第２の個数を見積もるステップと、前記第１のタイプの前記コアにバインドするための前記計算ブロックの第１の数のループ、及び前記第２のタイプの前記コアにバインドするための前記計算ブロックの第２の数のループを判定するステップと、前記第１の数のループを前記第１のタイプの前記コアにバインドするとともに、前記第２の数のループを前記第２のタイプの前記コアにバインドするステップと、前記バインドするステップに従って前記計算ブロックの前記ループを実行するステップとを含む、方法に関連する。
【００１７】
第１の数のループを第１のタイプのコアにバインドするとともに、第２の数のループを第２のタイプのコアにバインドすることにより、マルチプロセッサシステムの性能は増加し、そして最小限の完了時間は減少する。プロセッサコアに対するループのその特有のバインディングによって、負荷バランス問題が解決され、そして各特定のアプリケーションの総計の完了時間が最小限にされる。最適なループ対コアマッピングが提示され、それは完了時間をその潜在的最小限に到達させる。バインドするステップに従って計算ブロックのループを実行することは、完了時間をその潜在的最小限に到達させる。
【００１８】
第１の態様による方法の第１の可能な実施形態において、前記第１の数及び前記第２の数のループを判定する前記ステップは、前記利用可能な前記第１のタイプのコア及び前記利用可能な前記第２のタイプのコアに関する負荷バランス関係式に従う。
【００１９】
第１の数及び第２の数のループを判定するステップが利用可能な第１のタイプのコア及び利用可能な第２のタイプのコアに関する負荷バランス関係式に従うことは、ヘテロジニアスハードウェアのためのパラレルアプリケーションを開発することに基づいてプログラマの労力を削減する。この種類の効果は、ＭＭＣＨＣＳハードウェアのようなマルチプロセッサシステムのためのパラレルアプリケーションを開発するプロセスを更に容易にすることをもたらす。その前は、プログラマは、どのようにプロセッサをコアの間で分割するかを考えることに多くの時間を費やす必要があったが、この作業は、これから自動的に実行されることができる。具体的な判定は、結果として、ソフトウェア開発又は現存するコードの具体的なアーキテクチャへの効果的な移植のいずれかの人件費の削減をもたらす。
【００２０】
第１の態様それ自体による、又は第１の態様の第１の実施形態による方法の第２の可能な実施形態において、前記第１及び第２の数のループを判定する前記ステップは、前記第１のタイプの前記コア及び前記第２のタイプの前記コアの素子性能に従う。
【００２１】
第１及び第２の数のループを判定するステップが、第１のタイプのコア及び第２のタイプのコアの素子性能に従う場合に、ループは、それらの性能に応じてコアに動的に割り当てられることができる。それは、マルチプロセッサシステムを高速化し、そしてその計算量を減少させる。
【００２２】
第１の態様それ自体による、又は第１の態様の前述の実施形態のうちのいずれかによる方法の第３の可能な実施形態において、利用可能な前記第１のタイプのコアの前記第１の個数、及び利用可能な前記第２のタイプのコアの前記第２の個数を見積もる前記ステップは、前記マルチプロセッサシステムのバックグラウンド負荷を見積もることに基づいている。
【００２３】
利用可能な第１のタイプのコアの第１の個数、及び利用可能な第２のタイプのコアの第２の個数を見積もるステップがマルチプロセッサシステムのバックグラウンド負荷を見積もることに基づいていることは、バックグラウンド負荷の変化に対する、ＭＭＣＨＣＳのようなマルチプロセッサシステムにおける指定されたタスクの動的適応を提供する。動的なモニタリングブロックの使用は、バックグラウンド負荷の変化、すなわちオンザフライに対する、ＭＭＣＨＣＳにおける実行中の指定されたタスクの動的適応を提供する。
【００２４】
第１の態様それ自体による、又は第１の態様の前述の実施形態のうちのいずれかによる方法の第４の可能な実施形態において、前記第１の数のループは、下記のパラメータ、すなわち前記第１のコアにおけるループ実行時間、前記第２のコアにおけるループ実行時間、前記第１のコアのクロック周波数、及び前記第２のコアのクロック周波数のうちの少なくとも１つに基づいて判定される。
【００２５】
第１の数のループがこれらのパラメータに基づいて判定される場合に、システム全体の性能が最適化されることができる。
【００２６】
第１の態様それ自体による、又は第１の態様の前述の実施形態のうちのいずれかによる方法の第５の可能な実施形態において、前記第１の数のループは、下記の関係式に従って判定され、
【数１】
2016532183.tif 000003
ここで、Ｋ１は前記第１のタイプのコアの個数であり、Ｋ２は前記第２のタイプのコアの個数であり、Ｋ１ａｃｔはＫ１の実際の値であり、Ｋ２ａｃｔはＫ２の実際の値であり、Ｔ１は前記第１のコアにおけるループ実行時間であり、Ｔ２は前記第２のコアにおけるループ実行時間であり、ｆ１は前記第１のコアのクロック周波数であり、ｆ２は前記第２のコアのクロック周波数であり、Ｎは前記計算ブロックのループの総数であり、そして、実数値の数の演算子
【数２】
2016532183.tif 000004
は前記数の前記少数部分を除外することにより前記数の整数値の見積もりを表示する。
【００２７】
第１の数のループがこれらの関係式に従って判定される場合に、マルチプロセッサシステムの性能が、判定されることができるとともに、したがって制御されることができる。
【００２８】
第１の態様それ自体による、又は第１の態様の前述の実施形態のうちのいずれかによる方法の第６の可能な実施形態において、前記第２の数のループは、前記第２の数のループと前記第１の数のループの合計がループの前記総数に対応するように判定される。
【００２９】
第２の数のループが、第２の数のループと第１の数のループの合計がループの総数に対応するように判定される場合に、ループのそれぞれは、実行時に特定のコアに割り当てられることができる。ループの実行のための待ち時間は減少する。
【００３０】
第１の態様それ自体による、又は第１の態様の前述の実施形態のうちのいずれかによる方法の第７の可能な実施形態において、利用可能なコアの前記第１の個数を見積もる前記ステップは、バックグラウンド負荷によって忙しい前記第１のタイプのコアの個数を見積もることに基づいているとともに、利用可能なコアの前記第２の個数を見積もる前記ステップは、バックグラウンド負荷によって忙しい前記第２のタイプのコアの個数を見積もることに基づいている。
【００３１】
利用可能なコアの第１の個数を見積もるステップがバックグラウンド負荷によって忙しい第１のタイプのコアの個数を見積もることに基づいているとともに、利用可能なコアの第２の個数を見積もるステップがバックグラウンド負荷によって忙しい第２のタイプのコアの個数を見積もることに基づいている場合に、マルチプロセッサシステムは、バックグラウンド負荷の変化に対する、指定されたタスクの動的適応を提供する。それは、バックグラウンド負荷の変化（すなわち、オンザフライ）に対する、実行中の指定されたタスクの動的適応を可能にする。
【００３２】
第１の態様の第７の実施形態による方法の第８の可能な実施形態において、利用可能な前記第１のタイプのコアの前記第１の個数と前記バックグラウンド負荷によって忙しい前記第１のタイプのコアの前記個数の合計は、前記第１のタイプのコアの総数に対応するとともに、利用可能な前記第２のタイプのコアの前記第２の個数と前記バックグラウンド負荷によって忙しい前記第２のタイプのコアの前記個数の合計は、前記第２のタイプのコアの総数に対応する。
【００３３】
利用可能な第１のタイプのコアの第１の個数とバックグラウンド負荷によって忙しい第１のタイプのコアの個数の合計が第１のタイプのコアの総数に対応するとともに、利用可能な第２のタイプのコアの第２の個数とバックグラウンド負荷によって忙しい第２のタイプのコアの個数の合計が第２のタイプのコアの総数に対応する場合に、ループのそれぞれは、実行時に特定のコアに割り当てられることができる。ループの実行のための待ち時間は減少する。
【００３４】
第１の態様それ自体による、又は第１の態様の前述の実施形態のうちのいずれかによる方法の第９の可能な実施形態において、前記マルチプロセッサシステムは、マルチコア・メニーコアヘテロジニアスコンピューティングシステムを備える。
【００３５】
したがって、方法は、マルチコア・メニーコアヘテロジニアスコンピューティングシステムに最適に適用されることができ、これらのシステムを動的で柔軟にする。
【００３６】
第１の態様それ自体による、又は第１の態様の前述の実施形態のうちのいずれかによる方法の第１０の可能な実施形態において、前記ソフトウェアプログラムの前記計算ブロックは、大規模パラレル計算ブロックを備える。
【００３７】
大規模パラレル計算ブロックについては、有意の性能改善に到達することができる。
【００３８】
第１の態様それ自体による、又は第１の態様の前述の実施形態のうちのいずれかによる方法の第１１の可能な実施形態において、前記第１のタイプの前記コアの消費電力は、前記第２のタイプの前記コアの消費電力と異なる。
【００３９】
第１のタイプのコアの消費電力が第２のタイプのコアの消費電力と異なる場合に、プログラムタスクの柔軟なスケジューリングが提示された方法を使用することにより能率的に実行されることができる。
【００４０】
第２の態様によれば、本発明は、ソフトウェアプログラムの計算ブロックのループを、第１のタイプのコア及び第２のタイプのコアを備えるマルチプロセッサシステムのコアに割り当てるためのシステムであって、当該システムが、前記第１のタイプの前記コアの利用可能なリソース、及び前記第２のタイプの前記コアの利用可能なリソースを見積もるように構成されるモニタリングブロックと、前記第１のタイプの前記コア及び前記第２のタイプの前記コアの前記の見積もられた利用可能なリソースに基づいて、前記ループを前記第１のタイプの前記コア及び前記第２のタイプの前記コアにバインドするように構成されるバインディングブロックとを備える、システムに関連する。
【００４１】
第１のタイプのコア及び第２のタイプのコアの見積もられた利用可能なリソースに基づいて、ループを第１のタイプのコア及び第２のタイプのコアにバインドするように構成されるバインディングブロックにより、マルチプロセッサシステムの性能は増加し、そして最小限の完了時間は減少する。プロセッサコアに対するループのその特有のバインディングによって、負荷バランス問題が解決され、そして各特定のアプリケーションの総計の完了時間が最小限にされる。最適なループ対コアマッピングが達成され、それは完了時間をその潜在的最小限に到達させる。
【００４２】
第２の態様によるシステムの第１の可能な実施形態において、当該システムは、前記バインディングブロックにより前記コアにバインドされた前記ループを実行するように構成される大規模パラレル計算ブロックを備える。
【００４３】
バインドすることに従って大規模パラレル計算ブロックのループを実行することは、完了時間をその潜在的最小限に到達させる。
【００４４】
第２の態様それ自体による、又は第２の態様の第１の実施形態によるシステムの第２の可能な実施形態において、前記バインディングブロックは、実行時に前記大規模パラレル計算ブロックが前記バインドされたループによって実行されるように、前記ループを前記コアに動的にバインドするように構成される。
【００４５】
実行時に大規模パラレル計算ブロックがバインドされたループによって実行される場合に、システムの性能が動的に最適化されることができる。
【００４６】
本発明の更なる態様は、機能的に異なる消費電力のコアを有するマルチコア・メニーコアヘテロジニアスコンピューティングシステムにおける適応タスクスケジューリングの方法であって、当該方法が、
１）モニタリングブロックに基づいて、大規模パラレルブロック実行処理の開始の前にＭＭＣＨＣＳシステムを動的にモニタリングすることを通して、
２）第１及び第２のタイプのコアの有効数Ｋ１ａｃｔ及びＫ２ａｃｔを見積もり、
３）第１のタイプのコアにバインドすることになるループの数ｎ１を見積もり、
４）ｎ２＝Ｎ−ｎ１に基づいて、第２のタイプのコアにバインドすることになるループの数ｎ２を見積もり、
５）バインディングブロックにおいて、ｎ１個のループを第１のタイプのコアにバインドすることを指定し、
６）バインディングブロックにおいて、ｎ２個のループを第２のタイプのコアにバインドすることを指定し、
７）指定された順序に従って指定されたコアによってループを実行する
ステップを含む、方法を提供する。
【００４７】
本発明の更なる態様は、機能的に異なる消費電力のコアを有するマルチコア・メニーコアヘテロジニアスコンピューティングシステムにおける適応タスクスケジューリングのシステムであって、当該システムが、大規模パラレルブロック実行処理の前にＭＭＣＨＣＳシステムのコアのフリーリソースを動的にモニタリングするとともに見積もることに関与するモニタリングブロックと、ループとコアを動的にバインドするように、マルチコア・メニーコアプロセッサにおける大規模パラレルブロック実行処理のための実行時に利用可能なリソースに基づいて動的にループ対コアマッピングを行うことに関与するバインディングブロックとを含む、システムを提供する。
【００４８】
更なる態様は、上記の方法に従って複数の大規模パラレルブロックが同時に実行されるＳｏＣタイプのシグナルプロセッサを有するシステムを提供する。
【００４９】
ここで説明された方法、システム、及び装置は、デジタルシグナルプロセッサ（ＤＳＰ）における、若しくはマイクロコントローラにおける、若しくはあらゆる他の副次的なプロセッサにおけるソフトウェアとして、又は、特定用途向け集積回路（ＡＳＩＣ）の中のハードウェア回路として、実施され得る。
【００５０】
本発明は、デジタル電子回路において、又は、コンピュータハードウェア、ファームウェア、ソフトウェア、若しくはその組み合わせ、例えば、従来の携帯機器の利用可能なハードウェアにおいて、又はここで説明された方法を処理するための専用の新しいハードウェアにおいて、実施されることができる。
【００５１】
本発明の更なる実施例が、下記の図面に関して説明されることになる。
【図面の簡単な説明】
【００５２】
【図１】従来のプログラム構造の一例を示す。
【図２】一実施形態による、ＭＭＣＨＣＳにおけるコアの間のループの拡散を例示する一例を示す。
【図３】一実施形態による、大規模パラレルブロックより前のモニタリングブロック、及び大規模パラレルブロックの内部の大規模パラレルブロック実行処理より前のバインディングブロックを有する修正されたプログラム構造の一例を示す。
【図４】一実施形態による、データをモニタリングすることに基づいてＫ１ａｃｔ及びＫ２ａｃｔを選択するための方法４００の概略図を示す。
【図５】一実施形態による、ソフトウェアプログラムの計算ブロックをマルチプロセッサシステムのコアに割り当てるための方法５００の概略図を示す。
【発明を実施するための形態】
【００５３】
図２は、一実施形態による、マルチコア・メニーコアヘテロジニアスコンピューティングシステム２００におけるコアの間のループの拡散を例示する一例を示す。
【００５４】
マルチコア・メニーコアヘテロジニアスコンピューティングシステムは、第１のタイプのＫ１個のコア２０７、及び第２のタイプのＫ２個のコア２０９を有し、全体としてＫ＝Ｋ１＋Ｋ２個のコアを有する。第１のタイプのコア２０７によって実行されることになるループ２０３の数はｎ１として表示され、そして第２のタイプのコア２０９によって実行されることになるループ２０５の数はｎ２として表示される。その場合に、ｎ１及びｎ２は、下記の形式で提示され得る。
ｎ１＝ｌ１Ｋ１＋ｍ１
及び
ｎ２＝ｌ２Ｋ２＋ｍ２
【００５５】
図２は、上述の関係式を例示する。その場合に、ＭＭＣＨＣＳの第ｉのタイプ（ｉ＝１、２）のコアによる実行の合計時間Ｔｆｉは、下記のようになるであろう。
【００５６】
【数３】
2016532183.tif 000005
ここで、Ｔｉは、ＭＭＣＨＣＳの第ｉのタイプ（ｉ＝１、２）のコアによる１個のループ実行の時間である。
【００５７】
もし、ｌｉ≫１ならば、その場合に、
【数４】
2016532183.tif 000006
であり、ｎｉ＝ｌｉＫｉ（ｉ＝１、２）である。
【００５８】
この場合、異なるタイプのコアによる負荷バランス条件は、下記のように書かれることができる。
【数５】
2016532183.tif 000007
【００５９】
いくらかの変換の後の最後の式にｎ２＝Ｎ−ｎ１を代入すると、下記のような結果になる。
【数６】
2016532183.tif 000008
【００６０】
図３は、一実施形態による、大規模パラレルブロックより前のモニタリングブロック、及び大規模パラレルブロックの内部の大規模パラレルブロック実行処理より前のバインディングブロックを有する修正されたプログラム構造の一例を示す。
【００６１】
この例において、下記の表記法が使用される。Ｋ１＝Ｋ２、そしてＴ１＝２Ｔ２であり、その場合に、
【数７】
2016532183.tif 000009
である。これは、より生産性のあるコア（ここでは第２のタイプのコア）が、半分ほどの生産性のコア（ここでは第１のタイプのコア）と比較すると、ループの２／３を評価する、ということを示す。
【００６２】
数式（１）及び（２）の使用における主な問題は、値Ｔ１及びＴ２の見積もりにある。これらの値は、下記の関係式を満足しているということが知られている。
Ｔｉ＝Ａ／ｆｉ（ｉ＝１、２）
ここで、Ａはあらゆる定数であり、そして、ｆｉはコアｉのクロック周波数である。その場合に、数式（１）は、下記の形式に書き直されることができる。
【数８】
2016532183.tif 000010
【００６３】
上記で提示されたようにタスクを割り当てることの他に、いくつかの他の補助のタスクが、同様に、ＭＭＣＨＣＳにおいて同時に動いている。したがって、調査されたタスクにおけるサイクルを検討することによる見積もりの前に、ＭＭＣＨＣＳのモニタリングが提供されなければならないとともに、検討しているシステムのコアのバックグラウンド負荷が発見されなければならない。この目的のために、共通の動的なモニタリングツールを使用することが可能である。
【００６４】
ＭＭＣＨＣＳシステムにおけるコアの実数Ｋ１及びＫ２の代りに、それらの実際の値Ｋ１ａｃｔ及びＫ２ａｃｔが使用されるべきである。これらの値は、整数型であるばかりでなく、下記の条件を満足させる実数型である。
０≦Ｋｉａｃｔ≦Ｋｉ（ｉ＝１、２）
【００６５】
したがって、数式（３）は、下記のように書き直されることができる。
【数９】
2016532183.tif 000011
【００６６】
ここで、演算子
【数１０】
2016532183.tif 000012
は、実数値の数の整数値の見積もりを表示する。その演算は、実数値の数の少数部分を除外することにより実行される。適切なプログラム構造は、図３において示される。それは、大規模パラレルブロック３０５より前のモニタリングブロック３０３、及び大規模パラレルブロック３０５の内部の大規模パラレルブロック実行処理３０９より前のバインディングブロック３０７を含む。
【００６７】
図４は、一実施形態による、データをモニタリングすることに基づいてＫ１ａｃｔ及びＫ２ａｃｔを選択するための方法４００の概略図を示す。
【００６８】
その例は、データをモニタリングすることによってＫ１ａｃｔ及びＫ２ａｃｔを見積もる方法を示す。システム４００は、４個の第１のタイプのコア４０１、及び３個の第２のタイプのコア４０３を含む。検討しているシステムのモニタリングは、現在のサイクルの開始以前に提供される。そのモニタリングは、第１のタイプのコア４０１のバックグラウンド負荷４０５が１０％に等しいとともに、各第２のタイプのコア４０３のバックグラウンド負荷４０７が２０％に等しい、ということを示す。その場合に、数式（３）において、Ｋ１＝４、Ｋ２＝３の代わりに、Ｋ１ａｃｔ＝３．６及びＫ２ａｃｔ＝２．４が代入されることができる。適切な例示が図４において示される。
【００６９】
ｎ２の見積もりのために、下記の関係式が使用されることができる。
ｎ２＝Ｎ−ｎ１        （５）
【００７０】
数式（４）及び（５）は、ＭＭＣＨＣＳの負荷をバランスさせることの見積もりのために使用される。それらは、大規模パラレルブロック実行処理の間の異なるタイプのコアのローディングの待ち時間を最小限にすることを可能にする。
【００７１】
下記において、大規模パラレルブロックのループは、プロセッサコアにバインドされ、それは、ＭＭＣＨＣＳにおける適応タスクスケジューリングの方法を明確に表す。
【００７２】
１．図３に関して上記で説明されたモニタリングブロック３０３に基づいて、大規模パラレルブロック実行処理の開始の前にＭＭＣＨＣＳシステムを動的にモニタリングすることを通して、第１及び第２のタイプのコアの実際の個数Ｋ１ａｃｔ及びＫ２ａｃｔが見積もられる。
【００７３】
２．どのようにＫ１ａｃｔ及びＫ２ａｃｔが獲得されることができるかが図２及び図３に関して上記で示される。
【００７４】
３．数式（４）に従って、第１のタイプのコアにバインドすることになるループの数ｎ１が見積もられる。
【００７５】
４．数式（５）に従って、第２のタイプのコアにバインドすることになるループの数ｎ２が見積もられる。
【００７６】
５．バインディングブロックにおいてｎ１個のループが第１のタイプのコアにバインドされる。
【００７７】
６．バインディングブロックにおいてｎ２個のループが第２のタイプのコアにバインドされる。
【００７８】
７．大規模パラレルブロックにおいて指定された順序に従って指定されたコアによってループを実行する。
【００７９】
項目１、２、及び３は、図３に関して上記で説明されたモニタリングブロック３０３に対応しており、項目４及び５は、図３において示されるバインディングブロック３０７に対応している。
【００８０】
図５は、一実施形態による、図３に関して上記で説明されたソフトウェアプログラム３００の計算ブロック３０１を図４に関して上記で説明されたマルチプロセッサシステム４００のコア４０１、４０３に割り当てるための方法５００の概略図を示す。方法５００は、マルチプロセッサシステム４００の利用可能な第１のタイプのコア４０９の第１の個数Ｋ１ａｃｔ、及びマルチプロセッサシステム４００の利用可能な第２のタイプのコア４１１の第２の個数Ｋ２ａｃｔを見積もるステップ５０１と、第１のタイプのコア４０９にバインドするための計算ブロックの第１の数ｎ１のループ２０３、及び第２のタイプのコア４１１にバインドするための計算ブロックの第２の数ｎ２のループ２０５を判定するステップ５０２と、第１の数ｎ１のループ２０３を第１のタイプのコア４０９にバインドするとともに、第２の数ｎ２のループ２０５を第２のタイプのコア４１１にバインドするステップ５０３と、バインドするステップ５０３に従って計算ブロック３０１のループ２０３、２０５を実行するステップ５０４とを含む。
【００８１】
方法５００の実施形態において、第１の数ｎ１及び第２の数ｎ２のループ２０３、２０５を判定するステップ５０２は、利用可能な第１のタイプのコア４０９及び利用可能な第２のタイプのコア４１１に関する負荷バランス関係式に従う。方法５００の実施形態において、第１ｎ１及び第２の数ｎ２のループ２０３、２０５を判定するステップ５０２は、第１のタイプのコア４０９及び第２のタイプのコア４１１の素子性能に従う。方法５００の実施形態において、利用可能な第１のタイプのコア４０９の第１の個数Ｋ１ａｃｔ、及び利用可能な第２のタイプのコア４１１の第２の個数Ｋ２ａｃｔを見積もるステップ５０１は、マルチプロセッサシステム４００のバックグラウンド負荷を見積もることに基づいている。方法５００の実施形態において、第１の数ｎ１のループは、下記のパラメータ、すなわち第１のコア４０９におけるループ実行時間Ｔ１、第２のコア４１１におけるループ実行時間Ｔ２、第１のコア４０９のクロック周波数ｆ１、及び第２のコア４１１のクロック周波数ｆ２のうちの少なくとも１つに基づいて判定される。方法５００の実施形態において、第１の数ｎ１のループ２０３は、下記の関係式に従って判定され、
【数１１】
2016532183.tif 000013
ここで、Ｋ１は第１のタイプのコアの個数であり、Ｋ２は第２のタイプのコアの個数であり、Ｋ１ａｃｔはＫ１の実際の値であり、Ｋ２ａｃｔはＫ２の実際の値であり、Ｔ１は第１のコアにおけるループ実行時間であり、Ｔ２は第２のコアにおけるループ実行時間であり、ｆ１は第１のコアのクロック周波数であり、ｆ２は第２のコアのクロック周波数であり、Ｎは計算ブロックのループの総数であり、そして、実数値の数の演算子
【数１２】
2016532183.tif 000014
はその数の少数部分を除外することによりその数の整数値の見積もりを表示する。
【００８２】
方法５００の実施形態において、第２の数ｎ２のループ２０５は、第２の数ｎ２のループ２０５と第１の数ｎ１のループ２０３の合計がループの総数Ｎに対応するように判定される。方法５００の実施形態において、利用可能なコア４０９の第１の個数Ｋ１ａｃｔを見積もるステップ５０１は、バックグラウンド負荷によって忙しい第１のタイプのコアの個数を見積もることに基づいているとともに、利用可能なコア４１１の第２の個数Ｋ２ａｃｔを見積もるステップは、バックグラウンド負荷によって忙しい第２のタイプのコアの個数を見積もることに基づいている。方法５００の実施形態において、利用可能な第１のタイプのコア４０９の第１の個数Ｋ１ａｃｔとバックグラウンド負荷４０５によって忙しい第１のタイプのコアの個数の合計は、第１のタイプのコアの総数Ｋ１に対応するとともに、利用可能な第２のタイプのコア４１１の第２の個数Ｋ２ａｃｔとバックグラウンド負荷４０７によって忙しい第２のタイプのコアの個数の合計は、第２のタイプのコアの総数Ｋ２に対応する。方法５００の実施形態において、マルチプロセッサシステム４００は、マルチコア・メニーコアヘテロジニアスコンピューティングシステムを備える。方法５００の実施形態において、ソフトウェアプログラム３００の計算ブロック３０１は、大規模パラレル計算ブロック３０１を備える。方法５００の実施形態において、第１のタイプのコア４０９の消費電力は、第２のタイプのコア４１１の消費電力と異なる。
【００８３】
図３に関して上記で説明されたように、方法５００は、システム３００において処理され得る。
【００８４】
上記から、様々な方法、システム、記録媒体上のコンピュータプログラムなどが提供される、ということが当業者にとって明白になるであろう。
【００８５】
本開示は、同様に、実行された場合に少なくとも１つのコンピュータにここで説明された機能及び演算ステップを実行させる、コンピュータ実行可能コード又はコンピュータ実行可能命令を含むコンピュータプログラム製品をサポートする。
【００８６】
多くの代替案、修正、及び変更が、前述の教示に照らして、当業者には明白であろう。当然ながら、当業者は、ここで説明された応用例の域を越えて本発明の多数の応用例があるということを容易に認識する。本発明が１つ又は複数の特定の実施例を参照して説明された一方、当業者は、本発明の範囲からはずれずに、多くの変更がそれらに行われ得る、ということを認識する。したがって、添付された請求項、及びそれらの等価物の範囲内で、本発明は、明確にここで説明されたものより別の方法で実践され得る、ということが理解されることになる。
【図１】
2016532183.tif 000017
【図２】
2016532183.tif 000018
【図３】
2016532183.tif 000019
【図４】
2016532183.tif 000020
【図５】
2016532183.tif 000021
【手続補正書】
【提出日】平成28年5月12日(2016.5.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソフトウェアプログラムの計算ブロックをマルチプロセッサシステムのコアに割り当てるための方法であって、当該方法が、
前記マルチプロセッサシステムの利用可能な第１のタイプのコアの第１の個数（Ｋ１ａｃｔ）、及び前記マルチプロセッサシステムの利用可能な第２のタイプのコアの第２の個数（Ｋ２ａｃｔ）を見積もるステップと、
前記第１のタイプの前記コアにバインドするための前記計算ブロックの第１の数（ｎ１）のループ、及び前記第２のタイプの前記コアにバインドするための前記計算ブロックの第２の数（ｎ２）のループを判定するステップと、
前記第１の数（ｎ１）のループを前記第１のタイプの前記コアにバインドするとともに、前記第２の数（ｎ２）のループを前記第２のタイプの前記コアにバインドするステップと、
前記バインドするステップに従って前記計算ブロックの前記ループを実行するステップとを含む、方法。
【請求項２】
前記第１の数（ｎ１）及び前記第２の数（ｎ２）のループを判定する前記ステップが、前記利用可能な前記第１のタイプのコア及び前記利用可能な前記第２のタイプのコアに関する負荷バランス関係式に従う、請求項１に記載の方法。
【請求項３】
前記第１の数（ｎ１）及び前記第２の数（ｎ２）のループを判定する前記ステップが、前記第１のタイプの前記コア及び前記第２のタイプの前記コアの素子性能に従う、請求項１又は請求項２に記載の方法。
【請求項４】
利用可能な前記第１のタイプのコアの前記第１の個数（Ｋ１ａｃｔ）、及び利用可能な前記第２のタイプのコアの前記第２の個数（Ｋ２ａｃｔ）を見積もる前記ステップが、前記マルチプロセッサシステムのバックグラウンド負荷を見積もることに基づいている、請求項１から請求項３のいずれか一項に記載の方法。
【請求項５】
前記第１の数（ｎ１）のループが、下記のパラメータ、すなわち前記第１のタイプのコアにおけるループ実行時間（Ｔ１）、前記第２のタイプのコアにおけるループ実行時間（Ｔ２）、前記第１のタイプのコアのクロック周波数（ｆ１）、及び前記第２のタイプのコアのクロック周波数（ｆ２）のうちの少なくとも１つに基づいて判定される、請求項１から請求項４のいずれか一項に記載の方法。
【請求項６】
前記第１の数（ｎ１）のループが、下記の関係式に従って判定され、
【数１３】
2016532183.tif 000022
ここで、Ｋ１が前記第１のタイプのコアの個数であり、Ｋ２が前記第２のタイプのコアの個数であり、Ｋ１ａｃｔがＫ１の実際の値であり、Ｋ２ａｃｔがＫ２の実際の値であり、ｆ１が前記第１のタイプのコアのクロック周波数であり、ｆ２が前記第２のタイプのコアのクロック周波数であり、Ｎが前記計算ブロックのループの総数であり、そして、実数値の数の演算子
【数１４】
2016532183.tif 000023
が前記数の少数部分を除外することにより前記数の整数値の見積もりを表示する、請求項１から請求項５のいずれか一項に記載の方法。
【請求項７】
前記第２の数（ｎ２）のループが、前記第２の数（ｎ２）のループと前記第１の数（ｎ１）のループの合計がループの前記総数（Ｎ）に対応するように判定される、請求項６に記載の方法。
【請求項８】
利用可能なコアの前記第１の個数（Ｋ１ａｃｔ）を見積もる前記ステップが、バックグラウンド負荷によって忙しい前記第１のタイプのコアの個数を見積もることに基づいているとともに、利用可能なコアの前記第２の個数（Ｋ２ａｃｔ）を見積もる前記ステップが、バックグラウンド負荷によって忙しい前記第２のタイプのコアの個数を見積もることに基づいている、請求項１から請求項７のいずれか一項に記載の方法。
【請求項９】
利用可能な前記第１のタイプのコアの前記第１の個数（Ｋ１ａｃｔ）と前記バックグラウンド負荷によって忙しい前記第１のタイプのコアの前記個数の合計が、前記第１のタイプのコアの総数（Ｋ１）に対応するとともに、利用可能な前記第２のタイプのコアの前記第２の個数（Ｋ２ａｃｔ）と前記バックグラウンド負荷によって忙しい前記第２のタイプのコアの前記個数の合計が、前記第２のタイプのコアの総数（Ｋ２）に対応する、請求項８に記載の方法。
【請求項１０】
前記マルチプロセッサシステムが、マルチコア・メニーコアヘテロジニアスコンピューティングシステムを備える、請求項１から請求項９のいずれか一項に記載の方法。
【請求項１１】
前記ソフトウェアプログラムの前記計算ブロックが、大規模パラレル計算ブロックを備える、請求項１から請求項１０のいずれか一項に記載の方法。
【請求項１２】
前記第１のタイプの前記コアの消費電力が、前記第２のタイプの前記コアの消費電力と異なる、請求項１から請求項１１のいずれか一項に記載の方法。
【請求項１３】
ソフトウェアプログラムの計算ブロックのループを、第１のタイプのコア及び第２のタイプのコアを備えるマルチプロセッサシステムのコアに割り当てるためのシステムであって、当該システムが、
前記第１のタイプの前記コアの利用可能なリソース、及び前記第２のタイプの前記コアの利用可能なリソースを見積もるように構成されるモニタリングブロックと、
前記第１のタイプの前記コア及び前記第２のタイプの前記コアの前記の見積もられた利用可能なリソースに基づいて、前記ループを前記第１のタイプの前記コア及び前記第２のタイプの前記コアにバインドするように構成されるバインディングブロックとを備える、システム。
【請求項１４】
前記バインディングブロックにより前記コアにバインドされた前記ループを実行するように構成される大規模パラレル計算ブロックを備える、請求項１３に記載のシステム。
【請求項１５】
前記バインディングブロックが、実行時に前記大規模パラレル計算ブロックが前記バインドされたループによって実行されるように、前記ループを前記コアに動的にバインドするように構成される、請求項１４に記載のシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
第１の態様それ自体による、又は第１の態様の第１の実施形態による方法の第２の可能な実施形態において、前記第１の数及び前記第２の数のループを判定する前記ステップは、前記第１のタイプの前記コア及び前記第２のタイプの前記コアの素子性能に従う。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
第１の数及び第２の数のループを判定するステップが、第１のタイプのコア及び第２のタイプのコアの素子性能に従う場合に、ループは、それらの性能に応じてコアに動的に割り当てられることができる。それは、マルチプロセッサシステムを高速化し、そしてその計算量を減少させる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２４
【補正方法】変更
【補正の内容】
【００２４】
第１の態様それ自体による、又は第１の態様の前述の実施形態のうちのいずれかによる方法の第４の可能な実施形態において、前記第１の数のループは、下記のパラメータ、すなわち前記第１のタイプのコアにおけるループ実行時間、前記第２のタイプのコアにおけるループ実行時間、前記第１のタイプのコアのクロック周波数、及び前記第２のタイプのコアのクロック周波数のうちの少なくとも１つに基づいて判定される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
第１の態様それ自体による、又は第１の態様の前述の実施形態のうちのいずれかによる方法の第５の可能な実施形態において、前記第１の数のループは、下記の関係式に従って判定され、
【数１】
2016532183.tif 000024
ここで、Ｋ１は前記第１のタイプのコアの個数であり、Ｋ２は前記第２のタイプのコアの個数であり、Ｋ１ａｃｔはＫ１の実際の値であり、Ｋ２ａｃｔはＫ２の実際の値であり、Ｔ１は前記第１のタイプのコアにおけるループ実行時間であり、Ｔ２は前記第２のタイプのコアにおけるループ実行時間であり、ｆ１は前記第１のタイプのコアのクロック周波数であり、ｆ２は前記第２のタイプのコアのクロック周波数であり、Ｎは前記計算ブロックのループの総数であり、そして、実数値の数の演算子
【数２】
2016532183.tif 000025
は前記数の少数部分を除外することにより前記数の整数値の見積もりを表示する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００５２
【補正方法】変更
【補正の内容】
【００５２】
【図１】従来のプログラム構造の一例を示す。
【図２】一実施形態による、ＭＭＣＨＣＳにおけるコアの間のループの拡散を例示する一例を示す。
【図３】一実施形態による、大規模パラレルブロックより前のモニタリングブロック、及び大規模パラレルブロックの内部の大規模パラレルブロック実行処理より前のバインディングブロックを有する修正されたプログラム構造の一例を示す。
【図４】一実施形態による、データをモニタリングすることに基づいてＫ１ａｃｔ及びＫ２ａｃｔを選択するためのシステム４００の概略図を示す。
【図５】一実施形態による、ソフトウェアプログラムの計算ブロックをマルチプロセッサシステムのコアに割り当てるための方法５００の概略図を示す。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００６７
【補正方法】変更
【補正の内容】
【００６７】
図４は、一実施形態による、データをモニタリングすることに基づいてＫ１ａｃｔ及びＫ２ａｃｔを選択するためのシステム４００の概略図を示す。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００８１
【補正方法】変更
【補正の内容】
【００８１】
方法５００の実施形態において、第１の数ｎ１及び第２の数ｎ２のループ２０３、２０５を判定するステップ５０２は、利用可能な第１のタイプのコア４０９及び利用可能な第２のタイプのコア４１１に関する負荷バランス関係式に従う。方法５００の実施形態において、第１の数ｎ１及び第２の数ｎ２のループ２０３、２０５を判定するステップ５０２は、第１のタイプのコア４０９及び第２のタイプのコア４１１の素子性能に従う。方法５００の実施形態において、利用可能な第１のタイプのコア４０９の第１の個数Ｋ１ａｃｔ、及び利用可能な第２のタイプのコア４１１の第２の個数Ｋ２ａｃｔを見積もるステップ５０１は、マルチプロセッサシステム４００のバックグラウンド負荷を見積もることに基づいている。方法５００の実施形態において、第１の数ｎ１のループは、下記のパラメータ、すなわち第１のコア４０９におけるループ実行時間Ｔ１、第２のコア４１１におけるループ実行時間Ｔ２、第１のコア４０９のクロック周波数ｆ１、及び第２のコア４１１のクロック周波数ｆ２のうちの少なくとも１つに基づいて判定される。方法５００の実施形態において、第１の数ｎ１のループ２０３は、下記の関係式に従って判定され、
【数１１】
2016532183.tif 000026
ここで、Ｋ１は第１のタイプのコアの個数であり、Ｋ２は第２のタイプのコアの個数であり、Ｋ１ａｃｔはＫ１の実際の値であり、Ｋ２ａｃｔはＫ２の実際の値であり、Ｔ１は第１のコアにおけるループ実行時間であり、Ｔ２は第２のコアにおけるループ実行時間であり、ｆ１は第１のコアのクロック周波数であり、ｆ２は第２のコアのクロック周波数であり、Ｎは計算ブロックのループの総数であり、そして、実数値の数の演算子
【数１２】
2016532183.tif 000027
はその数の少数部分を除外することによりその数の整数値の見積もりを表示する。
【国際調査報告】
2016532183.tif 000028
2016532183.tif 000029
2016532183.tif 000030