C'est rien sur la vitesse d'horloge ou le but. Ils sont tous deux également capables d'accomplir la plupart des tâches, sinon toutes, mais certains sont légèrement mieux adaptés à certaines tâches qu'à d'autres.
Il y a eu un très Vieille discussion pour savoir s'il est préférable d'avoir beaucoup de cœurs idiots ou un petit groupe de cœurs très intelligents. Cela remonte facilement aux années 80.
À l'intérieur d'une unité centrale, il est possible d'effectuer de nombreux calculs. Les cœurs les plus intelligents sont capables d'effectuer de nombreux calculs différents en même temps (un peu comme les cœurs multiples, mais non, c'est compliqué ; cf. Parallélisme au niveau des instructions ). Un cœur intelligent peut effectuer plusieurs calculs en même temps (addition, soustraction, multiplication, division, opération de mémoire) mais un seul à la fois ; pour cette raison, ils sont physiquement plus grands (et donc beaucoup plus chers) que les cœurs plus simples.
Les noyaux muets sont beaucoup plus petits et peuvent donc être ajoutés à une seule puce, mais ils ne sont pas capables d'effectuer autant de calculs simultanés. Il existe un équilibre délicat entre un grand nombre de noyaux muets et quelques noyaux intelligents.
Les architectures multicœurs fonctionnent bien avec les graphiques car les calculs peuvent facilement être répartis sur des centaines de cœurs, mais cela dépend aussi de la qualité du code et du fait que d'autres codes dépendent du résultat d'un calcul.
Il s'agit d'un beaucoup question plus compliquée qu'il n'y paraît. Pour plus d'informations, lisez cet article sur la conception des processeurs :
Microprocesseurs modernes - Un guide de 90 minutes
http://www.lighterra.com/papers/modernmicroprocessors/
3 votes
Comment puis-je savoir quelles réponses contiennent des informations correctes ? Devrais-je attendre que d'autres votent les réponses en haut ou en bas ? Je pense que j'ai été trop hâtif en acceptant une réponse :O
14 votes
Il y a maintenant quelques réponses récentes @ell, qui ne contiennent pas de "désinformation". Elles montent progressivement vers le haut avec des votes positifs en raison du mécanisme de marché efficace du StackExchange merveilleusement conçu ;-) Je vous suggère d'attendre un peu plus longtemps avant d'accepter une réponse. On dirait que c'est ce que vous faites avec beaucoup de prudence. C'est une bonne question, d'ailleurs. Elle peut sembler évidente, mais elle ne l'est pas du tout. Merci de l'avoir posée !
0 votes
Il n'y a aucune raison pour laquelle on ne pourrait pas, par exemple, créer un JITC Java pour un GPU, du point de vue de la génération de code. De plus, la plupart du code du système d'exploitation est maintenant écrit en C/C++, qui peut être facilement reciblé. On n'est donc pas lié à l'héritage x86 de manière vraiment significative (sauf si vous utilisez Windoze). Le problème est que peu de GPU (si tant est qu'il y en ait) sont bons pour le traitement général.
0 votes
@DanH Sauf que Java est un mauvais langage, spécifiquement pour créer des programmes qui ont un haut niveau de parallélisme. Nous avons besoin de langages courants, comme la programmation fonctionnelle, où le parallélisme est la façon naturelle d'exprimer tout programme. De plus, les langages de programmation doivent être bien adaptés pour fonctionner avec une très petite quantité de mémoire pour chaque unité de calcul, car c'est là que le GPU est efficace. Comme mentionné dans la question, il n'y a que quelques problèmes tels que l'IA et autres qui font cela naturellement sans un nouveau langage de programmation.
0 votes
Mais vous n'avez pas besoin d'exécuter Java. Le fait est que vous n'êtes pas enchaîné à une architecture de processeur. Quant à un nouveau langage pour le traitement parallèle, cela fait peut-être 30 ans que l'on essaie d'en inventer un, sans faire de progrès significatifs. Alors qu'après 30 ans de développement de langages de programmation séquentiels, nous avions Fortran, COBOL, Modula-2, C, Pascal, Ada, PL/I, C++, et une foule d'autres.
1 votes
Question connexe de Stack Overflow : Pourquoi ne programmons-nous pas sur le GPU ?
135 votes
C'est un peu comme demander "Si le Boeing 747 est plus rapide et plus économe en carburant, pourquoi continuons-nous à conduire des voitures" ?
0 votes
Cela vous rappelle-t-il quelque chose (RISC vs. CISC) ?
8 votes
Non, parce que ce n'est pas RISC contre CISC. C'est l'un des autres fondamentaux de l'informatique, légèrement déguisé. C'est "Pourquoi déchargeons-nous le travail du processeur central sur les processeurs d'E/S ?" .
1 votes
@vartec en tant que développeur CUDA chevronné, je pense que c'est l'analogie la plus précise que j'ai jamais vu, haut la main. Je garde celui-là :)
6 votes
@vartec : Je pense qu'une analogie légèrement meilleure pourrait être entre les bus et les taxis. S'il y a quarante personnes qui veulent toutes aller du même endroit au même endroit, un bus sera beaucoup plus efficace. S'il y a quarante personnes dont les origines et destinations souhaitées sont très dispersées, même un seul taxi peut être aussi efficace qu'un bus, et pour le coût du bus, on pourrait avoir plusieurs taxis.
0 votes
Comme pour toutes les questions techniques importantes, Mybusters a abordé cette question (Et ce n'est pas une mauvaise analogie)
0 votes
En rapport : La différence entre le GPU et le CPU