Question

sont des registres SSE partagés ou dupliqués entre les processeurs logiques (Hyperthreading)? Puis-je espérer le même genre de speedup de parallélisation pour un programme lourd SSE comme un programme normal (Intel revendique 30% pour les processeurs avec Hyper-Threading)?

Était-ce utile?

La solution

On ne sait pas à moi de la documentation d'Intel si les processeurs Hyperthreading partager le fichier de registre entre les threads ou avoir deux différents (je suppose qu'ils sont en fait distincts, sinon le temps de changement de contexte entre les fils HT serait assez élevé, mais cela est purement une supposition).

Quant à l'accélération - il va dépendre de votre mélange d'instructions et de planification. Rappelez-vous qu'une CPU HT ne dispose pas de ressources d'exécution supplémentaires (UMM, unités de chargement / stockage, etc.), l'amélioration des performances est due à une meilleure utilisation de ces ressources, puisque le code typique, en particulier sur un processeur moderne, dépense un montant raisonnable du temps bloqué en attente pour des charges de mémoire et les magasins pour terminer avant l'exécution peut se poursuivre. HT permet à ces charges et les magasins à entrelacer de sorte qu'un fil de l'un des stalles sur une lecture, l'autre peut être commuté et commencer à utiliser les ressources d'exécution qui avait déjà été assis au ralenti.

Je suppose que ce genre de performance augmente, vous verriez avec multithreading un programme SSE dépendra du rapport des opérations de mémoire à l'arithmétique ops. Si, par exemple, vos charges de programme SSE 4 SSE enregistre de la mémoire, ne 10.000 opérations SSE sur eux, et écrit ensuite les 4 registres en arrière, vous n'êtes pas susceptible de voir beaucoup d'un avantage de HT pouvoir chevaucher accès mémoire parce que 99% de vos programmes d'exécution va être dépensé dans le SIMD UMM et non sur l'accès mémoire.

D'autre part, si votre programme est très Compute lourd, multithreading alors votre programme pourrait améliorer considérablement les performances sur les processeurs multi-cœurs, et pourrait vous donner beaucoup mieux qu'une amélioration de 30% depuis dans ce cas, votre code pourrait accéder au complet ressources d'exécution de plusieurs noyaux à la fois.

Autres conseils

Ils sont logiquement dupliqués - chaque thread obtient son propre état. Physiquement, ils peuvent être partagés -. Dépend de votre mise en œuvre de hyperthreading

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top