x64 sistemas sistema procesador pasar operativos operativo nada formatear descargar como cambiar arquitectura actualizar 64bit 32-bit 32bit-64bit processor

64bit - sistemas - Procesador, sistema operativo: 32 bits, 64 bits



sistema operativo de 32 bits procesador x64 (15)

Déjame contarte la historia de Binville, una pequeña ciudad en medio de la nada. Binville tenía un camino que llevaba a él. Cada persona que venía o salía de Binville tenía que conducir en esta carretera. Pero cuando te acercabas a la ciudad, había un tenedor. Puedes ir a la izquierda o ir a la derecha.

De hecho, todas las carreteras tenían una bifurcación, excepto las que conducían a las casas. Esos caminos simplemente terminaron en la casa. Ninguno de los caminos tenía nombres; no necesitaban nombres gracias a un ingenioso esquema de direcciones creado por la Comisión de Planificación de Binville. Aquí hay un mapa de Binville, que muestra los caminos y las casas:

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

Como puede ver, cada casa tiene una dirección de dos dígitos. Esa dirección por sí sola es suficiente para a) identificar de manera única cada casa (no hay repeticiones) yb) decirle cómo llegar allí. Es fácil moverse por la ciudad, ya ves. Cada bifurcación está etiquetada con un cero o uno, que la Comisión de Planificación llama Binville Intersection Tracer, o bit para abreviar. Al acercarse a la primera bifurcación, mire el primer bit de la dirección. Si es un cero, ve a la izquierda; si es uno, ve a la derecha. Luego observe el segundo dígito cuando llegue a la segunda bifurcación, yendo a la izquierda o a la derecha según corresponda.

Digamos que quieres visitar a tu amigo que vive en Binville. Ella dice que vive en la casa 10. Cuando llegue a la primera bifurcación de Binville, vaya a la derecha (1). Luego en la segunda bifurcación, vaya a la izquierda (0). ¡Estas ahí!

Binville existió así durante varios años, pero se corrió la voz sobre su entorno idílico, su gran sistema de parques y su generosa atención médica. (Después de todo, si no tiene que gastar dinero en letreros de la calle, puede usarlo en cosas mejores). Pero hubo un problema. ¡Con solo dos bits, el esquema de direccionamiento se limitó a cuatro casas!

Entonces, la Comisión de Planificación unió sus ideas y diseñó un plan: agregarían un poco a cada dirección, duplicando así el número de casas. Para implementar el plan, construirían una nueva bifurcación en las afueras de la ciudad y todos obtendrían nuevas direcciones. Aquí está el nuevo mapa, que muestra la nueva bifurcación que conduce a la ciudad y a la parte nueva de Binville:

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

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

Pasaron algunos años y Binville se llenó una vez más a su capacidad. Más personas querían mudarse, por lo que se agregó otro poco (junto con la intersección requerida), doblando el tamaño de la ciudad a dieciséis casas. Luego otro bit, y otro, y otro ... Las direcciones de Binville fueron pronto a dieciséis bits, capaces de acomodar hasta 2 16 (16,384) casas, pero no fue suficiente. ¡La gente seguía viniendo y viniendo!

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

Y fue ... durante unos veinticinco años, cuando Binville ya no era un pequeño pueblo en medio de la nada. Ahora era una gran metrópolis. De hecho, estaba llegando a ser tan grande como toda una nación con miles de millones de residentes. Pero los parques aún eran agradables y todos tenían una excelente atención médica, por lo que la población siguió creciendo.

Frente a la población cada vez mayor, la Comisión de Planificación una vez más unió sus cabezas y propuso otra expansión de la ciudad. Esta vez usarían 64 bits. ¿Sabes cuántas casas podrían caber dentro de los límites de la ciudad de Binville ahora? Eso es correcto: 18,446,744,073,709,551,616. Ese número es tan grande que podríamos poblar aproximadamente dos mil millones de Tierras y dar a cada uno su propia dirección.

Usar 64 bits no era una panacea para todos sus problemas de direccionamiento. Las direcciones ocupan el doble de espacio para escribir que las antiguas direcciones de 32 bits. Peor aún, algunos ciudadanos aún no habían actualizado sus direcciones para usar el nuevo formato de 64 bits, por lo que se vieron obligados a ingresar a una sección amurallada de la ciudad reservada específicamente para aquellos que todavía usan direcciones de 32 bits. Pero eso estaba bien: las personas que usaban 32 bits tenían acceso a más de la ciudad para satisfacer sus necesidades. No sintieron la necesidad de cambiar todavía.

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

Soy nuevo en la programación y provengo de un fondo no CS (sin título formal). Principalmente programo winforms usando C #.

Estoy confundido entre 32 y 64 bits ... Quiero decir, he oído hablar de un sistema operativo de 32 bits, un procesador de 32 bits y según el cual un programa puede tener la máxima memoria. Cómo afecta la velocidad de un programa. Hay muchas más preguntas que siguen viniendo a la mente.

Traté de revisar algunos libros de Organización de computadoras y Arquitectura. Pero, o soy demasiado tonto para entender lo que está escrito allí o los escritores asumen que el lector tiene algo de fondo de CS.

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

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

BOUNTY : Las respuestas a continuación son realmente buenas ... especialmente una de Martin. Pero, estoy buscando una explicación completa, pero en inglés simple y simple.


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

32 bits se refiere a los registros. Los registros son lugares para almacenar datos, y todos los programas funcionan mediante la manipulación de estas cosas. El ensamblaje opera directamente sobre ellos (y, por lo tanto, la razón por la que la gente suele estar emocionada de programar en ensamblaje).

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

¿Por qué esto puede hacer que los programas sean más rápidos? Porque puedes hacer operaciones más grandes más rápido. Por cierto, solo hará que ciertos tipos de programas sean más rápidos. Los juegos, por lo general, pueden aprovechar al máximo la optimización por procesador , debido a sus operaciones pesadas de matemáticas (y, por lo tanto, al uso de registros).

Pero de manera divertida, como mencionó tchen, hay muchas otras "cosas" que le permiten realizar operaciones más grandes de todos modos. SSE, SSE2, etc., tendrán registros de 64 bits y registros de 128 bits, incluso en un sistema de "32 bits".

La mayor capacidad para abordar la memoria habla directamente del aumento en el tamaño del registro básico, basado en (me imagino) el sistema de direccionamiento de memoria específico de Windows.

Espero que esto ayude un poco. otros carteles son mucho más precisos que yo, solo trato de explicarlo de manera muy simple (me ayuda saber muy poco :)


La respuesta de Martin es en su mayoría correcta y detallada.

Pensé que solo mencionaría que todos los límites de memoria son límites de memoria virtual por aplicación , no límites para la memoria física real en la computadora. De hecho, es posible trabajar con más de 4 Gb de memoria en una sola aplicación incluso en sistemas de 32 bits, solo requiere más trabajo, ya que no todos pueden accederse usando punteros a la vez. Texto del enlace

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


La respuesta de Martin es excelente. Solo para agregar algunos puntos adicionales ... ya que mencionas .NET, debes tener en cuenta que la CLI / JIT tiene algunas diferencias entre x86 y x64, con diferentes optimizaciones (tail-call, por ejemplo) y un comportamiento diferente y sutil de avanzadas cosas como volatile . Esto puede tener un impacto en tu código.

Además, no todo el código funciona en x64. Cualquier cosa que use DirectX o ciertas características COM puede tener problemas. No es realmente una función de rendimiento , pero es importante saberlo.

(Eliminé "DirectX"; podría estar hablando de basura allí ... pero simplemente: debe comprobar que todo lo que dependa de usted es estable en su plataforma de destino)


La respuesta simple para explicar el rango de memoria direccionable con procesadores de 32 bits es:

Supongamos que solo tiene permitido construir números de 3 dígitos, por lo que el número máximo que puede subir es 999. El rango de números es (0 - 999). Tienes solo 1000 números para usar.

Pero si se le permite tener números de 6 dígitos, entonces el número máximo que puede construir es 999999. Ahora el rango es (0 - 999999). Así que ahora tienes 1 millón de números contigo para usar.

De manera similar, se pueden construir más bits en un procesador, un conjunto más grande de direcciones (números en el ejemplo anterior) y eventualmente usarlos para almacenar datos, etc.

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

-ANUNCIO.


Muchos procesadores modernos pueden funcionar en dos modos: modo de 32 bits y modo de 64 bits. En el modo de 32 bits, pueden acceder a hasta 4 GB de memoria; En el modo de 64 bits, pueden acceder a mucho más. Los procesadores más antiguos solo admiten el modo de 32 bits.

Los sistemas operativos optaron por utilizar los procesadores en uno de estos modos: en el momento de la instalación, se elige si operar el procesador en modo de 32 bits o en modo de 64 bits. A pesar de que el procesador puede continuar funcionando en modo de 64 bits, el cambio de 32 bits a 64 bits requeriría una reinstalación del sistema. Los sistemas antiguos solo admiten el modo de 32 bits.

Las aplicaciones también pueden escribirse (o compilarse) en modo de 32 bits o de 64 bits. La compatibilidad aquí es más complicada, ya que el procesador, cuando se ejecuta en modo de 64 bits, aún puede admitir aplicaciones de 32 bits como una función de emulación. Por lo tanto, en un sistema operativo de 64 bits, puede ejecutar aplicaciones de 32 bits o aplicaciones de 64 bits. En un sistema operativo de 32 bits, puede ejecutar solo aplicaciones de 32 bits.

Nuevamente, elegir el tamaño es principalmente una cuestión de la cantidad de memoria principal a la que desea acceder. Las aplicaciones de 32 bits a menudo están restringidas a 2 GB en muchos sistemas, ya que el sistema necesita algo de espacio de direcciones por sí mismo.

Desde el punto de vista del rendimiento (velocidad), no hay una diferencia significativa. Las aplicaciones de 64 bits pueden ser un poco más lentas porque utilizan punteros de 64 bits, por lo que necesitan más accesos de memoria para una operación determinada. Al mismo tiempo, también pueden ser un poco más rápidos, ya que pueden realizar operaciones de enteros de 64 bits como una sola instrucción, mientras que los procesadores de 32 bits deben emularlos con varias instrucciones. Sin embargo, esas operaciones de enteros de 64 bits son bastante infrecuentes.

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


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

Pero primero ... las computadoras digitales usan una representación binaria de 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 usaban interruptores electromecánicos; las computadoras modernas usan transistores porque son más pequeñas y más rápidas. Mucho más pequeño y mucho más rápido.

Dentro de la CPU, los interruptores se agrupan en registros de una longitud finita, y las operaciones se realizan típicamente en registros enteros: por ejemplo, agregue este registro a eso, y así sucesivamente. Como es de esperar, una CPU de 32 bits tiene registros de 32 bits de longitud. Estoy simplificando aquí, pero ten paciencia conmigo.

Tiene sentido organizar la memoria de la computadora como una serie de ''ubicaciones'', cada una con el mismo número de bits que un registro de CPU: por ejemplo, cargue este registro desde esa ubicación de memoria. En realidad, si pensamos en la memoria como bytes , es solo una fracción conveniente de un registro y podemos cargar un registro de una serie de ubicaciones de memoria (1, 2, 4, 8).

A medida que los transistores se hacen más pequeños, se puede implementar una lógica adicional para aritmética más compleja en el espacio limitado de un chip de computadora. CPU de bienes raíces siempre es una prima.

Pero con mejoras en la fabricación de chips, se pueden fabricar más transistores de manera confiable en chips solo ligeramente más grandes. Los registros pueden ser más largos y los caminos entre ellos pueden ser más amplios.

Cuando los registros que contienen las direcciones de las ubicaciones de memoria son más largos, abordan las memorias más grandes y los datos pueden manipularse en fragmentos más grandes. En combinación con la lógica aritmética más compleja, las cosas se hacen más rápido.

¿Y no es eso lo que todos buscamos?


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

Además, si tiene RAM limitada (en VPS, por ejemplo, o servidor dedicado de memoria pequeña), elija 32 bit, los servicios consumirán menos RAM.


Piense en una memoria de computadora genérica como una tarjeta de bingo masiva con miles de millones de cuadrados. Para abordar cualquier cuadro individual en el tablero, hay un esquema para etiquetar cada fila y columna B-5, I-12, O-52..etc.

Si hay suficientes cuadrados en la tarjeta, con el tiempo se le acabarán las letras, por lo que tendrá que comenzar a reutilizar más letras y escribir números más grandes para seguir siendo capaz de abordar de forma única cada cuadro.

Antes de que te des cuenta, el locutor está lanzando molestos números enormes y combinaciones de letras para que sepas qué casilla marcar en tu tarjeta de 10 mil millones de cuadrados. BAZC500000, IAAA12000000, OAAAAAAA523111221

El conteo de bits de la computadora especifica su límite de la complejidad de las letras y números para abordar cualquier cuadrado específico.

32 bits significa que si la tarjeta es más grande que 2 ^ 32 cuadrados, la computadora no tiene suficientes cables y se transmite para permitir que aborde de manera única físicamente cualquier cuadrado específico requerido para leer un valor o escribir un nuevo valor en la ubicación de memoria especificada.

Las computadoras de 64 bits pueden direccionar individualmente 2 ^ 64 cuadrados masivos ... pero para hacerlo, cada cuadrado necesita muchas más letras y números para asegurarse de que cada cuadrado tenga su propia dirección única. Es por esto que las computadoras de 64 bits necesitan más memoria.

Otros ejemplos comunes de límites de direccionamiento son los números de teléfono locales. Por lo general, son de 7 dígitos, 111-2222 o reformateados como número 1,112,222. ¿Qué sucede cuando hay más de 9,999,999 personas que quieren sus propios números de teléfono? Agregas códigos de área y códigos de país y tu número de teléfono va de 7 dígitos a 10 a 11 ocupando más espacio.

Si está familiarizado con la inminente escasez de IPv4, tiene el mismo problema. Las direcciones IPv4 son de 32 bits, lo que significa que solo hay 2 ^ 32 (~ 4 mil millones) de direcciones IP únicas posibles y hay muchas más personas que la actual.

Hay una sobrecarga en todos los esquemas que mencioné (computadoras, números de teléfono, direcciones IPv4) donde ciertas porciones están reservadas para propósitos organizacionales por lo que el espacio utilizable 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) una computadora de 64 bits puede enviar 8 bytes a la vez (ABCDEFGH), por lo que el alfabeto se transfiere entre diferentes áreas de memoria hasta dos veces Tan rápido como una computadora de 32 bits. También hay beneficios para algunas aplicaciones que solo se ejecutan más rápido cuando tienen más memoria que pueden usar.

En el mundo real, los procesadores de escritorio de 64 bits de Intel y otros no son realmente verdaderos procesadores de 64 bits y aún están limitados a 32 bits para varios tipos de operaciones, así que en el mundo real el rendimiento entre aplicaciones de 32 bits y de 64 bits es marginal El modo de 64 bits le brinda más registros de hardware para trabajar, lo que mejora el rendimiento, pero la administración de más memoria en un procesador "falso" de 64 bits también puede perjudicar el rendimiento en algunas áreas, por lo que usualmente es un lavado. En el futuro, veremos más mejoras de rendimiento cuando los procesadores de escritorio se vuelvan totalmente de 64 bits.


Realmente todo se reduce a cables.

En circuitos digitales, solo se pueden transmitir 0 y 1 (generalmente bajo voltaje y alto voltaje) de un elemento (CPU) a otro elemento (chip de memoria). Si solo tengo 1 cable, solo puedo enviar un 1 o un 0 a través del cable por ciclo de reloj. Esto significa que solo puedo direccionar 2 bytes (asumiendo el direccionamiento de bytes, y que las direcciones completas se transmiten en solo 1 ciclo para la velocidad).

Si tengo 2 cables, puedo direccionar 4 bytes. Porque puedo enviar: (0, 0), (0, 1), (1, 0) o (1, 1) a través de los dos cables. Así que básicamente es 2 a la potencia de # de cables.

Entonces, si tengo 32 cables, puedo direccionar 4 GB, y si tengo 64 cables, puedo abordar muchos más.

Hay otros trucos que los ingenieros pueden hacer para abordar un espacio de direcciones más grande que el que permiten los cables. Por ejemplo, dividir la dirección en dos partes y enviar 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ápida.

Edité mis comentarios aquí (sin editar);) Y convirtiéndolo en un wiki si alguien tiene algo interesante que agregar también.

Como han mencionado otros comentarios, 2 ^ 32 (2 a la potencia de 32) = 4294967296, que es de 4 GB. Y 2 ^ 64 es 18,446,744,073,709,551,616. Para profundizar más (y probablemente lea esto en Hennesey & Patterson), los procesadores contienen registros que utiliza como "espacio de memoria" para almacenar los resultados de sus cálculos. Una CPU solo sabe cómo hacer aritmética simple y sabe cómo mover datos. Naturalmente, el tamaño de estos registros es el mismo ancho en bits que los "# bits" de la arquitectura, por lo que los registros de una CPU de 32 bits tendrán un ancho de 32 bits, y los registros de la CPU de 64 bits serán de 64 bits amplio.

Habrá excepciones a esto cuando se trata de punto flotante (para manejar la doble precisión) u otras instrucciones SIMD (instrucción simple, comandos de datos múltiples). La CPU carga y guarda los datos hacia y desde la memoria principal (la RAM). Dado que la CPU también utiliza estos registros para calcular las direcciones de memoria (física y virtual), la cantidad de memoria que puede tratar es también la misma que el ancho de sus registros. Hay algunas CPU que manejan el cálculo de direcciones con registros extendidos especiales, pero los que yo llamaría "pensamientos posteriores" se agregaron después de que los ingenieros se dieran cuenta de que lo necesitaban.

En este momento, 64 bits es bastante para direccionar la memoria física real. La mayoría de las CPU de 64 bits omiten algunos cables cuando se trata de conectar la CPU a la memoria debido a la practicidad. No tiene sentido utilizar preciosos bienes raíces de la placa base para ejecutar cables que siempre tendrán 0. Sin mencionar que para tener la cantidad máxima de RAM con la densidad de DIMM de hoy requeriría 4 mil millones de ranuras de dimm :)

Además de la mayor cantidad de memoria, los procesadores de 64 bits ofrecen un cálculo más rápido para números enteros mayores que 2 ^ 32. Anteriormente, los programadores (o compiladores, que también están programados por los programadores;) tendrían que simular tener un registro de 64 bits al tomar dos registros de 32 bits y manejar cualquier situación de desbordamiento. Pero en las CPU de 64 bits lo manejaría la propia CPU.

El inconveniente es que una CPU de 64 bits (con todo igual) consumiría más energía que una CPU de 32 bits solo debido a (aproximadamente) el doble de la cantidad de circuitos necesarios. Sin embargo, en realidad nunca obtendrá una comparación igual porque las CPU más nuevas se fabricarán en procesos de silicio más nuevos que tienen menos fugas de energía, lo que le permite abarrotar más circuitos en el mismo tamaño de troquel, etc. memoria. Lo que antes se consideraba "feo" de la longitud de instrucción variable de x86 es en realidad una ventaja ahora en comparación con las arquitecturas que usan un tamaño de instrucción fijo.


Tengo una respuesta maravillosa para esta pregunta, pero no encaja en este bloque de respuestas ... La respuesta simple es que para que su programa obtenga un byte de la memoria, necesita una dirección. En las CPU de 32 bits, la dirección de memoria de cada byte se almacena en un entero de 32 bits (sin signo), que tiene un valor máximo de 4 GB. Cuando utiliza un procesador de 64 bits, la dirección de la memoria es un número entero de 64 bits, lo que le proporciona aproximadamente 1.84467441 × 10 ^ 19 direcciones de memoria posibles. Esto realmente debería ser suficiente si eres nuevo en la programación. Realmente debería centrarse más en aprender cómo programar que en el funcionamiento interno de su procesador y por qué no puede acceder a más de 4 GB de RAM en su CPU de 32 bits.


Tratemos de responder a esta pregunta mirando personas versus computadoras ; Esperemos que esto arroje algo de luz sobre las cosas para ti:

Cosas a tener en cuenta

  • Tan asombrosos como son, las computadoras son muy, muy tontas.

Memoria

  • Las personas tienen memoria (con la excepción, posiblemente, de esposos y políticos). Las personas almacenan información en su memoria para su uso posterior.
    • Con una pregunta (p. Ej., "¿Cuál es su número de teléfono?"), Una persona puede recuperar información para dar una respuesta (p. Ej., "867-5309")
  • Todas las computadoras modernas tienen memoria y almacenan información en su memoria para su uso posterior.
    • Debido a que las computadoras son tontas, solo se les puede hacer una pregunta muy específica para recuperar información: "¿Cuál es el valor de X en su memoria?"
      • En la pregunta anterior, X se conoce como una dirección , que también se puede llamar un puntero .

Entonces, aquí tenemos una diferencia fundamental entre las personas y las computadoras: para recuperar información de la memoria, las computadoras necesitan una dirección , mientras que las personas no. (Bueno, en cierto sentido, uno podría decir que "su número de teléfono" es una dirección porque proporciona información diferente a "su fecha de cumpleaños", pero esa es otra conversación).

Números

  • La gente usa el sistema de números decimales . Eso significa que para cada dígito en un número decimal, el dígito puede ser uno de 0, 1, 2, 3, 4, 5, 6, 7, 8 o 9. Las personas tienen diez opciones por dígito.
  • Todas las computadoras modernas utilizan el sistema de números binarios . Eso significa que para cada dígito en un número binario, el dígito solo puede ser 1 o 0. Las computadoras tienen dos opciones por dígito.
    • En la jerga de la computadora, un solo dígito binario se llama bit , abreviatura de b diga.

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 fijo ) y necesita saber con anticipación que una dirección solo será tan larga.
  • Los términos como "32 bits" y "64 bits" están hablando de 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 se puede imaginar, cuantos más bits pueda manejar una computadora, mayor será la dirección que puede buscar y, por lo tanto, podrá administrar más memoria al mismo tiempo.

Direccionamiento de 32 bits frente a 64 bits

  • Para un número inflexible (fijo) de dígitos (por ejemplo, 2 dígitos decimales), los números posibles que puede representar se denominan rango (por ejemplo, 00 a 99, o 100 números únicos). Al agregar un dígito decimal adicional se multiplica el rango por 10 (por ejemplo, 3 dígitos decimales -> 000 a 999, o 1000 números únicos).
  • Esto también se aplica a las computadoras, pero dado que son máquinas binarias en lugar de máquinas decimales , agregar un dígito binario adicional ( bit ) solo aumenta el rango en un factor de 2 .

    Alcance de direcciones:
    • 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 un largo tiempo ... el direccionamiento de 32 bits le permite hablar de 4.294.967.296 direcciones únicas.
    • y después de un tiempo aún mayor ... el direccionamiento de 64 bits le permite hablar de 18,446,744,073,709,551,616 direcciones únicas. ¡Eso es MUCHA memoria!

Trascendencia

Lo que todo esto significa es que una computadora de 64 bits puede almacenar y recuperar mucha más información que una computadora de 32 bits. Para la mayoría de los usuarios, esto no significa mucho porque las 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 tienes muchos datos que la computadora tendrá que batir. El procesamiento de señales digitales, la fotografía con gigapíxeles y los juegos en 3D avanzados son todas áreas en las que sus enormes cantidades de procesamiento de datos verían un gran impulso en un entorno de 64 bits.


Vale la pena señalar que ciertas aplicaciones (por ejemplo, codificación / decodificación multimedia y renderización) obtienen un impulso de rendimiento significativo (2x) cuando se escribe para utilizar completamente 64 bits.

Consulte los puntos de referencia de 32 bits frente a los de 64 bits para Ubuntu y Windows Vista


para explicar por qué el modo de 32 bits solo puede acceder a 4 GB de RAM:

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

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

Acabo de notar los comentarios de Tchens sobre esto. De todos modos, sin un fondo de CS, sí, los libros de arquitectura y organización de computadoras van a ser difíciles de entender en el mejor de los casos.


  • El procesador usa base-2 para almacenar números. Probablemente se eligió la Base 2 porque es la más simple de todas las bases: por ejemplo, la tabla de multiplicación de base 2 tiene solo 4 celdas, mientras que la tabla de multiplicación de base "10" tiene 100 celdas.
  • Antes de 2003, los procesadores de PC comunes solo tenían "capacidad para 32 bits".
    • Eso significa que las operaciones numéricas nativas del procesador fueron para números de 32 bits.
    • Todavía puede hacer operaciones numéricas para números más grandes, pero los tendrían que realizar los programas ejecutados por el procesador, y no las "acciones primitivas" (comandos en máquina-lenguaje) compatibles con el procesador como los de 32 bits. enteros (en el momento)
    • Se eligieron 32 bits porque a los ingenieros de CPU les gustan los poderes de 2 y los de 16 bits no fueron suficientes
  • ¿Por qué no eran suficientes 16 bits? Con 16 bits 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 hospitalaria necesita contar con más de 65535 pacientes
    • Por lo general, las personas consideran el tamaño de la memoria de la computadora cuando hablan de cuán grandes deben ser sus enteros. 65535 definitivamente no es suficiente. Las computadoras tienen mucha más memoria RAM que eso, y no importa si cuenta en "Bytes" o bits
  • 32 bits se consideró suficiente por un tiempo. En 2003, AMD presentó el primer procesador "x86" con capacidad para 64 bits . Intel pronto siguió.
  • En realidad 16 bits fue considerado suficiente hace mucho tiempo .
  • Es una práctica común que una gran cantidad de hardware y software sean compatibles con versiones anteriores. En este caso, significa que las CPU con capacidad para 64 bits también pueden ejecutar todos los programas que las CPU con capacidad de 32 bits pueden.
    • La compatibilidad hacia atrás se busca como una estrategia empresarial. Más usuarios querrán actualizar a un mejor procesador si también puede hacer todo lo que el anterior podría hacer.
    • En las CPU, la compatibilidad con versiones anteriores significa que las nuevas acciones que admite la CPU se agregan al idioma de la máquina anterior. Por ejemplo, el lenguaje de máquina anterior puede tener alguna especificación como "todos los códigos de operación que comienzan en 1111 están reservados para uso futuro"
    • En teoría, este tipo de cómputo regresivo de la CPU no habría sido necesario ya que todo el software podría haber sido recompilado al nuevo y no compatible lenguaje de máquina. Sin embargo, ese no es el caso debido a las estrategias corporativas y los sistemas políticos o económicos. En un mundo utópico de "código abierto", la compatibilidad con versiones anteriores de los lenguajes de máquina probablemente no sea una preocupación.
  • La capacidad de cálculo hacia atrás de x86-64 (el lenguaje de máquina de las CPU comunes de 64 bits) viene en la forma de un "modo de compatibilidad". Esto significa que cualquier programa que desee utilizar las nuevas capacidades de la CPU debe notificar a la CPU (a través del SO) que debe ejecutarse en el "modo de 64 bits". Y luego podría usar grandes capacidades nuevas de CPU de 64 bits.
  • Por lo tanto, para que un programa utilice las capacidades de 64 bits de la CPU: la CPU, el sistema operativo y el programa, todos tienen que "admitir 64 bits".
  • 64 bits es suficiente para dar a cada persona en el mundo varios números únicos. Probablemente sea lo suficientemente grande para la mayoría de los esfuerzos de computación actuales. Probablemente sea poco probable que las futuras CPU cambien a 128 bits. Pero si lo hacen, eso es definitivamente suficiente para todo lo que pueda imaginar, y por lo tanto no será necesaria una transición de 256 bits.

Espero que esto ayude.