2010-11-23 32 views
0

Je suis à la recherche d'un code de concurrence concurrentiel, de bas niveau, multi plate-forme, conçu pour fonctionner sur des machines multicœurs, et je veux vérifier certaines de ses hypothèses.Quels types d'installations de bas niveau ne sont généralement pas pris en charge sur les machines multicœur?

La prise en charge de certaines optimisations matérielles n'est probablement pas prise en charge sur les conceptions multicœurs (par exemple, la prise en charge de l'exécution hors service [wikipedia] semble être un bon candidat. et peut être un pot de pouvoir). Quelqu'un at-il une liste d'autres installations de ce type - celles qui sont généralement disponibles sur un seul ou un petit nombre de machines centrales, mais qui sont généralement exclues des machines avec un plus grand nombre de cœurs?

Répondre

2

Aujourd'hui, les machines multicœurs sont rétractées sur les rétroprojecteurs des monoprocesseurs. Vous pourriez presque imaginer scier un dé à 4 cœurs en 4 dés à 1 cœur. J'exagère seulement un peu.

À l'avenir, les machines multicœurs seront conçues de manière plus réfléchie pour l'efficacité énergétique et l'efficacité de la zone. Vous pouvez voir le même ISA, mais avec différents mélanges de ressources (plus ou moins d'unités fonctionnelles dupliquées), et même avec un certain partage de ressources entre les cœurs (par exemple AMD Bulldozer). Et, comme vous le dites, à l'écart de la complexité et de l'énergie de l'exécution sans restriction de l'ordre. Cela sera très probablement perçu comme des différences d'instructions-par-horloge (IPC) différentes (plus ou moins de performance) sur la même architecture d'ensemble d'instructions.

En outre, les fournisseurs doivent jongler avec un portefeuille hypothétique de gros cœurs optimisés pour les performances en série dans le désordre et de petits cœurs de «débit» plus efficaces ou moins performants (OoO) et plus économes en énergie. , ils seront mis au défi de garder ces différentes implémentations en phase avec les évolutions de leurs ISA. Certains cœurs peuvent supporter de nouvelles instructions, un nouvel état, de nouveaux coprocesseurs, la virtualisation, la sécurité, etc. plus tôt que d'autres. Cela conduit à un défi de codage au dénominateur commun tout en allumant les nouvelles installations pour une meilleure perf ou efficacité énergétique (ou autre) sur les cœurs qui ont les nouvelles capacités. Donc, pour répondre à votre question spécifique, toutes les techniques traditionnelles d'architecture informatique pour la négociation des portes pour la puissance expressive, ou la performance, ou l'efficacité énergétique peuvent être repensées et éliminées sélectivement dans les futurs petits cœurs orientés débit.

  • Matériel multithreading
  • agressif OoO -> humble OoO ou même dans l'ordre d'exécution
  • des degrés élevés de la spéculation microarchitecture
  • prédicteurs branche Fantaisie
  • Big TLB
  • mémoire Fancy prefetchers
  • Pipelines profonds
  • Grand numéro/plusieurs copies des unités fonctionnelles
  • caches Big, bus large pour les caches
  • ...

Mais il va dans les deux sens. Il se peut aussi que les nouveaux cœurs optimisés en termes d'énergie optimisés à faible débit aient de nouvelles caractéristiques qui n'existent pas dans les anciens noyaux OoO. Par exemple, les Larrabee New Instructions (LRBni) (http://www.drdobbs.com/high-performance-computing/216402188) ont été proposées pour une machine avec des dizaines de cœurs plus simples. Comme autre exemple, les petits cœurs peuvent se tourner vers le multithreading matériel pour offrir une meilleure tolérance de latence de la mémoire pour compenser les caches privés plus petits.De plus, le fait d'avoir beaucoup de petits noyaux frugaux à faible consommation d'énergie signifie que vous serez peut-être prêt à dédier et donc personnaliser certains noyaux afin d'optimiser les performances pour des charges de travail particulièrement précieuses. Par exemple, les processeurs et outils personnalisés de Tensilica prévoient que certains de vos petits cœurs auront des instructions supplémentaires et des chemins de données personnalisés spécifiques aux problèmes (accélérant une boucle interne de décodage vidéo, par exemple). Ainsi, dans ces cas, le petit noyau peut (contre-intuitivement) avoir de meilleures performances que le noyau beaucoup plus grand.

Est-ce logique?

Joyeux hacking!

+0

p.s. Puisque différentes implémentations impliquent des microarchitectures différentes, ne soyez pas surpris de voir les différences subtiles entre les systèmes induites par les microarchices. Par exemple, vous pourriez ne jamais observer un entrelacement subtil d'accès mémoire de course de données sur un microarch mais il pourrait se produire souvent sur un autre microarch. mise en œuvre de la même ISA. (Aie.) –