Pregunta

Soy nuevo en programación y no tengo experiencia en informática (sin título formal).Principalmente programo winforms usando C#.

Estoy confundido acerca de 32 bits y 64 bits...Quiero decir, he oído hablar de sistemas operativos de 32 bits, procesadores de 32 bits y en función de los cuales un programa puede tener la máxima memoria.Cómo afecta la velocidad de un programa.Hay muchas más preguntas que me vienen a la mente.

Intenté leer algunos libros sobre arquitectura y organización de computadoras.Pero o soy demasiado tonto para entender lo que está escrito allí o los escritores asumen que el lector tiene experiencia en informática.

¿Alguien puede explicarme estas cosas en un inglés sencillo o indicarme algo que haga eso?

EDITAR: He leído cosas como En modo de 32 bits, pueden acceder hasta 4GB de memoria;en modo de 64 bits, pueden acceder a mucho más... Quiero saber POR QUÉ de todas esas cosas.

GENEROSIDAD:Las respuestas a continuación son realmente buenas... especialmente una de Martin.Pero estoy viendo una explicación detallada, pero en un inglés sencillo y sencillo.

¿Fue útil?

Solución

En realidad, todo se reduce a los cables.

En los circuitos digitales, solamente de 0 y 1 de (por lo general de bajo voltaje y alto voltaje) pueden transmitirse de un elemento (CPU) a otro elemento (chip de memoria). Si tengo solamente 1 hilo, sólo puedo enviar un 1 o un 0 sobre el alambre por ciclo de reloj. Esto significa que sólo puedo abordar 2 bytes (suponiendo direccionamiento de byte, y que las direcciones enteras se transmiten en tan sólo 1 ciclo de la velocidad!).

Si tengo 2 hilos, puedo Dirección 4 bytes. Porque puedo enviar: (0, 0), (0, 1), (1, 0), o (1, 1) sobre los dos cables. Así que básicamente es 2 a la potencia de # de cables.

Así que si tengo 32 cables, puedo abordar 4 GB, y si tengo 64 cables, puedo abordar mucho más.

Hay otros trucos que los ingenieros pueden hacer para hacer frente a un espacio de direcciones más grande que los cables permiten. P.ej. dividir la dirección en dos partes y el envío de una mitad en el primer ciclo y la segunda mitad en el siguiente ciclo. Pero eso significa que su interfaz de memoria será la mitad de rápido.

Editado en mis comentarios aquí (sin editar);) Y lo que es un wiki si alguien tiene algo interesante añadir, así

.

Como han mencionado otros comentarios, 2 ^ 32 (2 a la potencia de 32) = 4294967296, que es 4 GB. Y 2 ^ 64 es 18,446,744,073,709,551,616. Para excavar en más (y es probable que lea esto en Hennesey y Patterson) procesadores contiene registros que utiliza como "espacio cero" para almacenar los resultados de sus cálculos. Una CPU sólo sabe hacer aritmética simple y sabe cómo mover datos. Naturalmente, el tamaño de estos registros son de la misma anchura en bits como los "# -bits" de la arquitectura que es, así registros de una CPU de 32 bits será de 32 bits de ancho, y los registros de 64 bits de la CPU se 64-bits amplio.

No habrá excepciones a esta cuando se trata de coma flotante (para manejar doble precisión) u otras instrucciones SIMD (single-instrucción, múltiples comandos de datos). Las cargas de CPU y guarda los datos hacia y desde la memoria principal (RAM). Puesto que la CPU también utiliza estos registros para calcular las direcciones de memoria (físicos y virtuales), es la cantidad de memoria que se puede tratar también la misma que la anchura de sus registros. Hay algunas CPUs que maneja el cálculo de direcciones con registros extendidos especiales, pero los que yo llamaría "después de pensamientos" añadieron después los ingenieros dan cuenta de que necesitaban.

En el momento 64-bits es bastante para hacer frente a la memoria física real. La mayoría de las CPU de 64 bits se omita un buen número de cables cuando se trata de el cableado de la CPU a la memoria debido a la practicidad. No tiene sentido utilizar hasta preciosa inmobiliario placa base para pasar los cables que siempre va a tener 0 de. Por no mencionar el fin de tener la cantidad máxima de memoria RAM DIMM con la densidad de hoy requeriría 4 mil millones de ranuras DIMM:)

Aparte del aumento de la cantidad de memoria, procesadores de 64 bits ofrecen cálculo más rápido para los números entero mayor que 2 ^ 32. Anteriormente programadores (o compiladores, que también es programada por programadores;) tendrían que simular que tiene un registro de 64 bits mediante la adopción de dos registros de 32 bits y gastos de cualquier situación de desbordamiento. Pero en las CPU de 64 bits sería manejado por la propia CPU.

El inconveniente es que una CPU de 64 bits (con todo igual) sería consumir más energía que un 32-bit CPU sólo se debe a (más o menos) dos veces la cantidad de circuitería necesaria. Sin embargo, en la realidad nunca se tiene la misma comparación porque los nuevos CPUs serán fabricados en procesos de silicio nuevos que tienen menos fugas de energía, le permiten incluir más circuitos en el mismo tamaño de la pastilla, etc. Pero las arquitecturas de 64 bits consumirían el doble de memoria. Lo que una vez fue considerado "feo" de longitud variable de la instrucción de x 86 es en realidad una ventaja ahora en comparación con las arquitecturas que utiliza un tamaño fijo de instrucciones.

Otros consejos

Intentemos responder a esta pregunta mirando gente versus ordenadores;Con suerte, esto le arrojará algo de luz sobre las cosas:

Cosas a tener en cuenta

  • Por sorprendentes que sean, las computadoras son muy, muy tontas.

Memoria

  • Las personas tienen memoria (con la excepción, posiblemente, de los maridos y los políticos). Las personas almacenan información en su memoria para su uso posterior.
    • Con una pregunta (por ejemplo, "¿Cuál es su número de teléfono?"), una persona puede recuperar información para dar una respuesta (por ejemplo, "867-5309")
  • Todas las computadoras modernas tienen memoria y almacenan información en ella para su uso posterior.
    • Como las computadoras son tontas, sólo se les puede hacer una pregunta muy específica para recuperar información:"¿Cuál es el valor en X en tu memoria?"
      • En la pregunta anterior, X se conoce como un DIRECCIÓN, que también se puede llamar puntero.

Entonces aquí tenemos una diferencia fundamental entre personas y computadoras:Para recuperar información de la memoria, las computadoras necesitan recibir una DIRECCIÓN, mientras que la gente no.(Bueno, en cierto sentido, se podría decir que "tu número de teléfono" es una dirección porque brinda información diferente a "tu cumpleaños", pero esa es otra conversación).

Números

  • La gente usa el sistema numérico decimal.Eso significa que por cada dígito de un número decimal, el dígito puede ser 0, 1, 2, 3, 4, 5, 6, 7, 8 o 9.La gente tiene diez opciones por dígito.
  • Todas las computadoras modernas usan el sistema de numeración binario.Eso significa que por cada dígito de un número binario, el dígito sólo puede ser 1 o 0.Las computadoras tienen dos opciones por dígito.
    • En la jerga informática, un solo dígito binario se llama poco, corto para bexcavación inariaél.

Direcciones

  • Cada dirección en una computadora es un número binario.
  • Cada dirección en una computadora tiene un número máximo de dígitos (o bits) que puede tener.Esto se debe principalmente a que el hardware de la computadora es inflexible (también conocido como fijado) y necesita saber de antemano que una dirección tendrá una duración limitada.
  • Términos como "32 bits" y "64 bits" se refieren a la dirección más larga para la cual una computadora puede almacenar y recuperar información.En inglés, "32 bits" en este sentido significa "Esta computadora espera que las instrucciones sobre su memoria tengan direcciones de no más de 32 dígitos binarios".
    • Como puede imaginar, cuantos más bits pueda manejar una computadora, más tiempo podrá buscar la dirección y, por lo tanto, más memoria podrá administrar al mismo tiempo.

32 bits v.Direccionamiento de 64 bits

  • Para un número inflexible (fijo) de dígitos (p. ej.2 dígitos decimales) los posibles números que puedes representar se llaman rango (p.ej.00 a 99, o 100 números únicos).Agregar un dígito decimal adicional multiplica el rango por 10 (p. ej.3 dígitos decimales -> 000 a 999, o 1000 números únicos).
  • Esto también se aplica a las computadoras, pero debido a que son binario máquinas en lugar de decimal máquinas, agregando un dígito binario adicional (poco) sólo aumenta el rango en un factor de 2.

    Rangos de direccionamiento:
    • El direccionamiento de 1 bit le permite hablar de 2 direcciones únicas (0 y 1).
    • El direccionamiento de 2 bits le permite hablar de 4 direcciones únicas (00, 01, 10 y 11).
    • El direccionamiento de 3 bits le permite hablar de 8 direcciones únicas (000, 001, 010, 011, 100, 101, 110 y 111).
    • y después de mucho tiempo... El direccionamiento de 32 bits le permite hablar de 4.294.967.296 direcciones únicas.
    • y después de un incluso más largo mientras... El direccionamiento de 64 bits le permite hablar de 18.446.744.073.709.551.616 direcciones únicas.Eso es un LOTE de memoria!

Trascendencia

Lo que todo esto significa es que una computadora de 64 bits puede almacenar y recuperar mucho más información que una computadora de 32 bits.Para la mayoría de los usuarios, esto realmente no significa mucho porque cosas como navegar por la web, consultar el correo electrónico y jugar al solitario funcionan cómodamente dentro de los límites del direccionamiento de 32 bits.Donde realmente brillará el beneficio de 64 bits es en áreas donde hay muchos datos que la computadora tendrá que procesar.El procesamiento de señales digitales, la fotografía de gigapíxeles y los juegos 3D avanzados son áreas donde sus enormes cantidades de procesamiento de datos verían un gran impulso en un entorno de 64 bits.

Muchos procesadores modernos pueden funcionar en dos modos: modo de 32 bits, y el modo de 64 bits. En el modo de 32 bits, que pueden acceder hasta 4 GB de memoria; en el modo de 64 bits, pueden acceder mucho más. procesadores antiguos sólo soportan el modo de 32 bits.

Los sistemas operativos eligieron utilizar los procesadores en uno de estos modos: en el momento de la instalación, se hace una elección de si para operar el procesador en el modo de 32 bits o en el modo de 64 bits. A pesar de que el procesador puede seguir funcionando en el modo de 64 bits, el cambio de 32 bits a 64 bits requeriría una reinstalación del sistema. Los sistemas más antiguos sólo admiten el modo de 32 bits.

Las aplicaciones también pueden ser escritos en (o compilados para) el modo de 32 bits o 64 bits. Compatibilidad aquí es más complicado, ya que el procesador, cuando se ejecuta en modo de 64 bits, aún puede soportar aplicaciones de 32 bits como una función de emulación. Así que en un sistema operativo de 64 bits, puede ejecutar cualquiera de las aplicaciones de 32 bits o aplicaciones de 64 bits. En un sistema operativo de 32 bits, puede ejecutar sólo las aplicaciones de 32 bits.

Una vez más, eligiendo el tamaño es principalmente una cuestión de cantidad de memoria principal al que desea acceder. aplicaciones de 32 bits a menudo se limitan a 2 GB en muchos sistemas, ya que el sistema necesita un poco de espacio de direcciones para sí mismo.

Desde el punto de vista del rendimiento (velocidad), no hay ninguna diferencia significativa. aplicaciones de 64 bits pueden ser poco más lento debido a que utilizan punteros de 64 bits, por lo que necesitan acceso a más memoria para una operación determinada. Al mismo tiempo, también pueden ser un poco más rápido, ya que se pueden realizar operaciones con enteros de 64 bits como una instrucción, mientras que los procesadores de 32 bits necesitan emular ellos con múltiples instrucciones. Sin embargo, esas operaciones con enteros de 64 bits son bastante infrecuentes.

Uno también puede preguntarse cuál es el costo de funcionamiento de una aplicación de 32 bits en un procesador de 64 bits: en los procesadores AMD64 y Intel64, este modo de emulación es principalmente en el hardware, lo que no hay pérdida de rendimiento real sobre la ejecución del 32 aplicación de bits de forma nativa. Esto es significativamente diferente en Itanium, donde 32 bits aplicaciones (x86) se emulan muy mal.

Déjame que te cuente la historia de Binville, un pequeño pueblo en el medio de la nada. Binville tenía un camino que conduce a ella. Cada persona, ya sea procedente de Binville o salir tenía que conducir en esta carretera. Pero a medida que se acercó a la ciudad, había un tenedor. Usted podría ir a la izquierda o a la derecha.

De hecho, todos los caminos tenían un tenedor en ella, a excepción de las carreteras que conducen a los propios hogares. Esos caminos simplemente terminaron en la casa. Ninguno de los caminos tenían nombres; que no necesitaban nombres gracias a un esquema de direccionamiento ingenioso creado por la Comisión de Planificación Binville. Aquí está un mapa de Binville, que muestra las carreteras y las casas:

              ------- []  00
             /
       ------
      /      \
     /        ------- []  01
-----
     \        ------- []  10
      \      /
       ------
             \
              ------- []  11

Como se puede ver, cada casa tiene una dirección y dos dígitos. Esa dirección es suficiente para a) identificar de forma única cada casa (no hay repeticiones) yb) le dirá cómo llegar allí. Es fácil moverse por la ciudad, que se ve. Cada tenedor está marcado con un cero o uno, que la Comisión de Planificación llama a la intersección Binville trazador, o poco para abreviar. Al acercarse a la primera tenedor, mira el primer bit de la dirección. Si se trata de un cero, ir a la izquierda; si es un uno, ir a la derecha. Entonces mira en el segundo dígito cuando se llega a la segunda tenedor, ir a la izquierda oa la derecha según el caso.

Digamos que usted quiere visitar a su amigo que vive en Binville. Dice que vive en la casa 10. Al llegar al primer tenedor de Binville, ir a la derecha (1). Luego, en el segundo tenedor, ir a la izquierda (0). Usted está allí!

Binville existía como esto durante varios años pero la palabra comenzó a moverse en torno a su entorno idílico, un gran sistema de parques, y el cuidado de la salud generosa. (Después de todo, si usted no tiene que gastar dinero en las señales de tráfico, puede usarlo en cosas mejores.) Pero había un problema. Con sólo dos trozos, el esquema de direccionamiento se limita a cuatro casas!

Así que la Comisión de Planificación juntaron sus cabezas y se acercó con un plan: añadirían un poco para cada dirección, lo que duplica el número de casas. Para poner en práctica el plan, que construirían un nuevo tenedor en el borde de la ciudad y todo el mundo obtendrían nuevas direcciones. Aquí está el nuevo mapa, que muestra el nuevo tenedor que conduce a la ciudad y la parte nueva de Binville:

                     ------- []  000
                    /
              ------
             /      \
            /        ------- []  001
       -----                            Old Binville
      /     \        ------- []  010
     /       \      /
    /         ------
   /                \
  /                  ------- []  011
--
  \                  -------     100
   \                /
    \         ------
     \       /      \
      \     /        ------- []  101
       -----                            New Binville (some homes not built yet)
            \        -------     110
             \      /
              ------
                    \
                     -------     111

¿Notó que todos en la parte original del Binville simplemente añade un cero a la parte delantera de su dirección? El nuevo bit representa la nueva intersección que fue construido. Cuando el número de bits se incrementa en uno, el número de direcciones se duplica. Los ciudadanos siempre sabían que el tamaño máximo de su ciudad: todo lo que tenían que hacer era calcular el valor de dos elevado a la potencia del número de bits. Con tres bits, podrían tener 2 3 = 8 casas.

Unos años pasaron y Binville fue una vez más llenos de capacidad. Más gente quería moverse en, por lo que se añadió otro bit (junto con la intersección requerida), duplicando el tamaño de la ciudad a dieciséis casas. A continuación, otro poco, y otro, y otro ... direcciones de Binville fueron pronto en dieciséis bits, capaz de alojar hasta 2 16 (16.384) casas, pero no fue suficiente. Las personas siguieron viniendo y viniendo!

Así que la Comisión de Planificación decidió resolver el problema de una vez por todas: saltarían todo el camino hasta treinta y dos bits. Con direcciones suficientes para más de cuatro mil millones de hogares (2 32 ), sin duda eso sería suficiente!

Y fue ... por unos veinticinco años, cuando Binville ya no era una pequeña ciudad en el medio de la nada. Ahora era una metrópoli importante. De hecho, se estaba haciendo a ser tan grande como toda una nación con mil millones de habitantes. Pero los parques eran todavía muy bien y todo el mundo tuvo gran cuidado de la salud, por lo que la población siguió creciendo.

Ante la creciente población, la Comisión de Planificación, una vez más ponen sus cabezas juntas y propuso otra expansión de la ciudad. Esta vez se usaría 64 bits. ¿Sabe usted cuántos hogares podría caber dentro de los límites de la ciudad Binville ahora? Así es: 18, 446.744.073.709.551.616. Ese número es tan grande, podríamos poblamos aproximadamente dos mil millones de Tierras y dar a cada uno su propia dirección.

Uso de 64 bits no era una panacea para todos sus problemas de direccionamiento. Las direcciones tienen el doble de espacio para escribir como lo hacían las antiguas direcciones de 32 bits. Peor aún, algunos ciudadanos aún no han actualizado sus direcciones para utilizar el nuevo formato de 64 bits, por lo que se vieron obligados a una sección de paredes-off de la ciudad reservado específicamente para los que siguen el uso de direcciones de 32 bits. Pero que estaba bien: las personas que utilizan 32 bits tenían acceso a más que suficiente de la ciudad para que se adapte a sus necesidades. Ellos no sienten la necesidad de cambiar el momento.

¿Los 64 bits será suficiente? Quién sabe en este momento, pero los ciudadanos de Binville están esperando el anuncio de direcciones de 128 bits ...

La respuesta de Martin es sobre todo correcta y detallada.

pensé que sólo mencionar que todos los límites de memoria son por aplicación de la memoria virtual límites, no los límites de la memoria física real en el ordenador. De hecho, es posible trabajar con más de 4 GB de memoria en una sola aplicación, incluso en sistemas de 32 bits, sólo se requiere más trabajo, ya que no puede ser todos accesibles usando punteros a la vez. enlace de texto

Otra cosa que no fue mencionado es que la diferencia entre el procesador x86 y x86-64 es tradicional, no sólo en el tamaño del puntero, sino también en el conjunto de instrucciones. Mientras que los punteros son más grandes y consumen más memoria (8 bytes en lugar de 4) que es compensada por conjunto de registros más grande (15 registros de propósito general en lugar de 8, IIRC), por lo que el rendimiento en realidad puede ser mejor para el código que hace el trabajo computacional.

La respuesta de Martin es excelente. Sólo para añadir algunos puntos adicionales ... ya que lo mencionas .NET, debe tener en cuenta que el CLI / JIT tiene algunas diferencias entre x86 y x64, con diferentes optimizaciones (llamada final, por ejemplo), y un comportamiento diferente sutil de avanzada cosas como volatile. Todo esto puede tener un impacto en su código.

Además, no todo el código funciona en x64. Cualquier cosa que utiliza DirectX o ciertas características de COM pueden tener dificultades. No es realmente un rendimiento característica, pero importante saber.

(He quitado "DirectX" - que podría estar hablando basura allí ... sino simplemente: Es necesario comprobar que todo lo que dependes es estable en la plataforma de destino)

Piense en una memoria de computadoras genérica como una tarjeta de bingo masiva con mil millones de plazas. Para hacer frente a cualquier cuadrado individuo en la placa hay un esquema para etiquetar cada fila y columna B-5, I-12, O-52..etc.

Si hay suficientes plazas en la tarjeta con el tiempo se queda sin cartas por lo que tendrá que empezar a reutilizar más letras y escribir los números más grandes para seguir siendo capaz de abordar de forma única cada cuadrado.

Antes de saber que el locutor está soltando molesto enormes números y combinaciones de letras para hacerle saber qué casilla para marcar en su tarjeta cuadrada de 10 mil millones. BAZC500000, IAAA12000000, OAAAAAA523111221

El número de bits de la computadora especifica el límite de la complejidad de las letras y números para hacer frente a cualquier casilla específica.

32 bits significa que si la tarjeta es más grande que 2 ^ 32 plazas de la computadora no tiene suficientes cables y Transisters para que pueda abordar de forma única físicamente cualquier casilla específica necesaria para leer un valor o escribir un nuevo valor a la especificada ubicación de memoria.

equipos de 64 bits pueden abordar de forma individual una masiva 2 ^ 64 plazas .. pero para hacerlo cada cuadrado necesita mucho más letras y números para asegurarse de que cada cuadro tiene su propia dirección única. Esta es la razón por equipos de 64 bits necesitan más memoria.

Otros ejemplos comunes de los límites de direccionamiento son los números de teléfono locales. Son ususally 7 dígitos 111-2222 o reformateado como un número 1112222 .. lo que pasa cuando hay más de 9.999.999 personas que quieren sus propios números telefónico donde? Agrega códigos de área y códigos de país y el número de teléfono va de 7 dígitos a 10 a 11 ocupar más espacio.

Si está familiarizado con la escasez inminente IPv4 es el mismo problema .. direcciones IPv4 son de 32 bits significa que hay solamente 2 ^ 32 (~ 4 mil millones) IP única aborda posible y hay muchas más personas que el que vivo hoy .

No es por encima en todos los esquemas que he mencionado (ordenadores, teléfonos, direcciones IPv4), donde algunas partes se reservan para fines de organización por lo que el espacio útil es mucho menor.

La promesa de rendimiento para el mundo de 64 bits es que en lugar de enviar 4 bytes a la vez (ABCD) un equipo de 64 bits puede enviar 8 bytes a la vez (ABCDEFGH) por lo que el alfabeto es transferida entre diferentes áreas de la memoria hasta dos veces más rápido que un equipo de 32 bits. También es ventaja para algunas aplicaciones que acaba de correr más rápido cuando tienen más memoria que pueden utilizar.

En el mundo real los procesadores de escritorio de 64 bits de Intel y otros no son realmente cierto procesadores de 64 bits y todavía se limitan a 32-bits para varios tipos de operaciones por lo que en el mundo real el rendimiento entre 32 y 64 bits aplicaciones -bit es marginal. el modo de 64 bits le da más registros de hardware para trabajar con la cual mejora el rendimiento, pero adressing más memoria en un procesador de 64 bits "falso" también puede perjudicar el rendimiento en algunas áreas por lo que su ususally un lavado. En el futuro vamos a ver más mejoras en el rendimiento cuando los procesadores de escritorio se vuelven totalmente de 64 bits.

No creo que he visto gran parte de la palabra 'registro' en las respuestas anteriores. Una computadora digital es un grupo de registros, con la lógica de la aritmética y la memoria de datos y almacenar programas.

Pero primero ... las computadoras digitales utilizan una representación binaria de los números porque los dígitos binarios ( 'bits') 0 y 1 son fácilmente representados por los dos estados (encendido / apagado) de un interruptor. Las primeras computadoras utilizan interruptores electromecánicos; computadoras modernas utilizan transistores porque son más pequeños y rápidos. Mucho más pequeño, y más más rápido.

Dentro de la CPU, los interruptores están agrupados juntos en registros de una longitud finita, y las operaciones se realizan típicamente en un registro enteras: Por ejemplo, añadir este registro a eso, y así sucesivamente. Como era de esperar, una CPU de 32 bits tiene registros de 32 bits de longitud. Estoy simplificando aquí, pero tengan paciencia conmigo.

Tiene sentido para organizar la memoria del ordenador como una serie de ubicaciones '', cada uno con el mismo número de bits como un registro de la CPU: por ejemplo, la carga de este registro de esa localización de memoria. En realidad, si pensamos en la memoria como bytes , eso es sólo una fracción conveniente de un registro y Migh cargar un registro de una serie de posiciones de memoria (1, 2, 4, 8).

Como transistores se hacen más pequeños, la lógica adicional para la aritmética más complejo puede ser implementado en el espacio limitado de un chip de ordenador. CPU de bienes raíces es siempre en un premio.

Pero con mejoras en la fabricación de chips, más transistores se pueden hacer de forma fiable en los chips sólo ligeramente más grandes. Los registros pueden ser más largas y los caminos entre ellos puede ser más amplia.

Cuando los registros que mantienen las direcciones de las posiciones de memoria son más largos, que abordan las memorias y los datos más grandes pueden ser manipulados en trozos grandes. En combinación con la lógica aritmética más complejo, las cosas se hacen más rápido.

Y no es eso lo que estamos todos después?

¿Por qué explicar el modo de 32 bits sólo puede acceder a 4 GB de RAM:

espacio máximo de memoria accesible = 2 n bytes, donde n es la longitud de palabra de la arquitectura. Así que en una arquitectura de 32 bits, el máximo espacio de memoria accesible es 2 32 = 4294967296 = 4 GB de RAM.

arquitectura de 64 bits sería capaz de acceder 2 64 = mucha memoria.

Sólo notado comentarios Tchens va sobre esto. De todas formas, sin un fondo CS, yes organización informática y arquitectura libros van a ser difíciles de entender en el mejor.

  • El procesador utiliza la base-2 a los números de las tiendas. Base 2 probablemente fue elegido porque es la "simple" de todas las bases:. Por ejemplo la tabla de multiplicar en base 2 tiene sólo 4 células mientras que la base tabla de multiplicar "10" tiene un 100 células
  • Antes de 2003, los procesadores de PC más comunes fueron sólo "de 32 bits compatible".
    • Esto significa que las operaciones numéricas nativos del procesador son para los números de 32 bits.
    • Usted todavía puede hacer operaciones numéricas para un número mayor, pero los que tendría que ser realizada por los programas ejecutados por el procesador, y no ser las "acciones primitivas" (comandos en lenguaje de máquina) soportados por el procesador como los de 32 -bit-enteros (en el momento)
    • 32 bits se eligieron porque los ingenieros de CPU son fond de potencias de 2, y 16 bits no eran lo suficientemente
  • ¿Por qué no fueron suficientes 16 bits? Con 16 bits se puede representar números enteros en el rango de 0-65535
    • 65535 = 1111111111111111 en binario (= 2 0 2 1 2 2 ... + 2 15 = 2 16 -1)
    • 65535 no es suficiente porque, por ejemplo, un software de gestión del hospital tiene que ser capaz de contar más de 65.535 pacientes
    • Por lo general, la gente considera el tamaño de la memoria del ordenador cuando se habla de lo grande que sus números enteros deben ser. 65535 definitivamente no es suficiente. Las computadoras tienen forma más memoria RAM que eso, y no importa si se cuenta en "bytes" o bits
  • 32 bits se consideró suficiente por un tiempo. En 2003 AMD introdujo la primera 64 bits compatible "x86" procesador . Intel poco después.
  • En realidad 16 bits se consideró suficiente un hace mucho tiempo .
  • Es una práctica común para una gran cantidad de hardware y software para ser compatible con versiones anteriores. En este caso significa que la CPU de 64 bits compatible también se puede ejecutar todos los software de los procesadores de 32 bits compatible puede.
    • La compatibilidad hacia atrás se esforzó para que una estrategia de negocio. Más usuarios querrán actualizar al procesador mejor si también puede hacer todo lo anterior pudiera.
    • En las CPUs compatibilidad hacia atrás significa que las nuevas acciones los soportes de CPU se agregan al lenguaje de máquina anterior. Por ejemplo, el lenguaje de máquina anterior puede tenido alguna especificación como "todos los códigos de operación a partir de 1111 están reservados para uso futuro"
    • En teoría sería que no había sido necesario este tipo de CPU compatibilidad con versiones anteriores como todo el software podría simplemente haber vuelto a compilar a la máquina-lenguaje compatible nuevo y no. Sin embargo ese no es el caso debido a las estrategias corporativas y sistemas políticos o económicos. En un mundo utópico "de código abierto", la compatibilidad de lenguajes de máquina probablemente no sería una preocupación.
  • La compatibilidad con versiones anteriores de x86-64 (lenguaje de máquina las CPUs comunes de 64 bits) se presenta en forma de un 'modo de compatibilidad'. Esto significa que cualquier programa que desee hacer uso de las nuevas capacidades de la CPU tiene que notificar a la CPU (a través del sistema operativo) que debería funcionar en "modo de 64 bits". Y entonces se podría utilizar para grandes capacidades de la nueva CPU de 64 bits.
  • Por lo tanto, un programa para utilizar las capacidades de 64 bits de la CPU: La CPU, el sistema operativo y el programa, todos tienen a "soporte de 64 bits de"
  • .
  • 64 bits es suficiente para dar a cada persona en el mundo varios números únicos. Es probable que sea lo suficientemente grande para la mayoría de los esfuerzos computacionales actuales. Es probable que sea poco probable que los futuros CPUs se desplazarán más de 128 bits. Pero si lo hacen, eso es sin duda lo suficiente por todo lo que puedo imaginar, y por lo tanto no será necesaria una transición de 256 bits.

Espero que esto ayude.

Vale la pena señalar que algunas aplicaciones (por ejemplo multimedia. Codificación / decodificación y reproducción) ganancia significativa (2x) mejorar el rendimiento cuando se escribe para aprovechar al máximo de 64 bits.

Ver 32 bits vs. puntos de referencia de 64 bits para y href="http://www.extremetech.com/article2/0,2845,2280808,00.asp" rel="nofollow noreferrer"> Windows Vista

En persona no CS. 64 bits va a funcionar mejor para los cálculos (todo tipo de) que será bueno también que le permitirá tener más memoria RAM.

Además, si usted ha limitado la memoria RAM (en VPS, por ejemplo, o un servidor dedicado a pequeña RAM) -. Elija 32 bits, los servicios no va a comer menos RAM

Esta es una explicación muy simple, dado que todo lo anterior es bastante detallada.

32-bit se refiere a los registros. Los registros son lugares para almacenar los datos, y todos los programas funcionan mediante la manipulación de estas cosas. Asamblea opera directamente sobre ellos (y por lo tanto por qué las personas son a menudo muy contentos de programar en ensamblador).

32-bit significa el conjunto básico de registros puede contener 32 bits ofinformation. medios de 64 bits, como era de esperar, 64 bits de información.

¿Por qué puede ser esto que los programas más rápido? Porque se puede hacer operaciones más grandes más rápido. Sólo hará que ciertos tipos de programas más rápido, por cierto. Juegos, por lo general, pueden tomar gran ventaja de optimizar por procesador , debido a sus operaciones matemáticas-pesado (y por lo tanto el uso registrarse).

Pero con gracia, como se ha mencionado Tchen, su son muchas otras 'cosas' que le permiten realizar las operaciones más grandes de todos modos. SSE, SSE2, etc, tendrá registros de 64 bits y registros de 128 bits, incluso en un sistema poco '32'.

El aumento de la capacidad para hacer frente a la memoria habla directamente al aumento de tamaño básico de registro, basado en (imagino) sistema de memoria de direccionamiento específico de Windows'.

Espero que ayude un poco. otros carteles son mucho más precisos que yo, estoy tratando de explicar de manera muy sencilla (que ayuda a que sé muy poco:)

Tengo una maravillosa respuesta a esta pregunta, pero no sirve para todos dentro de este bloque respuesta .... La respuesta simple es que para su programa para conseguir un byte de memoria, se necesita una dirección. En CPUs de 32 bits, la dirección de memoria de cada byte se almacena en un entero de 32 bits (sin signo), que como un valor máximo de 4 GB. Cuando se utiliza un procesador de 64 bits, la dirección de memoria es un entero de 64 bits, lo que le da aproximadamente 1,84467441 × 10 ^ 19 direcciones de memoria posibles. Esto realmente debería ser suficiente si usted es nuevo en la programación. Que realmente debería concentrarse más en aprender a programar, que aproximadamente el funcionamiento interno de su procesador, y por qué no se puede acceder a más de 4 GB de memoria RAM de la CPU de 32 bits.

Respuesta simple de explicar rango de memoria direccionable con procesadores de 32 bits es:

Vamos a suponer Usted tiene sólo 3 números de dos dígitos permitidos para construir número máximo de modo que u puede ir hasta es 999. Rango de números es (0 - 999). Usted tiene sólo 1.000 números para su uso.

Pero si u se les permite tener 6 números de dos dígitos, entonces el número máximo que se puede construir es 999999. gama Ahora es (0 - 999999). Así que ahora u tiene 1 millón de números con su uso.

Del mismo modo más bits que se les permite tener en un procesador, mayor conjunto de direcciones (números en el ejemplo anterior) se puede construir y eventualmente utilizar para almacenar datos, etc ..

Cualquier cosa más simple que esto sería interesante leer!

-AD.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top