2016-05-11 2 views
0

Si, par exemple, il y a une application embarquée qui s'exécute sur unicore CPU. Et puis cette application serait porté sur le processeur multi-core. Est-ce que cette application fonctionnerait sur des cœurs simples ou multiples? Pour être plus précis, je suis intéressé par le processeur ARM (mais pas seulement) et les spécificités de la chaîne d'outils e. g. bibliothèques standard C/C++. L'intention de cette question est la suivante: est-ce la responsabilité du CPU de "décider" de s'exécuter sur plusieurs cœurs ou chaînes d'outils de compilateur, développeur et bibliothèques standard de platfor? Et encore une fois, je m'intéresse également aux tendances des autres systèmes. Il y a beaucoup d'applications et de RTOS (par exemple Linux) qui fonctionnent sur des processeurs différents mais sur la même architecture, est-ce que cela signifie qu'ils sont compilés différemment?Applications multithread sur différents CPUS

Répondre

1

En règle générale, le code monothread s'exécutera toujours sur un seul cœur. Pour tirer parti de plusieurs cœurs, vous devez disposer de plusieurs processus, de plusieurs threads ou des deux.

Votre compilateur ne peut rien faire pour vous aider. C'est une considération architecturale. Si vous avez plusieurs threads, par exemple, la plupart des systèmes multicœurs les exécuteront sur tous les cœurs disponibles si le système d'exploitation que vous utilisez est correctement compilé pour cela. L'exécution d'un système d'exploitation qui a été compilé avec un seul cœur limitera évidemment vos options ici.

+0

Les bibliothèques d'exécution standard du compilateur ARK keil prennent en charge les RTOS. Il y a une option pour la compilation. Mais c'est tellement spécifique à la chaîne d'outils, donc c'est hors de cette portée. –

+1

Les considérations en temps réel sont généralement entièrement différentes de celles du multicœur. – tadman

1

Un programme à un seul thread s'exécutera dans un thread. Il est théoriquement possible que le thread soit programmé pour se déplacer vers un autre noyau, mais le planificateur ne peut pas transformer un seul thread en plusieurs threads et vous fournir un traitement parallèle.

EDIT J'ai mal compris votre question. S'il y a plusieurs threads dans l'application, et que cette application est compatible avec le nouveau CPU multicœur, les threads seront programmés pour fonctionner sur des processeurs différents, si le planificateur du système d'exploitation le juge approprié.

+0

Je n'ai pas mentionné que l'application elle-même était fileté –

+0

@ KarolisMilieška Ah j'ai mal compris votre question. J'ai corrigé ma réponse. – bodangly

+0

S'agit-il d'un planificateur de système d'exploitation ou d'un planificateur de processeur? –