2016-05-11 20 views
0

Wenn es zum Beispiel eine eingebettete Anwendung gibt, die auf einer Unicore-CPU läuft. Und dann würde diese Anwendung auf Multi-Core-CPU portiert werden. Würde diese App auf einzelnen oder mehreren Kernen ausgeführt werden? Um genauer zu sein Ich interessiere mich für ARM CPU (aber nicht nur) und Toolchain-Besonderheiten e. G. Standard C/C++ Bibliotheken. Die Absicht dieser Frage ist die: Ist es CPU Verantwortung zu "entscheiden", auf mehreren Kernen oder Compiler toolchain, Entwickler und Standardplattform spezifischen Bibliotheken auszuführen? Und wieder bin ich auch an den Tendenzen anderer Systeme interessiert. Es gibt viele Anwendungen und RTOS (zum Beispiel Linux), die auf verschiedenen CPUs laufen, aber die gleiche Architektur, also bedeutet das, dass sie anders kompiliert werden?Multithreaded-Anwendungen auf verschiedenen CPUS

Antwort

1

Im Allgemeinen wird single-threaded Code immer auf einem Kern ausgeführt. Um mehrere Kerne nutzen zu können, benötigen Sie entweder mehrere Prozesse, mehrere Threads oder beides.

Es gibt nichts, was Ihr Compiler tun kann, um Ihnen hier zu helfen. Dies ist eine architektonische Überlegung.

Wenn Sie beispielsweise mehrere Threads haben, führen die meisten Multicore-Systeme diese auf den verfügbaren Kernen aus, wenn das von Ihnen ausgeführte Betriebssystem ordnungsgemäß kompiliert wurde, um dies zu unterstützen. Wenn Sie ein Betriebssystem ausführen, das nur für Single-Core-Systeme kompiliert wurde, beschränken sich Ihre Möglichkeiten hier offensichtlich.

+0

ARM Keil Compiler Standard-Laufzeitbibliotheken unterstützen rtos. Es gibt einige Optionen für die Kompilierung. Aber das ist so Toolchain-spezifisch, dass es außerhalb dieses Rahmens liegt. –

+1

Echtzeitüberlegungen sind normalerweise völlig anders als Multicore. – tadman

1

Ein einzelnes Thread-Programm wird in einem Thread ausgeführt. Theoretisch ist es möglich, dass der Thread in einen anderen Kern verschoben wird, aber der Scheduler kann einen einzelnen Thread nicht in mehrere Threads umwandeln und Ihnen eine parallele Verarbeitung geben.

BEARBEITEN Ich missverstanden Ihre Frage. Wenn in der Anwendung mehrere Threads vorhanden sind und diese Anwendung binärkompatibel mit der neuen Multicore-CPU ist, werden die Threads in der Tat so geplant, dass sie auf verschiedenen CPUs ausgeführt werden, wenn der OS-Scheduler dies für angemessen hält.

+0

Ich habe nicht erwähnt, dass die Anwendung selbst signale Threaded –

+0

@ KarolisMilieška Ah ich missverstanden Ihre Frage war. Meine Antwort wurde korrigiert. – bodangly

+0

Ist es OS Scheduler oder CPU-Scheduler? –