Question

Je ne suis pas sûr de bien comprendre: un système d’exploitation 64 bits exécute-t-il / compile-t-il le code plus rapidement qu’un système d’exploitation 32 bits sur le même système?

Nous utilisons des systèmes d’exploitation 64 bits là où je suis et il semble que cela ne cause que des problèmes de compatibilité avec les logiciels propriétaires et hérités. (Nous utilisons Ubuntu 9.04 Jaunty amd64)

Était-ce utile?

La solution

Je limiterai cette réponse à x86-32 (IA-32) et x86-64 (AMD64), car j'estime que c'est la question que vous vous posez réellement.

Au niveau du processeur, il existe quelques avantages. La première et la plus évidente est l’extension de la mémoire virtuelle par processus à une plage beaucoup plus large de 48 bits. (64 sont autorisés dans l'architecture mais ne sont pas obligatoires, si la mémoire sert.) Cela permet aux applications d'utiliser une plus grande quantité de mémoire système, tout en ouvrant beaucoup d'espace pour des éléments tels que les fichiers mappés en mémoire qui fonctionnent sur mémoire virtuelle qui n'est pas liée à la mémoire réelle. Il offre également beaucoup d’espace de travail au système d’exploitation en question, car il n’a pas à partager votre limite de 4 Go pour ses données. En bref, les applications et le système d'exploitation peuvent mieux utiliser les ressources de votre machine.

De plus, l’architecture AMD64 résout l’un des plus gros problèmes de l’IA-32, à savoir l’absence totale de registres. En fait, il double les registres disponibles, ce qui représente un gain énorme pour certains types de code. (En fait, c’est une victoire pour presque TOUT code, mais certaines applications souffrent du coût accru de la mémoire de 64 bits et cela s’égale.)

Du côté de Windows, MS a saisi cette occasion pour casser tout un tas de problèmes de compatibilité historiques. Ce n'est pas une rupture nette avec l'ancien monde, mais c'est un début. Je ne crois pas que Linux souffre des mêmes problèmes au départ et je n’ai pas beaucoup de perspective à offrir sur ses avantages 64 bits.

Autres conseils

En règle générale, le développement - ou l'utilisation - d'un système d'exploitation 64 bits, quel que soit le contexte, sera plus lent que le même système d'exploitation 32 bits. Du fait que tous les pointeurs sont deux fois plus grands, vous êtes beaucoup plus susceptible de vider le cache et de contenir moins de données dans la RAM. Cela ralentit considérablement votre application. Vous n'utiliseriez normalement des systèmes 64 bits que lorsque vos applications doivent traiter simultanément plus de 2 à 3 Go de données, ce qui est très courant dans l'informatique scientifique et dans certaines bases de données, mais extrêmement rare. C’est la raison pour laquelle Apple ne préconise pas la compilation inconditionnelle d’applications PowerPC en mode 64 bits, par exemple: le coût dû aux erreurs de cache et au manque de mémoire est suffisamment élevé pour que le passage à la version 64 bits n’ait de sens que si vous pouviez réellement profiter du Espace 64 bits.

Mais x86 v. AMD64, qui est l’objet de votre question (puisque vous parlez d’Ubuntu), est une créature très spéciale. AMD64 étend non seulement tous les pointeurs à 64 bits; il corrige de nombreuses failles dans l'architecture x86, doublant le nombre de GPR, simplifiant les instructions pour qu'elles soient plus conviviales pour les conceptions de processeurs modernes, etc. De ce fait, sur les plates-formes AMD64 uniquement , vous constaterez souvent une amélioration substantielle des performances en passant à la version 64 bits.

Il existe un autre domaine dans lequel, dans le développement logiciel, il est logique de passer à la version 64 bits: vous devez exécuter de nombreuses machines virtuelles. L'exécution de deux ordinateurs virtuels peut facilement vous faire passer la barrière de mémoire de 3 Go du système d'exploitation, rendant leur utilisation très pénible. (Cela fonctionnera grâce à une technologie appelée PAE ou Paged Addressing Extensions, mise au point par Intel pour combler le fossé entre les systèmes 32 bits et les systèmes 64 bits, mais le résultat est lent, difficile à utiliser en tant que développeur, et non très bien supporté sous Windows.) L’utilisation d’un système d’exploitation 64 bits peut offrir d’énormes avantages.

(Comme le notent les commentateurs, cette réponse est quelque peu générique, certains de ces points ne s'appliquent pas aux puces Intel / Amd.)

La réponse est: cela varie, pour plusieurs raisons:

  • Avec des instructions plus larges, vous obtiendrez plus d'expressivité (soit une plus grande variété d'instructions, soit une plus grande capacité d'encodage des données directement dans ces instructions), ce qui peut réduire le nombre d'instructions à acheminer. la machine, ce qui est généralement une victoire: donc ++ 64 bits ici.

  • Mais parfois, des instructions plus volumineuses peuvent prendre plus de cycles à décoder et à exécuter, car elles peuvent être plus complexes. Donc, un possible - 64 bits ici.

  • De plus, vous devez également transférer ces instructions vers et depuis la CPU: les instructions 64 bits sont deux fois plus volumineuses que les instructions 32 bits, ce qui signifie davantage de trafic vers et depuis la mémoire et les caches. Les processeurs sont structurés de manière à réduire considérablement ce coût, mais il s'agit ici d'un léger - 64 bits.

  • Plus de registres sont disponibles dans des jeux d'instructions plus larges, ce qui entraîne moins de trafic de données vers et depuis la pile et / ou la mémoire. So ++ 64bit here.

  • Et comme tout le monde va le mentionner, vous avez la possibilité d'adresser plus de mémoire.

  • (J'ai presque oublié celui-ci) le natif "long" ou " int " En fonction de l'architecture, la taille peut augmenter, ce qui signifie que les structures de données basées sur celles-ci deviennent plus grandes. Plus grand = plus de mémoire à déplacer, ce qui signifie plus d'attente possible pour le transfert de données: - 64 bits si vous ne faites pas attention.

En fonction de votre architecture, de nombreuses préoccupations peuvent également s'appliquer. Vous pouvez être assurés que les fournisseurs de processeurs et de compilateurs travaillent d'arrache-pied pour réduire les "-" ci-dessus et augmenter les "++".

J'ai cette base de données de 5 Go qui doit être convertie. Sur un système 64 bits, je viens de mettre toutes les données dans des collections. Dans le système 32 bits, je devais réfléchir à l'ordre dans lequel charger et convertir. Le problème n'est pas le temps d'exécution, c'est le temps d'ingénierie. Le passage à 64 bits permet de gagner des semaines de temps de développement.

Les problèmes de compatibilité: ce n'est pas un bug, c'est une fonctionnalité. Il vous montre qui a écrit un logiciel propre.

L’utilisation de systèmes d’exploitation 64 bits présente également des avantages en termes de sécurité. Il y a eu des exploits de débordement de mémoire tampon qui contournent la randomisation de la disposition des espaces d'adresses par force brute. Sur un système d'exploitation 64 bits, il existe tout simplement trop d'adresses pour que ce type d'attaque réussisse.

Cela accélérera la compilation si votre processus de compilation est lié à la mémoire et que vous utilisez votre système d'exploitation 64 bits pour augmenter la quantité de mémoire utilisable par votre système.

Je pense que ce sera un peu plus lent. J'ai eu cette expérience avec le FC10. Je n'ai pas de vraies raisons, mais ce n'est certainement pas le problème sizeof (pointeur). (*)

Mon propre idée est qu'il s'agit simplement de pilotes moins optimisés ou de chipsets modifiés.

De plus, NTFS-3g était amusant en 64 bits, alors qu’il fonctionnait en 32 bits (même distribution, même partition du noyau, elle était juste "bloquée" dans certaines circonstances)

(*) la plupart des compilations sont liées au disque et non au processeur. De plus, l'architecture x86_64 présente d'autres améliorations qui annulent ce fait (meilleur PIC, plus de règles, SSE2 par défaut, 686 cmov par défaut). Sauf si votre application ne fait rien que déplacer de petits blocs de manière aléatoire.

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