Question Comment les binaires généraux tirent-ils parti des nouvelles instructions sur les nouveaux processeurs?


À chaque sortie d'un nouveau processeur, les instructions prises en charge par le processeur sont modifiées. Par exemple, Haswell a des extensions vectorielles avancées. Cependant, lorsque je lance un programme sur un PC avec un processeur Haswell, je lance généralement des binaires AMD64 génériques: le compilateur ne sait pas que ces instructions sont disponibles. Comment ces binaires profitent-ils toujours des nouvelles instructions ajoutées dans les nouvelles architectures?


7
2018-01-29 11:01


origine




Réponses:


À moins que les fichiers binaires aient été utilisés pour vérifier les extensions et les utiliser s'ils sont présents, ils ne tirent pas parti des nouvelles instructions des extensions de jeux d'instructions.


7
2018-01-29 11:23



D'un côté, cela semble raisonnable, mais on peut se demander pourquoi ces nouvelles instructions sont ajoutées s'il n'y a pratiquement pas de logiciel compilé disponible pour elles. - Martijn
Il existe des logiciels mais ce sont principalement des outils à usage unique - Ramhound
mais réellement? Toutes les instructions ajoutées aux différents processeurs depuis le 8086 en 1978 ne sont pas disponibles pour quiconque télécharge un blob compilé pour x86? MMX, SSE1 à SSE5, AVX, tout cela n'est pas disponible pour les fichiers binaires compatibles x86? J'ai du mal à le croire. - Martijn
Ugh, j'ai apparemment mal interprété votre réponse, et les binaires peuvent être / sont compilés pour vérifier les extensions? C'est fondamentalement ce à quoi ma question revient. - Martijn
De plus, une fois que la base de matériel installée prenant en charge une extension donnée devient suffisante, on peut supposer que l’extension est présente (similaire au système d’exploitation, à l’espace disque, à la mémoire ou aux exigences de fréquence telles que «Windows _ ou ultérieur»). Un matériel plus ancien produira généralement des exceptions d'opcode illégales (techniquement, un système d'exploitation plus récent sur un ancien matériel pourrait émuler de telles instructions pour fournir une compatibilité binaire, mais la plupart des nouvelles instructions sont améliorées). en émulant les instructions AVX sur un Pentium MMX]). - Paul A. Clayton