En un microprocesador de 8 bits, su bus de datos consta de 8 líneas de datos. En un microprocesador de 16 bits, su bus de datos consta de 16 líneas de datos, etc.
¿Por qué no hay un microprocesador de 256 bits ni un microprocesador de 512 bits? ¿Por qué no simplemente aumentan el número de líneas de datos y crean un microprocesador de 256 bits o un microprocesador de 512 bits?
¿Cuál es el obstáculo que impide crear un microprocesador de 256 bits o un microprocesador de 512 bits?
microcontroller
microprocessor
architecture
Michael harris
fuente
fuente
Respuestas:
Piénsalo. ¿Qué imaginas exactamente que sea un procesador de "256 bits"? ¿Qué hace el bit-ness de un procesador en primer lugar?
Creo que si no se hacen más calificaciones, el bit de un procesador se refiere a su ancho de ALU. Este es el ancho del número binario que puede manejar de forma nativa en una sola operación. Por lo tanto, un procesador de "32 bits" puede operar directamente en valores de hasta 32 bits de ancho en instrucciones individuales. Por lo tanto, su procesador de 256 bits contendría una ALU muy grande capaz de sumar, restar, OR, AND, etc., números de 256 bits en operaciones individuales. ¿Por qué quieres eso? ¿Qué problema hace que valga la pena pagar y pagar la ALU grande y costosa, incluso en aquellos casos en que el procesador solo cuenta 100 iteraciones de un bucle y similares?
El punto es que debe pagar la ALU amplia, ya sea que la use mucho o solo una pequeña fracción de sus capacidades. Para justificar una ALU de 256 bits, tendría que encontrar un problema suficientemente importante que realmente pueda beneficiarse de manipular palabras de 256 bits en instrucciones únicas. Si bien probablemente pueda idear algunos ejemplos, no hay suficientes problemas de este tipo que hagan que los fabricantes sientan que alguna vez obtendrán un retorno de la inversión significativa requerida para producir dicho chip. Si existen problemas de nicho pero importantes (bien financiados) que realmente pueden beneficiarse de una ALU amplia, entonces veríamos procesadores muy costosos y altamente específicos para esa aplicación. Sin embargo, su precio evitaría un amplio uso fuera de la aplicación limitada para la que fue diseñada. Por ejemplo, Si 256 bits posibilitaran ciertas aplicaciones de criptografía para los militares, probablemente surgirían procesadores especializados de 256 bits que cuestan entre 100 y 1000 dólares. Sin embargo, no pondrías uno de estos en una tostadora, una fuente de alimentación o incluso un automóvil.
También debo tener claro que la ALU amplia no solo hace que la ALU sea más costosa, sino también otras partes del chip. Una ALU de 256 bits de ancho también significa que debe haber rutas de datos de 256 bits de ancho. Eso solo tomaría mucha área de silicio. Esos datos tienen que venir de algún lado e ir a algún lado, por lo que necesitaría registros, caché, otra memoria, etc., para que la ALU amplia se use de manera efectiva.
Otro punto es que puede hacer aritmética de cualquier ancho en cualquier procesador de ancho. Puede agregar una palabra de memoria de 32 bits en otra palabra de memoria de 32 bits en un PIC 18 en 8 instrucciones, mientras que puede hacerlo en la misma arquitectura escalada a 32 bits en solo 2 instrucciones. El punto es que una ALU estrecha no le impide realizar cálculos amplios, solo que los cálculos largos tomarán más tiempo. Por lo tanto, es una cuestión de velocidad, no de capacidad. Si observa el espectro de aplicaciones que necesitan usar números de ancho particulares, verá que muy pocas requieren palabras de 256 bits. El gasto de acelerar solo esas pocas aplicaciones con hardware que no ayudará a los demás simplemente no vale la pena y no es una buena inversión para el desarrollo de productos.
fuente
Bueno, no sé acerca de 256 o 512 bits, pero he oído hablar de un procesador de 1024 bits (no puedo encontrarlo en este momento). La palabra es VLIW , para palabra de instrucción muy larga . Ese es el bus de instrucciones, no el ancho del bus de datos. Las ventajas son que puede implementar el paralelismo de nivel de instrucción (ILP) a gran escala.
Mi primer encuentro con ILP debe haber sido hace 20 años con DSP de Motorola, que tenían instrucciones para realizar un MAC (Multiplicar y acumular AC) mientras movía datos hacia y desde la memoria, para que pudiera realizar un nuevo MAC en la siguiente instrucción, sin desperdiciar tiempo entre dos MAC para mover datos.
Hoy también hay controladores de uso general que ofrecen esta opción. VLIW aplica esto a una escala mucho más alta.
Lecturas adicionales
Arquitectura VLIW
fuente
"Bitness" de un microprocesador generalmente se define en términos de tamaño de los registros de propósito general. El tamaño determina cuántos números puede manejar un procesador de forma nativa y cuánta memoria puede acceder. Los números de 64 bits son suficientes para casi cualquier algoritmo y la cantidad de memoria direccionable (16 millones de terabytes) es suficiente durante bastante tiempo. Simplemente no hay ninguna ventaja en aumentar el tamaño de los registros de propósito general. Por otro lado, el área de unidades lógicas aritméticas (ALU) utilizada para realizar operaciones en las escalas de registros con el cuadrado de la cantidad de bits. Una ALU de 256 bits sería 16 veces más grande y significativamente más lenta.
Por otro lado, tiene sentido ampliar el procesador para que sea posible realizar muchas operaciones más pequeñas a la vez. De hecho, los procesadores Sandy Bridge e Ivy Bridge de Intel hacen exactamente eso, tienen registros SIMD de 256 bits y pueden realizar dos operaciones aritméticas y una operación de memoria por ciclo en ellos. Por lo tanto, podría justificarse llamarlos procesadores de 256 bits, o incluso de 768 bits, si uno fuera un vendedor astuto que quisiera doblegar los términos utilizados regularmente.
fuente
En primer lugar, el tamaño de bits de un procesador generalmente está determinado por la arquitectura abstracta que es visible para el programador de lenguaje de máquina, no por detalles de implementación como el tamaño del bus de datos.
Por ejemplo, el Motorola 68000 es un procesador de 32 bits. Tiene registros de datos de 32 bits y registros de direcciones de 32 bits. Ahora, la primera versión de esa familia arquitectónica solo expone 24 bits de líneas de dirección. Además, existen variantes que solo tienen un bus de datos de 8 bits (por lo que el procesador realiza operaciones de memoria de 32 bits como ciclos de acceso múltiple).
Ahora sobre la pregunta, ¿por qué no pasar a 256 y 512? Los procesadores manipulan "nativamente" varios tipos de tipos de datos, por lo que es útil ver qué significan 256 o 512 bits para cada uno de estos tipos de datos individualmente. Tenemos enteros, punteros y tipos de punto flotante.
Enteros: los programas obtienen mucho kilometraje de los enteros de 32 y 64 bits. Si 64 bits es una limitación, la solución es tener enteros bignum implementados por software. Los lenguajes de alto nivel pueden implementar tipos enteros de modo que las operaciones cambien sin problemas entre "fixnums" y "bignums". Por supuesto, tiene un éxito de rendimiento con bignums, pero debe considerarlo en el panorama general: cuántas de las operaciones en un programa son operaciones bignum. Los números de 256 o 512 bits no eliminan la necesidad de bignums, solo aumentan el margen antes de que tengamos que cambiar a bignums. Si desea manipular claves públicas de 2048 bits, los enteros de 512 bits no funcionarán (pero un bignum con dígitos de 512 bits podría ser rápido).
Punteros: los punteros más amplios permiten dos cosas: espacios de direcciones más amplios y metadatos adicionales almacenados en un puntero. Los espacios de direcciones son virtuales en estos días, por lo que pueden crecer incluso si los recuerdos no crecen. Se ha propuesto que si tiene punteros de 128 bits, el espacio de direcciones es tan vasto que puede colocar todos los procesos de espacio de usuario de un sistema operativo y el núcleo, en lugares aleatorios en un solo espacio desprotegido, y es poco probable chocar. En lugar de simplemente crear un espacio de direcciones más grande, se pueden utilizar punteros más gordos para transportar bits que no son bits de dirección, como información sobre el objeto de referencia (tipo, tamaño y otra información) o información relacionada con la seguridad. Probablemente haya algo de "gordura óptima" para este tipo de cosas, y si tuviera que adivinar, aún lo limitaría a 128 bits. No lo hace Parece que tiene sentido ir a punteros de 256 bits, no importa 512. Los punteros más gordos tienen una desventaja: hinchan todas las estructuras de datos que contienen punteros. Y, en general, desea que los punteros sean del mismo tamaño, de lo contrario, necesita complicaciones en la arquitectura del conjunto de instrucciones (como segmentos de memoria) por lo que luego tiene punteros completos (descriptor de segmento y desplazamiento) o solo punteros locales (desplazamiento dentro de algún segmento comprendido) .
Tipos de punto flotante: más bits en números de punto flotante significa más precisión. Diría que los tipos de punto flotante se benefician más de una representación más amplia. Un tipo flotante de 256 o 512 bits mejorará la estabilidad del código numérico y la calidad de los cálculos científicos que requieren muchas iteraciones, y acumulará errores en el camino. La precisión en coma flotante no es lo mismo que la precisión en enteros: no podemos separar el tipo de coma flotante en rangos como Fixnums versus Bignums. Una mayor precisión en coma flotante afecta la calidad de todos los números inexactos, ya sean cercanos a cero o de gran magnitud. Más bits en exponentes de coma flotante también pueden extender enormemente el rango de números de coma flotante, y mucho más rápido que agregar bits a un entero bignum.
Por estas razones, sospecho que la tendencia futura predominante serán los aumentos en el ancho de los números de punto flotante de hardware, no necesariamente seguidos por aumentos en el ancho de los punteros y los enteros.
Recuerde que los números de coma flotante ya han estado por delante de los otros tipos en el pasado. Por ejemplo, durante un tiempo tuvimos un predominio de procesadores de 32 bits que admiten flotadores dobles IEEE de 64 bits. Esto se debe a que, si bien puede hacer mucho con punteros y enteros de 32 bits, los flotantes de 32 bits son muy limitados para cualquier trabajo numérico serio.
Una característica muy, muy útil que sería agradable ver emerger en representaciones de punto flotante sería algunos bits de repuesto para una etiqueta de tipo. Implementar tipos de punto flotante en lenguajes dinámicos de alto nivel (en los que los objetos tienen tipo, pero las ubicaciones de almacenamiento contienen valores de cualquier tipo) es una lucha porque, mientras que los bits de repuesto se pueden encontrar en punteros y objetos de tipo entero para colocar partes de un identificando la etiqueta de tipo, esto es difícil de hacer con números de punto flotante. Entonces, lo que a menudo termina sucediendo es que los números de punto flotante se asignan en montón. Algunos esquemas roban bits de la mantisa, por lo que los tipos de punto flotante en ese idioma pierden precisión en comparación con los flotantes en otros idiomas en la misma máquina.
fuente
En realidad, no te ayuda a hacer nada útil. Los números de 64 bits le brindan suficiente precisión para casi todos los propósitos (sin embargo, los sistemas Intel tienen un punto flotante de 80 bits), pero las líneas adicionales aumentan el costo y el consumo de energía al tiempo que tienen un pequeño impacto negativo en la velocidad del reloj.
Históricamente, las CPU utilizan la cantidad mínima de bits que tiene sentido práctico para su propósito previsto. Con los avances en la tecnología, se hicieron posibles autobuses y ALU más amplios, de ahí el aumento en el tamaño del autobús para ofrecer una aplicabilidad más amplia:
fuente
En realidad, tales procesadores existen y son comunes, dependiendo de cómo se defina el bitness. Es casi seguro que estás usando uno ahora. Como explicó Olin, no hay mucho uso para los números de 256 bits, pero ¿qué pasa con los números de 4 x 32 bits? ¿Qué pasaría si la ALU pudiera agregar 4 pares de números de 32 bits al mismo tiempo? Tales ALU (que yo sepa) se implementaron por primera vez en supercomputadoras vectoriales en la década de 1970. La primera vez que tuve una computadora así fue cuando tuve uno de los Intel Pentiums con MMX.
¿Te acuerdas de esos tipos?
Los chips MMX tenían una instrucción única: conjunto de instrucciones de datos múltiples ( SIMD ), lo que le permite agregar 1 par de 64 bits, 2 pares de 32 bits, pares de 4 × 16 bits o pares de 8 × 8 bits.
Pero eso no es nada. Una tarjeta gráfica moderna tiene una GPU (que solía significar Unidad de procesamiento de gráficos, pero ahora significa Unidad de procesamiento general). Estas son a menudo implementaciones SIMD amplias, capaces de ramificar, cargar y almacenar en 128 o 256 bits a la vez. El prototipo de microarquitectura Larrabee de Intel incluye más de dos registros SIMD de 512 bits en cada uno de sus núcleos.
Tenga en cuenta que SIMD no debe confundirse con multi-core. Cada núcleo de una CPU tendrá su propia ALU amplia capaz de sumar un conjunto de enteros.
fuente
Porque aún no lo necesitamos.
Normalmente, el bitness (que definiría como el número de bits en un registro) se traduce más o menos directamente en la cantidad de memoria direccionable. Esto, por supuesto, se simplifica, ya que dependiendo del procesador, puede haber registros que tengan 2 veces la longitud del bitness, o existen técnicas para sortear esas limitaciones de memoria (¿alguien recuerda haber hecho programación en ventanas de 16 bits?).
fuente
"¿Por qué no simplemente aumentan el número de líneas de datos y crean un 256-bit?"
De hecho, todos los procesadores Intel que se ajustan al LGA-2011 Socket tienen 256 pines de datos, que se conectan a 256 líneas de datos en la placa base que conducen a la DRAM. Me sorprendería un poco si la computadora portátil o de escritorio más reciente que utilizó no tuviera al menos 256 líneas de datos. ¿Puedo preguntarle de dónde sacó esta idea equivocada de que "no ... simplemente aumentan el número de líneas de datos"?
La hoja de datos del zócalo LGA-2011 , sección 6.1, indica que estas CPU tienen 256 pines de datos y 76 pines de dirección (dirección bancaria + dirección de memoria).
fuente
porque no hay una aplicación que necesite o tenga la posibilidad de representar datos utilizando más de 128 bits a la vez.
y ya sabes, los procesadores multimedia y las tarjetas gráficas llegarán mucho antes que las CPU de las placas base, solo porque con foto / video tiene sentido usar longitudes de datos tan grandes para procesarlas de una vez.
fuente
Un sistema informático es en su significado una máquina de computación, que requiere algunas entradas y da algunas salidas. Tenemos que satisfacer a la computadora en estas líneas, por lo tanto, los desarrolladores llegaron a tener un punto de referencia al tener 3 buses, a saber, Address Bus, Data Bus y Control Bus. 1) El bus de dirección busca / selecciona una dirección particular en la memoria, para operaciones de lectura / escritura. 2) El bus de datos recupera los datos presentes en este / desde el procesador y la memoria para fines de procesamiento / almacenamiento. 3) El bus de control crea un protocolo de control de interfaz y le pide al sistema que lo respete.
Estos son necesarios para hacer algunos cálculos útiles para un usuario / servidor / cliente. En general, el rendimiento (velocidad de finalización de la tarea, menos fallas, etc.) depende de la limpieza de los cuellos de botella en el sistema. es decir, si la CPU puede procesar a una velocidad mucho mayor que la velocidad de transferencia desde una unidad de disco duro, el cuello de botella se produce en el disco duro. Del mismo modo, debemos tener una velocidad de procesamiento adecuada para velocidades de datos y ancho de código específicos.
Desde el principio, debido a varias razones como la complejidad H / W, el costo, el requisito, los algoritmos efectivos y la razón principal por la que Market Scope son los principales obstáculos para la producción de ancho de bus de datos alto, como lo menciona el Host de preguntas, digamos 256 bits o 512 bit. Estos son posibles! Pero el requisito aún no está presente, el alcance del mercado aún no es visible con las necesidades actuales y la ausencia de soporte de software complementario.
El procesador de 256 bits significa el ancho del bus de datos, ese procesador en particular puede manejar, o la ALU puede procesar en una sola ejecución. Comenzamos formando 4 bits, luego 8,16,32 y actualmente 64 e incluso 128 bits, que son los productos actuales de Market Scope.
Entonces, antes de hacer estas preguntas, siempre debe ver la Demanda del lado del mercado y su alcance. En la historia, es la única forma directa y directa de comprender los modos de vida. Si no puede pagarlo, ¿cómo puede comprarlo? y si no puedes comprarlo, ¿cómo puede producir el productor? y si él no puede producir, ¡entonces no existe ese producto!
fuente