Advertencia: esta es una pregunta un poco más compleja de lo que te habrás dado cuenta, y ciertamente más de lo que la mayoría de las respuestas han presentado. Para tratar de cubrir al menos un poco más de la historia, esta publicación es bastante larga ...
En primer lugar, la situación con la memoria de video. La totalidad de la memoria de la tarjeta de video no es (al menos normalmente) directamente visible en el espacio de direcciones de la CPU. Por lo general, tiene una "ventana" de aproximadamente 128-256 megabytes de memoria de video visible para la CPU. La GPU puede asignar diferentes partes de su memoria a esa ventana, por lo que normalmente puede escribir en la mayoría de la memoria de la GPU desde la CPU, pero debe informar a la GPU con anticipación sobre lo que va a escribir antes de poder hacerlo. Solo por ejemplo, cuando usa DirectX y desea escribir directamente en la memoria de gráficos, puede hacerlo, pero para hacerlo, comienza llamando LockRect
para que la GPU asigne la memoria correcta en la ventana (y como tan pronto como termines, llamasUnlockRect
para que pueda asignar otra memoria según sea necesario). Al menos en el caso típico, puede ajustar el tamaño de la ventana de video en la configuración del BIOS.
En segundo lugar, incluso en el modo de 32 bits, los procesadores x86 admiten lo que se denomina Extensiones de dirección física (PAE), que permite que la CPU aborde más de 4 Gig. de la memoria Microsoft admite PAE en algunas versiones de Windows, pero solo la relativamente costosa Enterprise Edition de Windows Server. Además, el programa debe estar escrito específicamente para usar AWE. Solo unos pocos programas (por ejemplo, SQL Server Enterprise Edition) lo han hecho alguna vez. En pocas palabras: es posible, pero bastante raro.
En cuanto a la lectura de 64 bits a la vez: el último procesador en leer datos de solo 32 bits a la vez fue el 486. Comenzando con el Pentium, todos los procesadores han tenido buses de datos de 64 bits. Tenga en cuenta que el bus de direcciones no es el mismo que el bus de datos, por lo que expandirlo a un bus de datos de 64 bits no permitió que el procesador trabajara con más memoria (aunque, como sucede, se agregó PAE en el Pentium Pro, por lo que fue casi concurrente con la expansión a un bus de datos de 64 bits).
Aunque el Pentium podía leer 64 bits de datos en un solo ciclo de reloj, internamente (en su mayoría) procesaba datos de 32 bits a la vez. El bus más ancho ayudó principalmente a compensar la diferencia de velocidad entre la CPU y la memoria principal. Las instrucciones MMX del Pentium MMX admitían el procesamiento de datos en fragmentos de 64 bits, pero era bastante torpe de usar y (en particular) la mayoría de los compiladores no generaban el código MMX, por lo que tuvo que escribir en lenguaje ensamblador para usarlo. . El Pentium también admite operaciones de 64 bits (y 80 bits) para números de coma flotante, pero eso se usa solo para una minoría bastante pequeña de la mayoría de la programación (y, en general, era más lento que trabajar con enteros de todos modos).
El diseño x86-64 tiene el doble de registros de propósito general que el diseño x86 de 32 bits, y cada uno de esos registros tiene 64 bits de ancho. Sin embargo, cuando la CPU se ejecuta en modo de 32 bits, solo se puede usar el subconjunto de los registros que existían en las CPU de 32 bits.
Volviendo al punto flotante por un momento, en modo de 32 bits, la matemática de punto flotante se realiza utilizando el conjunto de instrucciones diseñado originalmente para el coprocesador matemático Intel 8087. Esto utiliza un modelo que hace que sea bastante difícil hacer un uso completo de sus capacidades. Intel (y AMD) han agregado más recientemente "Streaming SIMD Extensions", o SSE. La mayoría de los compiladores de 64 bits generan código que puede / usa SSE en lugar de punto flotante compatible con 8087. El "SIMD" en SSE significa "instrucción única, datos múltiples". Lo que esto significa es que una instrucción SSE puede llevar a cabo dos operaciones de punto flotante en dos datos separados. Aunque esto no necesariamente duplica la velocidad, generalmente mejora la velocidad al menos un poco.
Finalmente, probablemente debería señalar que hay una parte de la comparación que generalmente es un poco injusta. Cuando instala un nuevo sistema operativo, casi siempre es al menos un poco más rápido que un sistema operativo que ha estado en uso durante bastante tiempo. Los programas almacenan datos en el registro, en el disco duro, etc. Cuantos más datos agregue, más trabajo tenderá a involucrarse para encontrar los datos que desea en un momento dado. Si bien las empresas que venden "limpiadores de registro" y con tanta frecuencia exageran este efecto, de todos modos es cierto hasta cierto punto. Como tal, si todo lo que hizo fue volver a formatear su disco duro y volver a instalar exactamente el mismo sistema operativo, podría esperar ver una mejora en la velocidad, y si ha tenido el viejo sistema operativo instalado y utilizado durante mucho tiempo , esa mejora (por sí sola) puedeSé bastante sustancial. Al menos parte de la mejora de velocidad que está viendo puede ser independiente de cualquier diferencia real entre los dos sistemas operativos.
Hay más que eso, por supuesto, pero comienzas a tener la idea. No se trata tanto de una sola característica que hace una gran diferencia, sino de muchas características que generalmente hacen diferencias bastante pequeñas individualmente, pero muchas de ellas se suman (o incluso se multiplican) para hacer una diferencia bastante sustancial en general.