Attention: c'est une question un peu plus complexe que vous ne l'avez peut-être imaginé et certainement plus que la plupart des réponses ne l'ont dépeint. Pour essayer de couvrir au moins un peu plus l'histoire, ce post est assez long ...
Tout d'abord, la situation avec la mémoire vidéo. L'intégralité de la mémoire de la carte vidéo n'est pas (au moins normalement) directement visible dans l'espace d'adressage du CPU. Vous disposez généralement d'une «fenêtre» d'environ 128 à 256 mégaoctets de mémoire vidéo visible par le processeur. Le GPU peut mapper différentes parties de sa mémoire sur cette fenêtre, vous pouvez donc généralement écrire sur la plupart de la mémoire du GPU à partir du CPU, mais vous devez indiquer au GPU à l'avance sur quoi vous allez écrire avant de le faire. Par exemple, lorsque vous utilisez DirectX et que vous souhaitez écrire directement dans la mémoire graphique, vous pouvez le faire - mais pour ce faire, vous commencez par appeler LockRect
pour que le GPU mappe la bonne mémoire dans la fenêtre (et comme dès que vous avez terminé, vous appelezUnlockRect
afin qu'il puisse mapper d'autres mémoires selon les besoins). Au moins dans le cas typique, vous pouvez ajuster la taille de la fenêtre vidéo dans la configuration du BIOS.
Deuxièmement, même en mode 32 bits, les processeurs x86 prennent en charge ce qu'on appelle les extensions d'adresse physique (PAE), ce qui permet au processeur d'adresser plus de 4 Go. de la mémoire. Microsoft prend en charge PAE dans certaines versions de Windows - mais uniquement l'édition Enterprise relativement coûteuse de Windows Server. De plus, le programme doit être écrit spécifiquement pour utiliser AWE. Seuls quelques programmes (par exemple, SQL Server Enterprise Edition) l'ont déjà fait. Conclusion: c'est possible, mais assez rare.
En ce qui concerne la lecture de 64 bits à la fois: le dernier processeur à lire des données à seulement 32 bits à la fois était le 486. À partir du Pentium, tous les processeurs ont eu des bus de données à 64 bits. Notez que le bus d' adresse n'est pas le même que le bus de données, donc l'extension à un bus de données 64 bits n'a pas permis au processeur de travailler avec plus de mémoire (bien que, comme cela arrive, PAE a été ajouté dans le Pentium Pro, il était presque simultané à l'extension à un bus de données 64 bits).
Même si le Pentium pouvait lire 64 bits de données en un seul cycle d'horloge, en interne, il traitait (principalement) des données 32 bits à la fois. Le bus plus large a principalement aidé à compenser la différence de vitesse entre le processeur et la mémoire principale. Les instructions MMX du Pentium MMX prenaient en charge le traitement des données en blocs 64 bits, mais leur utilisation était plutôt maladroite et (en particulier) la plupart des compilateurs ne généraient pas de code MMX, vous avez donc dû écrire en langage assembleur pour l'utiliser. . Le Pentium a également pris en charge les opérations 64 bits (et 80 bits) pour les nombres à virgule flottante, mais cela n'est utilisé que pour une assez petite minorité de la plupart des programmes (et était généralement plus lent que de travailler avec des entiers de toute façon).
La conception x86-64 possède deux fois plus de registres à usage général que la conception x86 32 bits, et chacun de ces registres a une largeur de 64 bits. Toutefois, lorsque le processeur fonctionne en mode 32 bits, seul le sous-ensemble des registres qui existaient sur les processeurs 32 bits est utilisable.
Pour revenir un instant à la virgule flottante, en mode 32 bits, les calculs en virgule flottante sont effectués à l'aide du jeu d'instructions initialement conçu pour le coprocesseur mathématique Intel 8087. Cela utilise un modèle qui rend assez difficile l'utilisation complète de ses capacités. Intel (et AMD) ont récemment ajouté «Streaming SIMD Extensions», ou SSE. La plupart des compilateurs 64 bits génèrent du code qui peut / utilise SSE au lieu de virgule flottante compatible 8087. Le "SIMD" dans SSE signifie "instruction unique, données multiples". Ce que cela signifie est que l' une instruction SSE peut effectuer deux opérations en virgule flottante sur deux morceaux de données. Bien que cela ne double pas nécessairement la vitesse, cela améliore généralement la vitesse au moins un peu.
Enfin, je devrais probablement souligner qu'il y a une partie de la comparaison qui est généralement un peu injuste. Lorsque vous installez un nouveau système d'exploitation, il est presque toujours au moins un peu plus rapide qu'un système d'exploitation utilisé depuis un certain temps. Les programmes stockent les données dans le registre, sur le disque dur, etc. Plus vous ajoutez de données, plus il faut travailler pour trouver les données souhaitées à un moment donné. Alors que les entreprises qui vendent des «nettoyeurs de registre» et exagèrent fréquemment cet effet, c'est vrai dans une certaine mesure de toute façon. En tant que tel, si tout ce que vous avez fait a été de reformater votre disque dur et de réinstaller exactement le même système d'exploitation, vous pouvez vous attendre à voir une certaine amélioration de la vitesse - et si vous avez fait installer et utiliser l'ancien système d'exploitation pendant longtemps , cette amélioration (par elle-même) peutêtre assez substantiel. Au moins une partie de l'amélioration de la vitesse que vous voyez peut être indépendante de toute différence réelle entre les deux systèmes d'exploitation.
Il y a plus que cela, bien sûr, mais vous commencez à avoir l'idée. Il ne s'agit pas tant d'une seule fonctionnalité qui fait une énorme différence, que de nombreuses fonctionnalités qui font généralement des différences assez petites individuellement, mais beaucoup d'entre elles s'ajoutent (ou même se multiplient) ensemble pour faire une différence assez substantielle dans l'ensemble.