web-dev-qa-db-fra.com

Pourquoi la version x64 bits est-elle bien plus rapide que x32?

Dernièrement, j'ai remarqué que mon ancien ordinateur portable (Toshiba Satellite L500-1DT) fonctionnait mieux avec la version Ubuntu x64 que x32. Je voulais dire plus vite: les vidéos et les applications Adobe Flash fonctionnent beaucoup mieux. Software Center et les applications APT fonctionnent beaucoup de manière fluide. Tout fonctionne parfaitement sur x64. Le ventilateur de refroidissement fonctionne beaucoup moins (ne refroidit pas le système tout le temps, comme sur x32). Sur la version x32 bits, j'ai eu le sentiment que mon ordinateur surchaufferait. Il y a 2 semaines, ma batterie est morte lorsque j'ai exécuté la version x32. Je ne sais pas si c'est à cause d'une surchauffe ou d'une coïncidence. Il faisait VRAIMENT chaud et très très lentement. J'utilise le processeur T3000 @ 1,80 GHz × 2 à double cœur Celeron (R) et le processeur vidéo Intel GMA45 (avec une mémoire partagée de 256 Mo). RAM - 4 Go. Ubuntu 11.10.

Ce n'est pas le seul cas et la seule machine sur laquelle j'ai découvert que x64 fonctionne mieux, en fait, que ce qu'on appelle la "version 32 bits recommandée". Je suis vraiment curieux à ce sujet et aimerais savoir répondre une fois pour toutes.

S'il vous plaît, expliquez-moi ou guidez-moi avec un lien.

Merci !

3
marchindeed

Euh, " deux fois plus vite sinon plus selon le matériel sur lequel il tourne " ?? Ah, si seulement le monde fonctionnait de cette façon.

Par exemple, jetez un oeil à cet article: Ubuntu 12.04 LTS: Performance 32 bits/64 bits . Bien que certains des indices de référence synthétiques montrent des gains de performance considérables, beaucoup d’entre eux montrent des gains tout juste minimes (10% à 30%), aucun gain, voire une baisse de performance. Et ce ne sont que des points de référence synthétiques qui ne donnent généralement pas une idée utile de la performance du système lorsqu’on fait autre chose que d’exécuter des points de repère.

Les performances du système sont très influencées par les goulots d'étranglement "système" et vous ne pouvez pas généraliser de manière générale, par exemple deux fois les bits, ce qui implique deux fois les performances.

Cela dit, j'essaie toujours d'utiliser les systèmes d'exploitation 64 bits car je m'attends à ce que les performances soient au moins un peu meilleures. Bien que la taille des registres de la CPU soit doublée, le plus important est que le nombre de registres augmente de huit en x86 à seize en mode 64 bits x86_64. Cela permet à un compilateur de produire potentiellement du code plus rapide. Il existe un certain nombre de ces réglages d’instructions qui, bien qu’ils soient probablement insignifiants dans un cas particulier, peuvent s’additionner lorsqu’ils sont utilisés à l’échelle du système pour générer un gain de performances utile.

De plus, les programmes compilés pour le x86 32 bits ont peu, voire pas, de pertes de performances, car ils peuvent être exécutés en "mode de compatibilité".

Les gens font souvent la généralisation que si vous avez seulement 4 Go ou moins de mémoire, il n'y a pas de différence entre 32 bits et 64 bits et donc pas de raison d'utiliser la version 64 bits. Ce n'est tout simplement pas vrai. L'architecture des instructions de la CPU est suffisamment différente (IMO) en mode 64 bits pour utiliser de préférence le système d'exploitation 64 bits si votre matériel le prend en charge.

Après tout, vous ne voudriez pas utiliser votre CPU 32 bits en mode 16 bits, n'est-ce pas? :-)

7
irrational John

En bref: davantage de registres opérationnels sont disponibles en mode x86_64 par rapport à x86. En outre, il y a un nom confus x32 ABI qui n'est pas x86 (_32) mais qui mélange x86_64 et x86 pur. Et, BTW, l'article que je vous ai donné lien explique clairement pourquoi x86_64 a tendance à être plus performant.

2
poige

Une différence aussi extrême n’est pas typique et n’est pas vraiment liée aux avantages généraux du mode 64 bits.

Je suppose que vous voyez soit un type de bogue lié à votre matériel, soit un bogue du micrologiciel de votre périphérique qui est déclenché par le noyau 32 bits d'Ubuntu.

1
poolie