11Aug
Si vous avez déjà fait beaucoup de comparaison pour un nouveau processeur, vous avez peut-être remarqué que les cœurs semblent tous avoir la vitesse plutôt qu'une combinaison de différents. Pourquoi donc? Le SuperUser Q & A d'aujourd'hui a la réponse à la question d'un lecteur curieux.
Question d'aujourd'hui &La session de réponse nous est offerte par SuperUser, une subdivision de Stack Exchange, un regroupement communautaire de sites Web Q & A.
La question
SuperUser lecteur Jamie veut savoir pourquoi les cœurs de CPU ont tous la même vitesse au lieu de ceux différents:
En général, si vous achetez un nouvel ordinateur, vous déterminez quel processeur acheter en fonction de la charge de travail attendue pour l'ordinateur. Les performances dans les jeux vidéo ont tendance à être déterminées par la vitesse de base unique, tandis que les applications telles que l'édition vidéo sont déterminées par le nombre de cœurs. En termes de ce qui est disponible sur le marché, tous les processeurs semblent avoir à peu près la même vitesse avec les différences principales étant plus de threads ou plus de cœurs.
Par exemple:
- Intel Core i5-7600K, fréquence de base 3,80 GHz, 4 cœurs, 4 fils
- Intel Core i7-7700K, fréquence de base 4,20 GHz, 4 cœurs, 8 fils
- AMD Ryzen 5 1600X, fréquence de base 3,60 GHz, 6noyaux, 12 fils
- AMD Ryzen 7 1800X, fréquence de base 3,60 GHz, 8 cœurs, 16 threads
Pourquoi voyons-nous ce schéma de cœurs croissants, mais tous les cœurs ont la même vitesse d'horloge? Pourquoi n'y a-t-il pas de variantes avec des vitesses d'horloge différentes? Par exemple, deux "gros" noyaux et beaucoup de petits cœurs.
Au lieu de, disons, quatre cœurs à 4.0 GHz( soit 4 × 4 GHz, 16 GHz maximum), que diriez-vous d'un CPU avec deux cœurs fonctionnant à 4.0 GHz et quatre cœurs fonctionnant à 2.0 GHz( ie 2 × 4.0 GHz + 4 ×2,0 GHz, 16 GHz maximum)?La seconde option serait-elle aussi bonne pour les charges de travail à un seul thread, mais potentiellement meilleure pour les charges de travail multi-thread?
Je pose cette question comme une question générale et pas spécifiquement en ce qui concerne les processeurs énumérés ci-dessus ou à propos d'une charge de travail spécifique. Je suis juste curieux de savoir pourquoi le motif est ce qu'il est.
Pourquoi les cœurs de CPU ont-ils tous la même vitesse plutôt que des cœurs différents?
La réponse
SuperUser contributeur bwDraco a la réponse pour nous:
Ceci est connu comme multi-traitement hétérogène( HMP) et est largement adopté par les appareils mobiles. Dans les dispositifs basés sur ARM qui implémentent big. LITTLE, le processeur contient des cœurs avec des performances et des profils de puissance différents, c.à.d. certains cœurs fonctionnent rapidement mais tirent beaucoup d'énergie( architecture plus rapide et / ou horloges plus élevées) tandis que d'autres sont économesarchitecture plus lente et / ou bas horloges).Ceci est utile car la consommation d'énergie a tendance à augmenter de manière disproportionnée lorsque vous augmentez les performances une fois que vous avez dépassé un certain point. L'idée ici est d'obtenir des performances quand vous en avez besoin et la vie de la batterie quand vous ne le faites pas.
Sur les plates-formes de bureau, la consommation d'énergie est beaucoup moins un problème, donc ce n'est pas vraiment nécessaire. La plupart des applications s'attendent à ce que chaque cœur ait des caractéristiques de performance similaires, et les processus de planification pour les systèmes HMP sont beaucoup plus complexes que ceux des systèmes SMP( Symmetric Multi-Processing) traditionnels( Windows 10).les appareils qui utilisent ARM big. LITTLE).
De même, la plupart des processeurs pour ordinateurs de bureau et portables ne sont pas limités thermiquement ou électriquement au point où certains cœurs doivent fonctionner plus vite que d'autres, même pour de courtes rafales. Nous avons fondamentalement frappé un mur sur la rapidité avec laquelle nous pouvons fabriquer des cœurs individuels, donc le remplacement de certains cœurs par des cœurs plus lents ne permettra pas aux cœurs restants de courir plus vite.
Bien qu'il existe quelques processeurs de bureau qui ont un ou deux cœurs capables de fonctionner plus vite que les autres, cette capacité est actuellement limitée à certains processeurs Intel très haut de gamme( connus sous le nom de Turbo Boost Max Technology 3.0) et ne nécessite qu'un léger gainen performance pour les cœurs qui peuvent courir plus vite.
Bien qu'il soit certainement possible de concevoir un processeur x86 traditionnel avec de gros cœurs rapides et des cœurs plus petits et plus lents pour optimiser les charges de travail lourdes, cela compliquerait grandement la conception du processeur et les applications ne le supporteraient probablement pas.
Prenez un processeur hypothétique avec deux cœurs rapides de Kaby Lake( 7e génération) et 8 cœurs de Goldmont( Atom) lents. Vous auriez un total de 10 cœurs, et des charges de travail fortement threadées, optimisées pour ce type de processeur, pourraient voir un gain en performance et en efficacité par rapport à un processeur Kaby Lake quad-core normal. Cependant, les différents types de cœurs ont des niveaux de performances très différents, et les cœurs lents ne supportent même pas certaines des instructions supportées par les cœurs rapides, comme AVX( ARM évite ce problème en exigeant les mêmes noyaux LITTLE et Big)).
Encore une fois, la plupart des applications multi-thread basées sur Windows supposent que chaque core a le même ou presque le même niveau de performance et peut exécuter les mêmes instructions, donc ce genre d'asymétrie est susceptible d'entraîner des performances moins qu'idéales, peut-êtremême se bloque s'il utilise des instructions non supportées par les cœurs les plus lents. Alors qu'Intel pourrait modifier les cœurs lents pour ajouter une prise en charge avancée des instructions afin que tous les cœurs puissent exécuter toutes les instructions, cela ne résoudrait pas les problèmes de prise en charge logicielle pour les processeurs hétérogènes.
Une approche différente de la conception d'application, plus proche de ce à quoi vous pensez probablement dans votre question, utiliserait le GPU pour l'accélération de parties hautement parallèles d'applications. Cela peut être fait en utilisant des API comme OpenCL et CUDA.Comme pour une solution monopuce, AMD promeut le support matériel pour l'accélération GPU dans ses APUs, qui combine un CPU traditionnel et un GPU intégré hautes performances dans la même puce, comme Heterogeneous System Architecture, même si cela n'a pas beaucoup été vu par l'industrie.de quelques applications spécialisées.
Avoir quelque chose à ajouter à l'explication? Sonnez dans les commentaires. Vous voulez lire plus de réponses d'autres utilisateurs de Stack Exchange? Découvrez le fil de discussion complet ici.
Crédit d'image: Mirko Waltermann( Flickr)