Pourquoi ne pas utiliser les GPU comme CPU?

je sais que la question n'est que partiellement relatives à la programmation, car la réponse que je voudrais obtenir est à l'origine de ces deux questions:

pourquoi le nombre de cœurs CPU est-il si bas (VS GPU)? et pourquoi n'utilisons-nous pas des GPU au lieu des CPU, des GPU seulement ou des CPU seulement? (Je sais que les GPU sont spécialisés tandis que les CPU sont plus polyvalents, etc.). Je sais aussi qu'il y a des limites de mémoire (hôte vs GPU) ainsi que des capacités de précision et de mise en cache. Mais, en termes de comparaison de matériel, comparaison haut de gamme à haut de gamme CPU/GPU les GPU sont beaucoup plus performants.

alors ma question Est:pourrions-nous utiliser des GPU au lieu de CPU pour OS, applications, etc

la raison pour laquelle je pose ces questions est que je voudrais savoir pourquoi les ordinateurs actuels utilisent encore 2 unités de traitement principales (CPU/GPU) avec deux systèmes principaux de mémoire et de cache (CPU/GPU) même si ce n'est pas quelque chose qu'un programmeur aimerait.

17
demandé sur Maiss 2012-06-13 02:24:13

3 réponses

les GPU sont conçus pour le traitement graphique (évidemment), ce qui est intrinsèquement quelque chose qui bénéficie du traitement parallèle (faire plusieurs tâches/calculs à la fois). Cela signifie que contrairement aux CPU modernes, qui comme vous le savez probablement ont généralement 2-8 noyaux, les GPU ont des centaines de noyaux. Cela signifie qu'ils sont particulièrement adaptés pour traiter des choses comme le traçage de rayons ou n'importe quoi d'autre que vous pourriez rencontrer dans un jeu en 3D ou d'autres activités graphiques intensives.

CPU sur d'un autre côté, le nombre de noyaux est relativement limité, car les tâches auxquelles un CPU fait face ne bénéficient généralement pas d'un traitement en parallèle presque autant que le rendu D'une scène 3D. En fait, avoir trop de cœurs dans un CPU pourrait en fait dégrader les performances d'une machine, en raison de la nature des tâches qu'un CPU fait habituellement et le fait que beaucoup de programmes ne seraient pas écrits pour profiter de la multitude de cœurs. Cela signifie que pour la navigation sur internet ou la plupart des autres tâches, un CPU avec quelques noyaux puissants serait mieux adapté pour le travail qu'un GPU avec beaucoup, beaucoup de noyaux plus petits.

une Autre chose à noter est que plus de cœurs signifie généralement plus de puissance nécessaire. Cela signifie qu'un téléphone ou un ordinateur portable à 256 cœurs ne serait pas pratique du point de vue de l'énergie et de la chaleur, sans parler des défis et des coûts de fabrication.

11
répondu lyallcooper 2012-06-12 22:38:42

les GPU actuels manquent de nombreuses installations D'un CPU moderne qui sont généralement considérées comme importantes (cruciales, vraiment) pour des choses comme un OS.

par exemple, un système D'exploitation utilise normalement la mémoire virtuelle et la pagination pour gérer les processus. La pagination permet à L'OS de donner à chaque processus son propre espace d'adresse, (presque) complètement isolé de tout autre processus. Au moins sur la base des informations accessibles au public, la plupart des GPU ne supportent pas la pagination du tout (ou du moins pas dans la façon dont un OS besoin.)

les GPU fonctionnent également à des vitesses d'horloge beaucoup plus faibles que les CPU. Par conséquent, ils fournir des performances élevées pour des problèmes parallèles embarrassants. Les CPU offrent généralement des performances beaucoup plus élevées pour un code fileté simple. La plupart du code D'un système D'exploitation n'est pas très parallèle-en fait, il est très difficile de le faire du tout (par exemple, pendant des années, Linux avait un verrou géant pour s'assurer qu'un seul thread exécutait la plupart du code du noyau à un moment donné). Pour ce type de tâche, un GPU serait peu susceptible de fournir toute prestation.

du point de vue de la programmation, un GPU est une bénédiction mixte (au mieux). Les gens ont passé des années à travailler sur des modèles de programmation pour faire de la programmation un GPU même à moitié saine, et même si c'est beaucoup plus difficile (en général) que la programmation CPU. Compte tenu de la difficulté d'obtenir des choses même relativement insignifiantes pour bien fonctionner sur un GPU, Je ne peux pas imaginer essayer d'écrire quoi que ce soit d'aussi grand et complexe qu'une opération système pour exécuter sur.

13
répondu Jerry Coffin 2012-06-12 22:41:19

Généralement les systèmes d'exploitation sont assez simple, si vous regardez leur structure. Mais les paralléliser n'améliorera pas beaucoup les vitesses, seulement la vitesse de l'horloge brute fera l'affaire.

les GPU manquent simplement de pièces et de beaucoup d'instructions de leurs jeux d'instructions dont un OS a besoin, c'est une question de sophistication. Pensez aux fonctionnalités de virtualisation (Intel VT-x ou AMD-v D'AMD).

les noyaux GPU sont comme des fourmis muettes, alors qu'un CPU est comme un humain complexe, pour ainsi dire. Les deux ont consommation d'énergie différente en raison de cela et de produire des quantités de chaleur très différentes.

Voir ce vaste superuser réponse ici plus d'info.

1
répondu sjas 2017-03-20 10:18:21