2009-08-15 74 views
7

Estoy seguro de que todos hemos escuchado los términos de 64 bits y 32 bits lanzados, pero ¿qué significan en realidad?¿Cuáles son las ventajas y desventajas de nivel inferior de 64 bits/32 bits?

Estoy bastante seguro de que tienen que ver con el tamaño de una dirección de memoria. En una máquina de 64 bits, una referencia a un objeto es de 64 bits. Pero quiero profundizar un poco más ...

  1. A menudo se oye la frase "máquina de 64 bits". ¿Qué parte de la computadora está realmente orientada hacia la cantidad de bits? ¿Procesador? ¿Sistema operativo?

  2. ¿Cuál es la ventaja de tener direcciones de memoria más grandes?

Podría agregar más preguntas, pero creo que breve es mejor.

Gracias chicos: D

+1

mismo que http: // stackoverflow.com/questions/132930/32-vs-64-bits-whats-the-big-deal –

+0

Aunque, usted ha declarado sobre la memoria en su pregunta para "profundizar un poco más", todos todavía responden "es la memoria" de todos modos ... – chakrit

+0

No es la memoria. –

Respuesta

15

64 bit se refiere al ancho de los registros, espacio de direccionamiento de memoria, etc. Un beneficio es la capacidad de manejar más de 4GB de memoria.

Wikipedia tiene an article on 64-bit computing con más detalles.

Editar: Las ventajas a más memoria son que el sistema operativo y los programas tienen más espacio de direccionamiento virtual - 16 exabytes (17,2 billones) - y, más importante aún, que se puede agregar más memoria física a un sistema y direccionado, causando menos intercambio de memoria virtual hacia y desde el disco.

La ventaja para los registros y buses de datos más amplios es que es más fácil y rápido mover la misma cantidad de datos. Una operación que requirió dos o más registros ahora se puede hacer con uno.

Por lo tanto, el rendimiento generalmente se incrementa cuando el software se recompila para 64 bits.

A desventaja es que los datos más amplios pueden significar más espacio tomado por los mismos datos. Por ejemplo, almacenar el número 300 requiere nueve bits. Si se almacena en un entero de 32 bits, se desperdician 23 bits. En 64 bits, ese desperdicio se convierte en 55 bits. Por lo tanto, sin necesidad de volver a configurar, una recompilación simple de 64 bits puede producir un software más rápido, pero un poco más inflado.

Editar: También hay páginas de tecnología de 64 bits aquí:

2
  1. registros de la CPU y de memoria de direccionamiento.

  2. El sistema puede hacer referencia (ver) mucha más memoria.

3
  • sistemas de 64 bits pueden abordar directamente significativamente más memoria
  • sistemas de 64 bits pueden procesar datos en fragmentos dos veces tan grande como de 32 bits, lo que ayuda a algunas operaciones van más rápidamente

Para algunos programas, al igual que las suites de automatización de oficinas, 32 bits frente a 64 bits hace una pequeña diferencia observable.

Pero para otras aplicaciones, como bases de datos, procesamiento de gráficos/video o máquinas virtuales de alojamiento, poder alcanzar más memoria física a la vez y poder procesar más información con cada instrucción puede marcar una gran diferencia en el rendimiento.

Tenga en cuenta que hoy en día, muchos chips de 32 bits tienen funciones de extensión de 64 bits, ya que muchas operaciones FPU (matemáticas) o SSMD (vector) se realizan en modo de 64 bits.

Ver 32-bit Vs. 64-bit Systems: What's The Difference? para más.

+0

Las máquinas de 32 bits tienen hardware que puede acceder a más de 4 GB de memoria; cualquier proceso en particular se limitará a acceder a menos de 4 GB "directamente", pero la decisión de no admitir más de 4 GB en Windows de 32 bits es tanto una decisión de marketing como técnica. – supercat

5

La diferencia es exactamente 32 bits ;-)

Se necesitan hardware de 64 bits (procesador) para ejecutar un sistema operativo de 64 bits. Necesita un sistema operativo de 64 bits para ejecutar software de 64 bits. Estas son las dependencias.

  • En un sistema de 32 bits que se limitan a abordar 4 GiByte (2^32) de memoria, en un bit 64 existe un límite teórico de 2^64 byte.
  • 64 software Bit necesita poco más de memoria, sobre todo para los punteros son 8 bytes en lugar de 4
  • en x86_64, 64 ejecutables Bit necesitan más memoria, ya que hay un código de operación adicional para muchas instrucciones, y por lo tanto puede funcionar más lento
  • en x86_64, 64 software de bits puede utilizar más registros y tiene el potencial para correr más rápido
+1

quiere decir "... en un bit de 64 bits hay ..." en el primer punto. – Thomas

+0

Gracias por señalar el error tipográfico. – hirschhornsalz

+0

Su respuesta es, por supuesto, correcta, pero solo un pequeño comentario. Intel tiene Extensión de dirección física (PAE) que tiene líneas de dirección adicionales que permiten direcciones de 36 bits, lo que a través de una reorganización de jerarquías de tabla de páginas le proporciona 64 GB de espacio de memoria virtual. Es por eso que puede tratar más de 4 GB de RAM en la mayoría de los procesadores Intel de 32 bits (después de Pentium Pro). – alps123

-3

Exactamente el de 64 bits o de 32 bits simplemente referencias a la anchura del bus principal.

+3

No. Tonterías. Hay numerosos casos en que esto no es cierto. El 68008 o el 8088, que tenían un bus de 8 bits y arcos de 32 o 16 bits, o el viejo pentium/II/III, o Athlon/XP que tienen un bus principal de 64 bits y una arquitectura de 32 bits. – hirschhornsalz

+0

ahh ... gracias drhirsch, trajiste recuerdos. :) –

2

Volvamos a lo básico.

El 99% de las computadoras actualmente se basan en lo que se conoce como Von Neumann architecture.En esencia, el equipo está en un ciclo constante de:

  1. Obtención de un comando desde la memoria RAM
  2. La ejecución del comando de la CPU

alt text http://upload.wikimedia.org/wikipedia/commons/1/1c/Von_Neumann_architecture.png

Cuando se hace referencia a 32/64-bit sistema (o cualquier otro tamaño de bit), esencialmente usted está hablando de la arquitectura y la implementación de la computadora:

  • tamaño del espacio de memoria (RAM)
  • tamaño de los registros de la CPU
  • tamaño del bus (es decir entre CPU, RAM, E/S, etc.)

Si tiene un sistema de 64 bits, tiene un espacio de direcciones de 2^64. Esta es la razón por la que el sistema de 32 bits no puede tener más de 4 GB de RAM. ¿Cómo se puede abordar un espacio de memoria que es mayor que 2^32?

En cuanto a las diferencias de rendimiento, no hay una respuesta clara (al igual que no hay una respuesta clara si la arquitectura CISC o RISC es mejor). Depende mucho de las aplicaciones que estás usando.

En resumen: una arquitectura de 64 bits es simplemente una forma diferente de construir una computadora. No significa que sea mejor o peor o que haga las cosas de manera diferente (en un nivel bajo, cada computadora está ejecutando fetch-execute). Es simplemente una forma diferente de implementar una computadora.

2

Creo que la mejor respuesta sería una comparación en ensamblador x64 bit x86

Cuando el programa bits x32 registra una variable, por ejemplo, un número entero (5), el código es equivalente a esto:

push 5 

para entender mejor las cosas, 'empuje X' es un acceso directo a:

sub esp,4 //substracts esp with 4(4*8=32 bits.That's the size of a pointer in x32 executables) in order to make space for our variable 
mov [esp],X //moves variable in @esp 

Esos son registeres 32 bits (4 bytes de longitud), que es del tamaño de un puntero en cualquier programación de 32 bits idioma.

En el código de 64 bits, sin embargo, el tamaño es dos veces más grande y también lo son los registros. Nuestro registro ESP existe en x64 ejecutables, pero no es ampliamente utilizado como en ejecutables x32.

En su lugar, todos los registros obtienen una "R" delante de su nombre (EAX se convierte en RAX, ESP se convierte en RSP, EDX se convierte en RDX, etc.).

Así que nuestro código ejecutable en x64 no será diferente, excepto el acceso directo para 'empujar X' será

sub esp,8 
mov [rsp],X 

RSP tiene el doble del tamaño del ESP - 64 bits, 8 bytes.

La conclusión es que los ejecutables de x64 bit utilizan más memoria que los ejecutables de x32 bit.

Cuestiones relacionadas