Sur les tendances de développement de l'architecture de processeur, ou pourquoi je crois au succès de Huawei sur le marché des serveurs

Nous vivons à une époque intéressante. Il me semble que les 2-3 prochaines années détermineront où ira le développement de l'architecture pour la prochaine décennie. Désormais, sur le marché des processeurs de serveurs, plusieurs acteurs représentent des approches technologiques complètement différentes. Et c'est très cool (j'ai même du mal à dire sur quelle syllabe l'accent est mis sur le dernier mot :))
.
Mais même il y a 5-6 ans, il semblait que le temps s'était arrêté et que le développement s'était arrêté. Reposez-vous sur différents types de restrictions (mur d'alimentation, mur d'évolutivité, etc.). J'en ai un peu parlé ici. La loi de Moore a été remise en question et des théoriciens particulièrement ardents ont suggéré d'y introduire des corrections logarithmiques :) La domination d'Intel sur le marché des processeurs de serveurs semblait alors inébranlable. AMD n'a pas montré de concurrence sérieuse, les GPGPU NVidia ressemblaient à un produit purement de niche et les tentatives d'ARM pour percer le marché des serveurs ont échoué.

Tout a changé avec le développement de segments tels que le Machine Learning et l'intelligence artificielle. Les GPGPU se sont avérés bien mieux «adaptés» aux opérations de convolution et de multiplication matricielle (surtout avec peu de précision) que les CPU. De plus, NVidia a pu démontrer une augmentation du nombre de transistors, même avant la loi de Moore. Cela a conduit le monde des architectures de serveurs à devenir bipolaire. À une extrémité se trouve le processeur x86, un moteur de latence adapté pour masquer les latences de la machine en panne. Son avantage indéniable est son excellente performance sur les applications mono-thread (performance single-thread). L'inconvénient est la zone énorme et le nombre de transistors. À l'autre extrémité du GPGPU se trouve le moteur de débit, un grand nombre d'éléments informatiques simples (EU). Ici, l'inverse est vrai - la taille d'un élément est petite,ce qui vous permet d'en placer un grand nombre sur une seule puce. En revanche, les performances des applications monothread laissent beaucoup à désirer ...

Hélas, les tentatives de combiner des processeurs et des GPU haute puissance dans un seul paquet n'ont pas réussi jusqu'à présent. Au moins pour la raison qu'une telle puce consommera et dissipera trop d'énergie. Par conséquent, les solutions discrètes sont désormais à la mode. Je ne crois pas vraiment en eux pour deux raisons. Tout d'abord, l'architecture devient plus complexe et des gags supplémentaires y apparaissent sous la forme d'un bus reliant CPU et GPU, et d'une structure mémoire hétérogène. La seconde difficulté est en partie liée à la première, et consiste dans le fait que de telles solutions sont beaucoup plus difficiles à programmer. Chacun des modèles de programmation d'accélérateurs existants (CUDA de NVidia, DPC ++ d'Intel, OpenCL ou OpenMP) a ses propres avantages et inconvénients. En même temps, aucun d'entre eux n'est ni universel ni dominant.

Il me semble que du point de vue du développement architectural, AMD a pris la bonne décision, qui a introduit le processeur de Rome. En raison de la compacité du cœur (par rapport à Intel), davantage de cœurs ont pu être placés dans un seul boîtier. Cependant, cela ne suffit pas à lui seul - pour qu'une telle solution puisse évoluer en termes de performances, il est nécessaire de veiller à la bonne communication entre les noyaux (uncore) et à la qualité des exécutions parallèles. Les ingénieurs AMD ont réussi à résoudre ces deux problèmes et à obtenir des résultats très compétitifs sur l'un des référentiels industriels les plus importants - le CPU SPEC. La solution d'AMD se situe entre les pôles fournis par Nvidia et Intel. Mais c'est beaucoup plus proche du dernier. C'est toujours le même «gros noyau». Le moyen d'or entre les approches polaires, il me semble, nécessite des noyaux plus compacts.Et parmi les architectures existantes, ARM a les meilleures chances d'occuper ce créneau.
image
Alors, pourquoi ARM est-il exactement de Huawei? J'ai trouvé cette réponse par moi-même: avec une augmentation du nombre de cœurs sur une puce, l'importance des performances d'un cœur diminue (mais jusqu'à une certaine limite), et l'importance de la communication entre les cœurs et avec la mémoire augmente. Et la communication est le domaine où Huawei est un leader mondial. C'est la conception uncore (et pas seulement et pas même le cœur) qui déterminera les performances du système. Et ici, je pense, nous avons de bonnes chances.

Cependant, les architectures idéales n'existent que dans le vide. En réalité, il est toujours nécessaire de corréler avec la quantité et la structure du logiciel existant sur le marché des serveurs. Et il a été écrit et optimisé pour X86 pendant des années. Il faudra beaucoup de temps et d'efforts pour le rendre plus «convivial» pour l'architecture ARM. Un travail énorme nous attend à la fois dans le domaine des outils logiciels (compilateurs, bibliothèques, runtimes) et dans le domaine de l'adaptation des applications (ingénierie des applications). Mais je crois que la route sera maîtrisée par celui qui marche.

All Articles