Sé que el tamaño del bus de datos define el tamaño del procesador, pero ¿puede realmente el procesador procesar datos por encima de ese límite?
Realmente agradecería alguna explicación sobre esto.
Sé que el tamaño del bus de datos define el tamaño del procesador, pero ¿puede realmente el procesador procesar datos por encima de ese límite?
Realmente agradecería alguna explicación sobre esto.
El ancho del bus de datos externo no siempre coincide con la estructura interna del procesador. Un ejemplo conocido es el antiguo procesador Intel 8088, que era idéntico al 8086 de 16 bits internamente, pero tenía un bus externo de 8 bits.
El ancho del bus de datos no es un indicador real de la potencia del procesador, aunque un bus menos ancho puede afectar el rendimiento de los datos. La potencia real de un procesador está determinada por la ALU de la CPU, para Unidad aritmética y lógica . Los microcontroladores de 8 bits tendrán ALU de 8 bits que pueden procesar datos en el rango de 0..255. Eso es suficiente para el procesamiento de texto: la tabla de caracteres ASCII solo necesita 7 bits. La ALU puede hacer algo de aritmética básica, pero para números más grandes necesitará ayuda del software. Si desea agregar 100500 + 120760, entonces la ALU de 8 bits no puede hacer eso directamente, ni siquiera una ALU de 16 bits. Así que el compilador dividirá los números para hacer cálculos separados en las partes y volverá a combinar el resultado más adelante.
Suponga que tiene una ALU decimal, que puede procesar números de hasta 3 dígitos decimales. El compilador dividirá el 100500 en 100 y 500, y el 120760 en 120 y 760. La CPU puede calcular 500 + 760 = 260, más un desbordamiento de 1. Toma el dígito de desbordamiento y lo agrega a 100 + 120, por lo que que la suma es 221. Luego, vuelve a combinar las dos partes para obtener el resultado final 221260. De esta manera puedes hacer cualquier cosa. Los tres dígitos no fueron una objeción para procesar números de 6 dígitos, y puede escribir algoritmos para procesar números de 10 dígitos o más. Por supuesto, el cálculo tomará más tiempo que con una ALU que puede hacer cálculos de 10 dígitos de forma nativa, pero se puede hacer.
Cualquier computadora puede simular cualquier otra computadora.
El humilde procesador de 8 bits puede hacer exactamente lo que puede hacer una supercomputadora, dados los recursos necesarios y el tiempo. Mucho tiempo :-).
Un ejemplo concreto son las calculadoras de precisión arbitrarias. La mayoría de las calculadoras (de software) tienen una precisión de 15 dígitos decimales; si los números tienen dígitos más significativos, los redondeará y posiblemente cambiará a la forma de mantisa + exponente para almacenarlos y procesarlos. Pero la precisión arbitraria expande el ejemplo de cálculo que di anteriormente, y permiten multiplicar
\ $ 44402958666307977706468954613 \ times 595247981199845571008922762709 \ $
por ejemplo, dos números (ambos son primos) que necesitarían un bus de datos más amplio que el de 64 bits de mi PC. Ejemplo extremo: Mathematica le da \ $ \ pi \ $ a 100000 dígitos en 1/10 de segundo. Calcular \ $ e ^ {\ pi \ sqrt {163}} \ $ \ $ ^ {(1)} \ $ a 100000 dígitos toma aproximadamente medio segundo. Por lo tanto, si bien es de esperar que trabajar con datos más amplios que la base de datos sea un problema, a menudo no es realmente un problema. Para una PC que funciona a 3 GHz, esto puede no ser sorprendente, pero los microcontroladores también se vuelven más rápidos: un ARM Cortex-M3 puede funcionar a velocidades superiores a 100 MHz, y por el mismo dinero también obtiene un bus de 32 bits.
\ $ ^ {(1)} \ $ Alrededor de 262537412640768743.99999999999900007259, ¡y no es una coincidencia que sea casi un número entero!
El tamaño del bus de datos solo determina la cantidad de datos que se pueden transferir a través del bus en cualquier momento, y no tiene ningún efecto fuera de eso.
El valor máximo que puede manejar una CPU es ilimitado para la mayoría de las CPU, pero el valor máximo que puede manejarse en cualquier instante está limitado (generalmente) por el ancho de la ALU, o unidad lógica aritmética. Y el ancho de la ALU es (generalmente) el mismo ancho que los registros internos de la CPU.
La razón por la que el valor máximo es ilimitado es porque las CPU pueden dividir un valor en secciones y procesar cada sección de forma independiente. Hacemos esto cuando hacemos matemáticas usando lápiz y papel. Dividimos los números en dígitos de 0 a 9. Las CPU lo hacen dividiendo el valor en 8, 16, 32 o 64 bits.
En ocasiones, las CPU tendrán un ancho de bus de datos más estrecho que el ancho de la ALU. Esto se hace para reducir el costo del chip y la memoria a la que se está conectando. La PC original de IBM usó la CPU 8088, que era una CPU de 16 bits con un bus de datos de 8 bits. Incluso hoy en día hay CPU que hacen esto. Recientemente utilicé una CPU ARM 9 que tiene 32 bits internamente y 16 bits en el bus de datos.
Es posible que otras CPU tengan un bus de datos externo que sea MÁS AMPLIO que la ALU. Esto aumenta el costo pero también mejora el ancho de banda de la CPU a la RAM.
Todo este tema vuelve a una pregunta diferente (que nadie ha preguntado), que es: ¿Qué significa tener una CPU de 8, 16, 32 o 64 bits? La respuesta está lejos de ser simple! La respuesta simple a esta pregunta será inexacta y la respuesta compleja es muy compleja.
No, el "tamaño" de un procesador no es realmente el ancho de su bus de datos. Por ejemplo, el 8088 era una versión de bus de 8 bits del 8086, pero ambos se consideraron procesadores de "16 bits". A menos que se especifique algo más, el tamaño de bit de un procesador significa el ancho de la ALU, que es el ancho de la palabra en la que puede realizar de forma nativa las manipulaciones aritméticas y lógicas. La razón por la que tanto el 8088 como el 8086 fueron procesadores de 16 bits es porque tenían ALU de 16 bits internamente. Eso significa que podrían, por ejemplo, agregar dos números de 16 bits como una operación atómica.
Hoy en día las cosas se vuelven un poco más confusas ya que un "procesador" puede tener múltiples núcleos u otro paralelismo. Es importante distinguir entre el ancho de bits y el paralelismo, ya sea en el nivel alto como múltiples núcleos de CPU, o en el nivel bajo como algunas arquitecturas SIMD (datos de instrucción única). Los procesadores x86 modernos que se usan comúnmente en PC ahora son de 64 bits. Un quad core no es un procesador de 256 bits, sino 4 procesadores de 64 bits. De manera similar, un procesador SIMD que puede realizar 8 agregados de 16 bits al mismo tiempo no es un procesador de "128 bits". Tenga en cuenta que operar con múltiples palabras de 16 bits no es lo mismo que operar con una sola palabra de 128 bits que se entiende como un todo. Una diferencia obvia es que no hay transferencia entre los sumadores individuales de 16 bits, lo que se requeriría para llamarlo un sumador de 128 bits. Consulte enlace para obtener más información sobre algunos de estos problemas.
Sí, un procesador puede procesar datos de cualquier tamaño, pero cuanto más grande se comparan los datos con su tamaño nativo, más instrucciones se requieren para realizar la amplia manipulación del software.
La pregunta es un poco vaga y mi respuesta fue reescrita.
El tamaño del bus de datos físicos no es el factor limitante, sino el tamaño del espacio direccionable. El espacio de memoria se puede segmentar de varias maneras. El uso de GPU 256,512 & Buses de datos de 1024 bits. Las CPU modernas utilizan bus de datos de 64 y 128 bits con doble puerto.
Obviamente, un bus más ancho facilita el direccionamiento de grandes cantidades, pero debe empaquetarse y desempaquetarse con chips de Administración de la memoria y controlarse para que el contenido no se desperdicie y se llene con ceros en los bits no utilizados. (MBZ bits = reservado, debe ser cero)
La única forma de extender el bus de datos más allá de su tamaño físico es usar la administración de memoria virtual con arquitectura, bios, SO y controladores compatibles con VM. En los primeros días, se utilizaba 64bit VM en CPU de 32bit.
Perdóneme si mis suposiciones estaban equivocadas en su pregunta. (Todavía no estoy seguro de lo que quieres)