2016-05-11 13 views
0

たとえば、ユニコアCPU上で動作する組み込みアプリケーションがあるとします。そのアプリケーションはマルチコアCPUに移植されます。そのアプリは1つまたは複数のコアで動作しますか? より具体的には、私はARM CPU(とだけでなく)とツールチェーンの詳細に興味があります。 g。標準的なC/C++ライブラリ この質問の意図は次のとおりです。特定のライブラリの複数のコアまたはコンパイラのツールチェーン、開発者および標準プラットフォームで実行することをCPUが決定するのは、その責任ですか?もう一度、他のシステムの傾向にも興味があります。 異なるCPU上で実行される同じアーキテクチャーを実行するアプリケーションとRTOS(Linuxなど)はたくさんあります。つまり、それらは異なる方法でコンパイルされていますか?異なるCPUSのマルチスレッドアプリケーション

答えて

1

一般に、シングルスレッドコードは常に1つのコアで実行されます。複数のコアを利用するには、複数のプロセス、複数のスレッド、またはその両方が必要です。

あなたのコンパイラがここであなたを助けることは何もありません。これはアーキテクチャ上の考慮事項です。

たとえば、複数のスレッドを使用している場合、ほとんどのマルチコアシステムでは、実行しているオペレーティングシステムが適切にコンパイルされていれば、使用可能なコアで実行されます。コンパイルされたシングルコアのみのOSを実行すると、明らかにここでのオプションが制限されます。

+0

ARM keilコンパイラの標準ランタイムライブラリはrtosをサポートしています。コンパイルにはいくつかのオプションがあります。しかし、これはツールチェーン固有のものなので、この範囲外です。 –

+1

リアルタイムの考慮事項は、通常、マルチコアとは完全に異なります。 – tadman

1

1つのスレッドプログラムが1つのスレッドで実行されます。理論的には、スレッドが別のコアに移動するようにスケジュールされている可能性がありますが、スケジューラーは単一のスレッドを複数のスレッドに変換して並列処理を行うことはできません。

EDIT 質問に間違いがありました。アプリケーションに複数のスレッドがあり、そのアプリケーションが新しいマルチコアCPUとバイナリ互換性がある場合、OSスケジューラが適切であると判断した場合、スレッドは実際には異なるCPUで実行するようスケジュールされます。

+0

私はそのアプリケーション自体がサインスレッドであるとは言及していませんでした –

+0

@KarolisMilieškaああ私はあなたの質問を誤解しました。私の答えを修正しました。 – bodangly

+0

OSスケジューラかCPUスケジューラですか? –

関連する問題