¿Por qué Windows 7 x64 funciona más rápido que una edición x86 en mi PC?

11

¿Por qué Windows 7 x64 funciona más rápido que una edición x86 en mi PC a pesar de que uso principalmente cosas x86? ¿Qué me pasa y qué me estoy perdiendo?

La mayoría de las cosas que uso es x86 (por ejemplo, DAW, juegos, reproductores multimedia). Sin embargo, una cantidad considerable de ellos son x64 (aunque sus contrapartes x86 funcionan bien).

Intenté usar las mismas cosas en el mismo sistema, pero siempre terminé encontrando que Windows 7 x64 funcionaba un poco más rápido que x86. Soy muy observador Incluso noto las animaciones de ventana más pequeñas.

Sistema : Windows 7 Ultimate x64
CPU : Intel Core 2 Duo E7500 @ 2.93 GHz
RAM : 2 GB x 2 = 4 GB DDR2 @ 332 MHz
Placa base : Intel D945GCNL
Gráficos : ATI Radeon HD 4350 @ 1 GB
Audio dedicado : M-Audio FastTrack Pro
HDD : Samsung HD753LJ 733 GB y Samsung HD160JJ 156 GB

Como puede ver, mi sistema es viejo.

Jaspe
fuente
44
Para empezar, Windows de 64 bits usará toda la RAM asignada.
3
¿Por qué te importa que sea más rápido? deberías estar contento de que así sea.
Matt H
@Randolph Lo entiendo, pero ¿cómo afecta eso a las cosas x86? @ Matt No, me alegro, por supuesto. Solo tengo mucha curiosidad. No puedo, por mi vida, entender POR QUÉ está sucediendo.
Jasper
Usted está imaginando este efecto en gran medida porque espera verlo. La velocidad difiere de una PC a otra e incluso dentro de la misma PC por una serie de factores que son mucho más significativos que el paso de 32 a 64 bits. Cualquier PC recién instalada parece más rápida por el mero hecho de tener menos ensamblado instalado.
JamesRyan

Respuestas:

8

Este es un intento de proporcionar una respuesta completa resumiendo bits de respuestas individuales ya existentes, con algún contenido agregado. La lista intenta incluir todas las posibilidades para un caso general, incluso si se pueden descartar algunas para este caso en particular.

Diferencia de conjunto de instrucciones de CPU

Según lo descrito por Joel Coehoorn , para un código nativo x64 está disponible un conjunto de registros más grande, así como algunas instrucciones adicionales (por ejemplo, se garantiza que todas las CPU x64 implementarán instrucciones SSE y SSE2). Esto significa que el sistema operativo x64 nativo y los controladores pueden ser más eficientes.

Mejor utilización de RAM

64b puede usar 4 GB completos (e incluso más cuando está disponible). Además, algunos límites internos del sistema operativo (grupo paginado / no paginado, tamaño máximo de caché) aumentan con el sistema operativo 64b . Como resultado, tanto la paginación de memoria como el almacenamiento en caché de archivos pueden ser más eficientes.

Diferente posición del disco duro

Cuando tiene dos sistemas operativos instalados en dos particiones del mismo disco, una de esas dos particiones se cierra en el borde exterior, que generalmente es más rápido .

Estado del sistema operativo diferente

Cuando tiene dos sistemas operativos, cada uno de ellos puede estar en un estado un poco diferente. Uno de ellos puede estar más fragmentado que el otro, uno de ellos puede tener un registro un poco más limpio o menos servicios instalados o aplicaciones en segundo plano que el otro.

Mejores conductores

Otra posibilidad es que los controladores x64 podrían ser de mejor calidad que x86, no debido a algunas diferencias fundamentales de arquitectura, sino simplemente porque su proveedor tomó más esfuerzo para optimizarlos y ajustarlos.

Direccionamiento 64b

Agrego esto solo por completo, ya que para la gran mayoría de las aplicaciones cotidianas esta diferencia no juega ningún papel, y definitivamente no es relevante para lo que Jasper describe en su pregunta.

Si tiene una aplicación que procesa grandes cantidades de datos (por ejemplo, trabajar en Photoshop con grandes imágenes), ejecutar la versión 64b puede marcar una gran diferencia siempre que tenga 4 GB o más de RAM instalada.

¿Qué significa realmente "más rápido"?

Aquí está la lista de un comentario sobre otra respuesta , cuáles son exactamente las "cosas más rápidas" que Jasper puede ver:

  • ventanas animando más suave

Difícil de explicar. La animación de Windows la realiza la GPU en Windows 7 y la GPU es la misma. La carga en la CPU es insignificante. (Supongo que está utilizando el escritorio Aero).

  • ciertos programas de edición de fotos dibujan más rápido (x86 y x64)
  • Los videos HD se ejecutan sin problemas (en MPC-HC x64) y una experiencia general más estable.

Podrían ser controladores mejor sintonizados o controladores que aprovechen x64,.

  • los archivos se copian mucho más rápido

Podría ser causado por una partición más rápida (no relacionada con el sistema operativo) o por un mejor manejo de caché en el sistema operativo x64.

  • Los juegos no mostraron ningún cambio.

Comprensible. El rendimiento de los juegos está determinado por la CPU y la GPU. En caso de limitación de la CPU, el código limitante es el juego en sí, que es el mismo código x86 con poca interfaz con el sistema operativo x64. El rendimiento de la CPU es, por lo tanto, el mismo. La GPU es la misma. La sobrecarga del controlador y el sistema operativo en un juego bien programado es baja, por lo tanto, no es probable que se muestren aquí las diferencias de controlador o sistema operativo.

Suma
fuente
Comenté con mis experiencias sobre la respuesta de GrandmasterB. ¿Cómo pueden las experiencias ser coincidentes con las mismas (cantidad de) cosas instaladas (especialmente, las funciones propias de Windows) en la misma máquina TWICE? ¿Windows 7 de alguna manera estaba más optimizado para ser x64? ¿Los proveedores de hardware son más cuidadosos con sus controladores x64? Si tanto los programas como la máquina permanecen igual con una diferencia constante, parece que algunas cosas están mejor optimizadas de una manera que de otra.
Jasper
No afirmo que la experiencia sea casual en su caso particular. Sin embargo, para una explicación completa, tal posibilidad debe considerarse en un caso general. Por ejemplo, la partición interna / externa es algo que puede marcar una diferencia significativa en los tiempos de carga, y de ninguna manera está relacionada con el sistema operativo 64b / 32b.
Suma
Sin embargo, me gustaría agregar un poco de información. Cada vez que instalé 7 (en este caso, las dos primeras instalaciones x86 y las últimas dos instalaciones x64), siempre lo instalé en la misma unidad borrando por completo la instalación anterior. No hubo dos botas involucradas en absoluto. Jajaja Sí, incluso dejé las unidades sin tocar.
Jasper
Más: estoy usando Aero en un monitor de 1080p. Además, siempre realicé un formato rápido en lugar de un formato completo.
Jasper
"Siempre lo instalé recientemente en la misma unidad, borrando completamente la instalación anterior" Es bueno saberlo, esto descarta la posibilidad de "partición externa más rápida", así como la posibilidad de estado del sistema operativo.
Suma
16

El cambio de 32 a 64 bits no es el único cambio en la arquitectura x64. x64 también agrega más registros de CPU y nuevas instrucciones de CPU. Un sistema operativo que sabe cómo aprovecharlos puede obtener un modesto aumento de rendimiento del mismo hardware. Ah, y recuperar 1GB de RAM que solía estar dirigido a su tarjeta de video tampoco hace daño.

Joel Coehoorn
fuente
En realidad, solo 3.25 GB se pueden usar de 4 GB incluso en x64. Esperaba que esto se solucionara con mi actualización de x86, pero no fue así.
Jasper
+1 para la memoria de video, ni siquiera se dio cuenta de que tenía una tarjeta de video.
Supercereal
3
@Jasper: No estoy seguro si te estoy haciendo bien, pero una de mis computadoras usa los 8GB de RAM que he instalado (Win 7 x64 Ultimate)
xbonez
Esto es realmente lo único que tiene sentido para mí. Todas las demás cosas son iguales cuando se ejecutan las ediciones 32b y 64b del mismo sistema operativo en el mismo sistema. Solo hay dos diferencias: 1) registro mejorado y conjunto de instrucciones 2) espacio de direcciones de 64b que permite direccionar 4 GB o RAM completos y más
Suma
Aún así, en aras de la integridad, la parte sobre la tarjeta de 1 GB que oculta 1 GB de RAM definitivamente no es cierto, ya que cualquiera con 4 GB de RAM, 32b OS y dicha tarjeta puede presenciar fácilmente (vea también mi comentario a la respuesta de Pete).
Suma
7

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 LockRectpara que la GPU asigne la memoria correcta en la ventana (y como tan pronto como termines, llamasUnlockRectpara 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.

Jerry Coffin
fuente
Esta es una muy buena explicación. Es importante saber que muchos binarios de 32 bits están diseñados para ejecutarse en muchas versiones de Windows, incluido XP, y posiblemente antes. Deben ejecutarse en i386 o al menos i586. AMD64 no necesita admitir nada menos que un Pentium 4. Por supuesto, si es de código abierto puede recompilar, hay grados de SSE, que es una de las razones por las que Silverlight se hundió tan mal.
mckenzm
4

Es posible que no tenga nada que ver con 32 vs 64 bit.

No está claro en su publicación qué quiere decir con '64 bits es más rápido'. ¿Vamos a tomar de eso que reinstalaste Windows de 64 bits en una máquina en la que anteriormente tenías un Windows de 32 bits? Si es así, el 'restablecimiento' de la estructura del archivo puede explicar fácilmente los cambios de velocidad. Una nueva instalación, especialmente si ha reformateado, suele responder mejor que una instalación anterior en la que los archivos se fragmentan, el espacio en disco se agota, el registro se abarrota, etc.

También podría ser uno de los controladores ... por ejemplo, los controladores de video más nuevos podrían ser más rápidos y estar mejor optimizados por el proveedor que las versiones anteriores de x86. O el controlador del disco duro podría ser mejor.

Gran maestro B
fuente
1
Gran idea. Saber más lo que significa "más rápido" en realidad podría ayudar. ¿Las aplicaciones se cargan más rápido? ¿La ventana se anima más rápido? ¿Los juegos tienen fps más altos? ¿Se copian los archivos más rápido? Es muy posible que toda la explicación aquí, aunque sea interesante entender la diferencia del sistema operativo 32b y 64b, sea irrelevante para la diferencia real que describe Jasper.
Suma
Muy bien, déjame darte una idea más clara de lo que estoy hablando. Tuve Windows 7 x86 por un tiempo con el 100% de mi software y juegos necesarios instalados. Reinstalé el mismo sistema en la misma máquina junto con la misma cantidad de software y juegos, y me proporcionó una experiencia idéntica. Limpio mis registros una vez al día, fragmento mis discos duros cada pocos días y siempre mantengo una cantidad decente de espacio libre en cada unidad. De todos modos, después de esto, instalé Windows 7 x64 dos veces con el 100% de mis cosas requeridas solo para encontrar las dos últimas experiencias idénticas. [Continuar]
Jasper
Las cosas que se sintieron mejor: ventanas que animan más suavemente, los archivos se copian mucho más rápido, ciertos programas de edición de fotos se dibujan más rápido (tanto x86 como x64), los videos HD se ejecutan de manera más fluida (en MPC-HC x64) y una experiencia general más estable. Los juegos no mostraron ningún cambio.
Jasper
Ya ves, estas son pequeñas cosas. Pero no entiendo POR QUÉ están sucediendo estas pequeñas cosas que dieron origen a esta pregunta. =) No me habría molestado si tuviera más de 4 GB de RAM. Le habría dado los créditos a Windows 7 x64 por poder manejar eso, pero ese no es el caso aquí, lo que lo hace un poco más complejo.
Jasper
2

En pocas palabras, es porque su computadora puede procesar 64 bits (8 bytes) de datos por ciclo de reloj. Su procesador recibe datos en forma de bits previamente organizados conocidos como palabras. Las palabras en la arquitectura x64 tienen el doble del tamaño de las palabras en la arquitectura x86. Aunque es posible que su procesador no esté procesando datos más rápido (su Core 2 está a 2.93 Ghz en ambas instalaciones), sin embargo, está procesando datos de manera más eficiente. Además, como se menciona en los comentarios, le permitirá abordar toda su RAM porque su procesador está leyendo desde su RAM en palabras de 64 bits. De Wikipedia :

Muy a menudo, cuando se refiere al tamaño de palabra de una computadora moderna, también se describe el tamaño del espacio de direcciones en esa computadora. Por ejemplo, una computadora que se dice que es "32 bits" también suele permitir direcciones de memoria de 32 bits; una computadora de 32 bits direccionable por bytes puede direccionar 2 ^ 32 = 4,294,967,296 bytes de memoria, o 4 gibibytes (GB). Esto parece lógico y útil, ya que permite que una dirección de memoria se almacene eficientemente en una palabra.

Para un procesador de 64 bits, esto no se multiplica por 2, aumenta exponencialmente:

Una computadora moderna de 64 bits direccionable por bytes: con el soporte adecuado del sistema operativo puede direccionar 2 ^ 64 bytes (o 16 exbibytes) que a partir de 2011 se considera prácticamente ilimitado.

Este artículo , aunque un poco anticuado, es una lectura muy informativa sobre cómo funciona el procesamiento de 64 bits.

Quiero señalar que esto en realidad no se traduce en un aumento del rendimiento del doble, esto se debe a que el rendimiento real depende de muchas otras variables (velocidad del disco, velocidad del bus, caché del procesador, memoria disponible, etc.). Pero debería ver un aumento en el rendimiento en Windows, ya que se puede cargar más sistema operativo en la memoria y el procesador puede abordarlo de manera más eficiente.

Supercereal
fuente
13
"puede procesar 64 bits (8 bytes) de datos por ciclo de reloj" esto puede sonar razonable, pero en realidad no tiene sentido. Casi ningún cálculo usa 8 bytes para nada útil. En cuanto al tráfico de memoria, la CPU subyacente es la misma, la memoria caché y el tráfico de memoria usan el mismo BUS.
Suma
55
"ya que se puede cargar más sistema operativo en la memoria" nuevamente, no es cierto. Esto sería cierto si el "más del sistema operativo" fuera más de 4 GB. El direccionamiento 64b no ayuda en absoluto mientras se trabaja con datos de menos de 4 GB.
Suma
66
@ Kyle: lee la pregunta nuevamente. El procesador es el mismo que está en la misma máquina. Se trata de la diferencia del comportamiento del sistema operativo en la misma máquina, no la diferencia entre dos máquinas. y para tu información, me gustaría seguir con la discusión. Gritarle a la gente nunca ayudó a nadie. Además, soy un usuario de computadora, y esta es una pregunta de usuario de computadora. Entonces, ¿por qué no debería responder?
Joris Meys
66
No puede responder en un foro público sin una piel lo suficientemente gruesa como para tomar algunos bultos. También debe ser capaz de manejar la naturaleza pedante de los nerds informáticos que seleccionan cada detalle de la pregunta Y la respuesta. No hagas tus golpes, pero asegúrate de pensar bien en las publicaciones. haga las correcciones que demuestre que está equivocado y manténgase firme cuando tenga la razón.
WernerCD
66
La parte acerca de "se puede cargar más memoria del sistema operativo en la memoria y el procesador puede abordarla de manera más eficiente" es una basura total. Mi Win7 usa aproximadamente 500 MB de RAM, que está muy por debajo del límite de 4 GB al que se limitan las CPU de 32 bits. El direccionamiento, en todo caso, es menos eficiente, ya que los punteros tienen el doble de tamaño en la memoria y utilizan más de la valiosa caché de datos. La ganancia de rendimiento real proviene de un conjunto de registros más grande; operar con datos en caché L1 es 3 ciclos de reloj, operar con datos en un registro es 1 ciclo de reloj.
zvrba
2

Creo que la razón más profunda por la que el sistema es más rápido usando un sistema operativo de 64 bits es porque el sistema operativo de 32 bits no es capaz de utilizar toda la RAM del sistema.

El sistema operativo de 32 bits podrá controlar 32 bits, es decir, 4 GB de espacio de direcciones físicas. Este espacio de direcciones incluye memoria del sistema, memoria de video, dispositivos IO, etc. Por lo tanto, cuando tiene 1 GB de memoria RAM de video dedicada, puede restar el primer GB de su memoria RAM disponible. Entonces, los otros dispositivos probablemente restarán otros 200 MB más o menos.

Esto te deja con solo 2.8 GB de RAM para aplicaciones. No mucho en Windows 7;)

El sistema operativo de 64 bits, por otro lado, es capaz de utilizar toda su RAM.

Pete
fuente
"Entonces, cuando tienes 1 GB de ram de video dedicado, puedes restar el primer GB de tu ram disponible". Lamento ser una molestia aquí, pero esto no parece ser cierto. Tenía un sistema WinXP con 4 GB de RAM y 1 GB de GPU VRAM dedicada y tenía 3,6 GB de RAM disponibles para el sistema. La pregunta sobre el espacio de direcciones es bastante complicada: por ejemplo, cada proceso tiene 4 GB de espacio de direcciones virtuales. El controlador debe asignar la RAM de la GPU al espacio de direcciones virtuales para poder acceder a ella, pero no es necesario que el sistema operativo asigne la RAM de la GPU a la RAM física.
Suma
@Suma entonces quizás no toda la VRAM no esté asignada al ram físico. Pero Windows XP, Vista y 7 de 32 bits no podrán usar más de 4 GB de espacio de direcciones físicas. Algunas versiones de Windows de 32 bits del servidor podrán abordar más sin embargo utilizando extensiones de direcciones físicas (aunque puede habilitar extensiones de direcciones físicas en sistemas operativos de escritorio de 32 bits, todavía se negará a abordar más de 4 GB de espacio de direcciones físicas). Por lo tanto, coloque 4 GB de RAM en un Windows 7 de 32 bits, y no podrá usarlo todo. El espacio de direcciones virtuales para los procesos no tiene nada que ver con este límite
Pete
"Pero Windows XP, Vista y 7 de 32 bits no podrán usar más de 4 GB de espacio de direcciones físicas". Sí, es cierto. Para una explicación detallada ver codinghorror.com/blog/2007/03/… . La GPU definitivamente se come parte del espacio de 4 GB. Solo quería corregir la idea errónea común de que el espacio de direcciones consumido es necesario para acceder a la RAM de la GPU, que de hecho no lo es. La descripción en superuser.com/questions/242562/… es correcta a este respecto.
Suma
-1

Instalé 32 bits y 64 bits en dos portátiles Lenovo x100e idénticos por separado. 32 bit tenía 2G ram y 64 bit tenía 4G ram y el 32 bit aún corría más rápido, más suave, más receptivo con mucho menos retraso que 64 bit, que estaba retrasado y lento. La CPU es una CPU de 64 bits. Los mismos controladores instalados y las actualizaciones de Windows realizadas en ambos. Creo que 64 bits es para máquinas de gama alta, no de nivel de entrada, incluso con CPU x64.

Charles
fuente
esto está mal, la "Experiencia del usuario" con la máquina x64 a veces es bastante mala ya que están ejecutando casi el 90% de las aplicaciones x86 en ella.
Francisco Tapia