NUMA = non uniform memory access
En gros, quand t'as X CPU avec chacun leurs mémoire, ils accèdent a leurs données dans leurs mémoire rapidement. Mais pour accéder a la donnée dans la banque du processeur d'a coté, ils peuvent pas, ils doivent déjà copier la donnée chez eux puis la lire.
Donc t'as le temps que le processeur qui a la donnée la lise, la traite et l'envoie par le bus, le processeur la reçoit, la stock, puis l'utilise. L'overhead CPU est juste abominable (sans compter le code a synchroniser, etc)
En mode NUMA : le processeur accède directement a la mémoire de son voisin, il lui demande juste si la donnée est protect ou pas, la modifie. Un algo de cohésion (si admettons 2 CPU veulent accéder a la donnée en même temps doivent le faire) est utilisé.
En soit c'est plus lent qu'un bus (plus de latence), mais c'est plus rapide puisque l'overhead de la procédure non NUMA est virée.
Deux processeurs reliés en QPI ou en HT sont en NUMA, QPI et HT sont très proche du PCIe au niveau physique, mais les proto utilisés (cohésion du cache etc) sont pas les mêmes.
C'est en gros se que permet NVlink. Avec des petites nuances que sont CC-NUMA (cache cohérent) et SO-NUMA (scale out NUMA) qui sont patentés IBM (des fonctions très utiles pour GPGPU)
http://www.sqlskills.com/blogs/jon [...] ures-numa/
En fait, on s'en tape que le bus ressemble a du PCIe (90% des bus dans les systèmes modernes sont des bus série point a point, définition du PCIe) c'est surtout l'utilisation de la mémoire et le scaling en perf SMP que ça procure qui est intéressant (on a donc plus de latence sur le bus mais moins sur la chaine complète)
Et pour ta référence : Dragostea din tei le titre.
Message édité par MysterieuseX le 31-03-2014 à 15:40:17