6 votes

Y a-t-il un avantage à développer sur un système d'exploitation 64 bits ?

Je ne suis pas sûr d'avoir bien compris : un système d'exploitation 64 bits exécute/compile-t-il du 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 et il semble que cela ne cause que des problèmes de compatibilité avec les logiciels propriétaires. (Nous utilisons Ubuntu 9.04 Jaunty amd64).

17voto

Promit Points 2739

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

Au niveau du processeur, il y a quelques avantages. Le premier et le plus évident est l'extension de la mémoire virtuelle par processeur à une plage beaucoup plus large de 48 bits. (Cela permet aux applications d'utiliser une plus grande partie de la mémoire disponible du système et de libérer beaucoup d'espace pour des choses comme les fichiers mappés en mémoire qui fonctionnent sur la mémoire virtuelle qui n'est pas liée à la mémoire réelle. Cela ouvre également beaucoup d'espace pour le 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 faire un meilleur usage des ressources de votre machine.

De plus, l'architecture AMD64 résout l'un des plus gros problèmes de IA-32, à savoir le manque total de registres. En fait, elle double les registres disponibles, ce qui est un gain énorme pour certains types de code. (En fait, c'est un gain pour presque TOUT le code, mais certaines applications souffrent du coût mémoire accru de 64 bits et cela s'équilibre).

Du côté de Windows, MS a profité de l'occasion pour résoudre un grand nombre de problèmes historiques de compatibilité. Ce n'est pas une rupture nette avec l'ancien monde, mais c'est un début. Je ne pense pas que Linux souffre des mêmes problèmes pour commencer, et je n'ai pas beaucoup de perspective à offrir sur leurs avantages du 64 bits.

11voto

Benjamin Pollack Points 10458

En règle générale, le développement - ou l'utilisation - d'un système d'exploitation 64 bits, dans quelque contexte que ce soit, sera plus lent que le même système d'exploitation 32 bits. Comme tous les pointeurs sont soudainement deux fois plus grands, vous êtes beaucoup plus susceptible de faire sauter le cache, et vous pouvez mettre moins de données dans la RAM. Cela ralentit considérablement votre application. Normalement, vous n'utiliserez les systèmes 64 bits que si vos applications doivent traiter plus de 2 à 3 Go de données simultanément, ce qui est très courant en informatique scientifique et dans certaines bases de données, mais extrêmement rare par ailleurs. C'est la raison pour laquelle Apple ne préconise pas la compilation inconditionnelle des 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 au 64 bits n'ait de sens que si vous pouvez vraiment tirer parti de l'espace 64 bits.

Mais x86 contre AMD64, qui est ce que vous demandez vraiment (puisque vous discutez d'Ubuntu), est une bête très spéciale. AMD64 ne se contente pas d'étendre tous les pointeurs à 64 bits ; il corrige de très nombreuses déficiences dans l'architecture x86, en doublant le nombre de GPR, en simplifiant les instructions pour les rendre plus conviviales pour les conceptions de CPU modernes, et plus encore. A cause de cela, sur les plateformes AMD64 uniquement vous constaterez souvent une augmentation substantielle des performances en passant au 64 bits.

Il existe un autre domaine dans lequel, en matière de développement logiciel, il est judicieux de passer au 64 bits : vous devez exécuter de nombreuses machines virtuelles. L'exécution de quelques VM peut facilement vous faire dépasser la barrière des 3 Go de mémoire du système d'exploitation, ce qui rend leur utilisation très pénible (cela fonctionnera grâce à une technologie appelée PAE, ou Paged Addressing Extensions, qu'Intel a inventée pour combler le fossé entre les systèmes 32 bits et les systèmes 64 bits, mais le résultat est lent, pénible à utiliser en tant que développeur et n'est pas très bien supporté par Windows). Le passage à un système d'exploitation 64 bits peut présenter des avantages considérables.

6voto

leander Points 6363

(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 de plus grande largeur, vous obtiendrez une plus grande expressivité (soit une plus grande variété d'instructions, soit une plus grande capacité à coder directement des données dans ces instructions), ce qui peut signifier une réduction du nombre d'instructions passant par la machine, ce qui est généralement un avantage : donc ++64bit ici.

  • Mais parfois, des instructions plus importantes pourrait prennent plus de cycles pour être décodés et exécutés, car ils peuvent être plus complexes. Donc une possible --64bit ici.

  • Il faut également transférer ces instructions depuis et vers le CPU : Les instructions de 64 bits sont deux fois plus grosses que celles de 32 bits, ce qui implique un trafic plus important vers et depuis la mémoire et les caches. Les CPU sont structurés de manière à améliorer une grande partie de ce coût, mais il s'agit ici d'un léger --64bit.

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

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

  • (J'ai failli l'oublier) la taille native des "long" ou "int" peut augmenter, selon l'architecture, ce qui signifie que les structures de données basées sur ces éléments deviennent plus grandes. Plus grand = plus de mémoire à déplacer, ce qui signifie plus d'attente possible sur le déplacement des données : --64bit si vous n'êtes pas prudent.

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

3voto

Stephan Eggermont Points 11224

J'ai cette base de données de 5GByte qui a besoin d'être convertie. Sur un système 64 bits, j'ai simplement mis 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, mais le temps d'ingénierie. Le passage au 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é. Cela vous montre qui a écrit un logiciel propre.

2voto

Jason Baker Points 56682

L'utilisation de systèmes d'exploitation 64 bits présente également certains avantages en matière de sécurité. Certains exploits de débordement de tampon ont permis de contourner la randomisation de l'espace d'adressage par force brute. Sur un système d'exploitation 64 bits, il y a tout simplement trop d'adresses pour que ce type d'attaque puisse réussir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X