Quest-ce que ' est si spécial entre x64 et x86? [fermé]

Fermé . Cette question nécessite détails ou clarté . Il naccepte pas les réponses actuellement.

Commentaires

  • Duplicata de stackoverflow.com/questions/607322/… , que je peux malheureusement ' t signaler car il ' est sur SO, pas sur les programmeurs.
  • @Matthew Read: Itanium a échoué de façon spectaculaire sur le marché parce que lISA était notoirement difficile à écrire des compilateurs. Le marché du HPC y avait pratiquement renoncé bien avant quAMD nintroduise ses extensions.
  • @Mathew, vous pourriez dire cela dIntel! Si ce nétait ' t pour la compatibilité descendante, nous travaillerions sur des processeurs avec des jeux dinstructions et un ordre des octets du réseau sains
  • @Matthew: Avez-vous déjà regardé lItanium jeu dinstructions? Quel cauchemard! Déplacer la planification des instructions vers le compilateur était une mauvaise idée. Si vous voulez un bon modèle 64 bits, regardez le DEC ' s Alpha.
  • @Mathew, ne sous-estimez pas l’importance d’une plate-forme rétrocompatible.

Réponse

La seule vraie différence que vous remarqueriez lors de lutilisation dun HLL sera la taille du code, et découvrir que certaines fonctionnalités / bibliothèques ne sont pas encore disponibles pour x64. Oh, et le code x64 a tendance à être moins performant, du moins sous .NET. Lapplication sur laquelle je travaille est environ 20% plus rapide lorsque je compile pour x86. Je ne sais pas si cest parce que jutilise plus de bande passante de bus pour déplacer des quantités de 8 octets, ou sil y a du « chunking » en cours pour adapter les API 32 bits au 64 bits.

Commentaires

  • Pas tant la bande passante du bus des déplacements que le fait que si vous gérer des quantités 64 bits par rapport à 32 bits, vous ' avez effectivement réduit de moitié la taille de votre cache.
  • @Brian: Excellent point, je navais pas ' Jy ai pensé.
  • Particulièrement avec .NET lourd de références où tout est un pointeur (référence).

Réponse

Au niveau dont vous parlez (.NET), il y a très peu de différence. Lorsque vous utilisez du code entièrement géré, le JIT compilera automatiquement votre code et il fonctionnera à peu près de la même manière, avec des caractéristiques de performances différentes. Pour certaines choses, ce sera plus rapide (traiter beaucoup de données, les données pourraient être traitées par blocs de 64 bits, plus de registres disponibles, etc.), et pour dautres, plus lent (les données 64 bits (cest-à-dire les pointeurs) sont plus lentes à charger dans le cache pour les débutants. , ce qui signifie plus de données et des transferts plus lents depuis la mémoire principale).

Vous navez vraiment à vous soucier de la différence que lorsque vous utilisez du code non managé. Ce blog présente une bonne description des problèmes.

Commentaires

  • Vous n ' pas de données 64 bits sauf si vous le spécifiez. Les pointeurs sont promus à 64 bits, mais les entiers et les flottants restent les mêmes. Presque tous les systèmes 32 bits prennent en charge le flottant 64 bits (double), et de nombreux int 64 bits pris en charge (long long). 64bit ouvre également les nouvelles fonctionnalités, y compris plus de registres visibles par lutilisateur.
  • @Omega, les pointeurs sont des données. Ils doivent être déplacés vers le cache pour être utilisés. Lexécution sur 64 bits signifie que chaque référence ou déréférence pourrait potentiellement déplacer une ou plusieurs dentre elles dans le cache, et elle étend également chaque objet qui contient des références. Mais vous avez raison de dire que la déclaration moitiés est incorrecte. Je vais changer cela. Merci.
  • Daprès mon expérience, les pointeurs ' sont très courants. Mais je ne ' pas faire de POO, et jai eu une expérience très douloureuse avec de mauvais pointeurs, donc je ne les utilise que lorsque cela est absolument nécessaire. Ainsi, les pointeurs IMO ne ' ne prennent pas beaucoup despace dadressage. Les compilateurs modernes OTOH génèrent beaucoup de déroulement de boucle, de peeling de boucle et de code de cas spécial, de sorte que la taille du code peut devenir assez grande.
  • @Omega, chaque fois que vous référencez une instance dobjet complexe dans un langage géré que vous utilisez un pointeur sous le capot.

Réponse

Les programmes .Net qui seront écrits pour les systèmes 64 bits auront espace dadressage plus grand, et sera donc beaucoup plus rapide que les programmes basés sur x86-32 bits. Les derniers compilateurs de langage .NET produisent également du code beaucoup plus optimisé. JIT a également été amélioré ces dernières années et vous pouvez maintenant faire une optimisation JIT multicœur. Les débogueurs sont également améliorés. Pendant ce temps, un code meilleur et optimisé est produit pour les systèmes 64 bits.

Commentaires

  • Pas vraiment.Comme le principal commentaire référencé il y a plus dun an, x86-64 a un jeu de registres bien meilleur et ne peut pas être considéré comme une " extension ". Ensuite, lespace dadressage ne ' rend pas les programmes plus rapides. Ensuite, leur part de marché. 64 bits sont actuellement en tête, 32 bits la minorité (inventaire Steam, août 2012).
  • This ( en.wikipedia.org/wiki/X86-64 ) dit que X86-64 est une extension de x86. Peut-être que lespace dadressage naffecte pas directement les programmes exécutés lentement, mais peut affecter la mémoire, ce qui ralentira lexécution du programme. Dans le développement de systèmes 64 bits, il se peut que vous ayez peu demplois supplémentaires, mais pas un gros chiffre. Pour le marché du travail, ' ne voyez que les pays avancés, mais prenez également les pays du tiers monde dans les pays. Pour de bonnes références, consultez: arstechnica.com/features/2008/09/x86-64 .
  • Vous ' citant un article vieux de 4 ans. Il ny a pratiquement pas de processeurs x86 32 bits produits aujourdhui, en 2012, et cela inclut les processeurs bas de gamme ' destinés aux pays du tiers monde.
  • En Les pays du tiers monde, qui représentent une grande proportion de la population mondiale, utilisent ces systèmes régulièrement. Même si de nouveaux systèmes arrivent, mais le taux dachat nest pas bon par rapport aux systèmes mobiles.
  • @Badar Doubtful. Je vois des processeurs 64 bits pour les ordinateurs bas et milieu de gamme ici en Amérique latine. Jai tendance à convenir que les processeurs 32 bits ont disparu, du moins pour les ordinateurs de bureau et les ordinateurs portables de milieu de gamme.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *