Según Wikipedia, el poder de procesamiento está fuertemente relacionado con la ley de Moore:
http://en.wikipedia.org/wiki/Moore's_law
El número de transistores que se pueden colocar de manera económica en un circuito integrado se ha duplicado aproximadamente cada dos años. La tendencia ha continuado durante más de medio siglo y no se espera que se detenga hasta 2015 o más tarde. Las capacidades de muchos dispositivos electrónicos digitales están fuertemente vinculadas a la ley de Moore: velocidad de procesamiento, capacidad de memoria, sensores e incluso el número y tamaño de píxeles en las cámaras digitales. Todos estos están mejorando a tasas (aproximadamente) exponenciales también.
Como alguien que tiene experiencia en arquitectura de computadoras, no entiendo por qué agregar más transistores en una CPU aumentaría su potencia, ya que, en última instancia, las instrucciones se leen / ejecutan aproximadamente de forma secuencial. ¿Alguien podría explicar qué parte me falta?
Respuestas:
Muchas cosas que te dan más potencia solo requieren más transistores para construirlas. Los buses más anchos aumentan la cuenta del transistor en casi todos los componentes del procesador. Los cachés de alta velocidad agregan transistores de acuerdo con el tamaño del caché. Si alarga una tubería, necesita agregar etapas y unidades de control más complejas. Si agrega unidades de ejecución para ayudar a mitigar un cuello de botella en la tubería, cada una de ellas requiere más transistores, y luego los controles para mantener las unidades de ejecución asignadas agrega aún más transistores.
La cuestión es que, en un circuito electrónico, todo sucede en paralelo. En el mundo del software, lo predeterminado es que las cosas sean secuenciales, y los diseñadores de software se esfuerzan mucho para lograr el paralelismo integrado en el software para que pueda aprovechar la naturaleza paralela del hardware. El paralelismo significa que suceden más cosas al mismo tiempo, por lo que equivale aproximadamente a la velocidad; Cuantas más cosas se puedan hacer en paralelo, más rápido podrá hacer las cosas. El único paralelismo real es lo que obtienes cuando tienes más transistores en el trabajo.
fuente
Las primeras instrucciones no necesariamente se "ejecutan secuencialmente" incluso en un ISA no VLIW, la ejecución solo debe aparecer secuencialmente. Una implementación superescalar en orden puede ejecutar más de una instrucción en paralelo con otra. Para hacer esto de manera efectiva, se debe aumentar (ampliar) el hardware para las instrucciones de decodificación, se debe agregar hardware para garantizar la independencia de los datos de las instrucciones que se ejecutarán en paralelo, se deben aumentar los recursos de ejecución y generalmente se aumenta el número de puertos de archivo de registro. Todos estos agregan transistores.
Una implementación fuera de orden, que permite que las instrucciones posteriores se ejecuten antes que las anteriores, siempre que no existan dependencias de datos, utiliza hardware adicional para manejar la programación de instrucciones tan pronto como los datos estén disponibles y agrega registros de renombrar y hardware para mapeo, asignar y liberarlos (más transistores) para evitar riesgos de escritura después de leer y escribir después de escribir. La ejecución fuera de orden permite al procesador evitar el estancamiento.
El reordenamiento de cargas y almacenes en un procesador fuera de servicio requiere asegurarse de que los almacenes anteriores en el orden del programa reenvíen resultados a cargas posteriores de la misma dirección. Esto implica la lógica de comparación de direcciones, así como el almacenamiento de las direcciones (y el tamaño) de las tiendas (y el almacenamiento de los datos) hasta que la tienda se haya confirmado en la memoria (el caché). (Para un ISA con un modelo de consistencia de memoria menos débil, también es necesario verificar que las cargas se ordenan correctamente con respecto a las tiendas de otros procesadores, más transistores).
La canalización agrega algo de control adicional y sobrecarga de almacenamiento en búfer y evita la reutilización de la lógica para diferentes partes del manejo de instrucciones, pero permite que las diferentes partes del manejo de una instrucción se superpongan a tiempo para diferentes instrucciones.
La canalización y la ejecución superescalar aumentan el impacto de los riesgos de control (es decir, ramas condicionales y saltos). La canalización (y también la ejecución fuera de orden) puede retrasar la disponibilidad del objetivo incluso de saltos incondicionales, por lo que agregar hardware para predecir los objetivos (y la dirección de las ramas condicionales) permite que continúe la búsqueda de instrucciones sin esperar la parte de ejecución del procesador para poner a disposición los datos necesarios. Los predictores más precisos tienden a requerir más transistores.
Para un procesador fuera de servicio, puede ser deseable permitir que se ejecute una carga de memoria antes de que se hayan calculado las direcciones de todas las tiendas anteriores, por lo que se requiere algún hardware para manejar dicha especulación, que podría incluir un predictor.
Los cachés pueden reducir la latencia y aumentar el ancho de banda de los accesos a la memoria, pero agregan transistores para almacenar los datos y almacenar etiquetas (y comparar etiquetas con la dirección solicitada). También se necesita hardware adicional para implementar la política de reemplazo. La captación previa de hardware agregará más transistores.
La implementación de la funcionalidad en hardware en lugar de software puede aumentar el rendimiento (al tiempo que requiere más transistores). Por ejemplo, administración de TLB, operaciones complejas como operaciones de multiplicación o coma flotante, operaciones especializadas como contar ceros iniciales. (Agregar instrucciones también aumenta la complejidad de la decodificación de instrucciones y, por lo general, también la complejidad de la ejecución, por ejemplo, para controlar qué partes del hardware de ejecución se utilizarán).
Las operaciones SIMD / vector aumentan la cantidad de trabajo realizado por instrucción pero requieren más almacenamiento de datos (registros más amplios) y generalmente usan más recursos de ejecución.
(El subprocesamiento múltiple especulativo también podría permitir que múltiples procesadores ejecuten un solo programa de subprocesos más rápido. Obviamente, agregar procesadores a un chip aumentará el recuento de transistores).
Tener más transistores disponibles también puede permitir a los arquitectos informáticos proporcionar a un ISA más registros visibles para el software, lo que puede reducir la frecuencia de los accesos a la memoria, que tienden a ser más lentos que los accesos de registro e implican cierto grado de indirección (por ejemplo, agregar un desplazamiento a la pila puntero) que aumenta la latencia.
La integración, que aumenta la cantidad de transistores en un chip pero no en el sistema, reduce la latencia de comunicación y aumenta el ancho de banda, lo que obviamente permite un aumento en el rendimiento. (También hay una reducción en el consumo de energía que puede traducirse en un mayor rendimiento).
Incluso en el nivel de ejecución de instrucciones, agregar transistores puede aumentar el rendimiento. Por ejemplo, un sumador de selección de acarreo agrega bits superiores dos veces en paralelo con diferentes supuestos del arrastre de los bits inferiores, seleccionando la suma correcta de los bits superiores cuando está disponible la realización de los bits inferiores, lo que obviamente requiere más transistores que un simple Ondulación de carga sumador pero reduciendo el retraso en la producción de la suma total. Del mismo modo, un multiplicador con una sola fila de sumadores de transporte de carga usa menos transistores (pero es más lento) que un multiplicador de árbol Dadda (o Wallace) y no se puede canalizar (por lo que tendría que replicarse para permitir que otra multiplicación comience la ejecución mientras que antes multiplicar estaba en progreso).
¡Lo anterior puede ser agotador pero no exhaustivo!
fuente
El número de transistores no se correlaciona necesariamente con más potencia de procesamiento, sin embargo, con más transistores, el procesador puede realizar instrucciones cada vez más complicadas que antes. Por ejemplo, un procesador con SSE usará transistores adicionales para implementar estas complejas instrucciones (agregando muchos números en un ciclo, por ejemplo).
fuente
Otro factor: a medida que aprieta más transistores en un área determinada, se vuelven más pequeños, haciéndolos más rápidos.
fuente
Los microprocesadores han avanzado significativamente en los últimos años, cosas como tuberías más largas, ramificaciones predicativas y en caché de chip se han agregado a las complejidades asociadas con un procesador.
Claro, lo básico del procesamiento de la CPU, buscar, decodificar, ALU, escribir sigue siendo el mismo, pero para acelerar las cosas, se utilizan tuberías más largas. Las tuberías más largas aumentan el rendimiento para la ejecución continua de código, pero también incurren en tiempos de impacto mayores cuando las ramificaciones de código dañan el rendimiento. Remedio, ramificación predictiva. La bifurcación predictiva es un secreto comercial, ya que Intel no suele revelar el funcionamiento completo, simplemente lo usa para mantener el rendimiento lo más alto posible en sus CPU.
La memoria caché es mucho más rápida que la RAM, pero ¿qué pasar de RAM a caché y de caché a RAM? Eso es otra vez, material patentado, pero nuevamente se necesitan transistores para implementar.
Entonces, los transistores adicionales van a cosas como la tubería más larga, los algoritmos de ramificación predictivos, la memoria caché y los algoritmos de memoria.
Esto es sin mencionar los procesadores multinúcleo y los controladores de acceso compartido de memoria / recursos.
fuente