2010-11-23 28 views

Répondre

5

Mutli-core est une sorte de programmation parallèle. En particulier, il s'agit d'une sorte de configuration MIMD où les unités de traitement ne sont pas distribuées, mais partagent plutôt une zone de mémoire commune, et peuvent même partager des données comme une configuration MISD si besoin est. Je crois qu'il est même discutable du multi-traitement, en ce qu'une configuration multi-core peut partager un certain niveau de caches, et donc coopérer plus efficacement que les processeurs sur différents cœurs.

La programmation parallèle générale inclurait également les systèmes SIMD (comme votre GPU) et les systèmes distribués.

1

La différence n'est pas dans l'approche, juste dans le matériel que le logiciel fonctionne. La programmation parallèle prend un problème et divise la charge de travail en plus petites parties qui peuvent être traitées en parallèle (problèmes de type Diviser et Conquérir, etc.) ou des fonctions qui peuvent s'exécuter indépendamment les unes des autres. Placez ce logiciel sur un matériel multi-core et il sera optimisé par le système d'exploitation pour fonctionner sur les différents cœurs. Cela lui donne de meilleures performances car chaque thread que vous créez pour effectuer un travail simultané peut désormais s'exécuter sans consommer de cycles de processeur sur un seul processeur/cœur.

+0

Merci. Je vois. Si je vous lis bien, vous dites que, si je peux utiliser une analogie, la programmation multicœur est l'implémentation de techniques de programmation parallèle. Est-ce que ce serait exact? –

+0

Pas entièrement. La programmation multi-core est un terme impropre qui se réfère simplement à l'exécution de programmes multi-thread sur un matériel multi-core. Si le code fonctionne dans un monde à processeur unique avec plusieurs threads, vous obtiendrez un avantage supplémentaire en l'exécutant sur plusieurs processeurs/processeurs. – Achilles

0

Les systèmes multicœurs sont un sous-ensemble de systèmes parallèles. Différents systèmes auront différentes architectures de mémoire, chacune avec leurs propres défis. Comment un système gère-t-il la cohérence du cache? Est-ce que NUMA est impliqué, etc.