45 votos

¿Por qué más transistores = más potencia de procesamiento?

Según Wikipedia, la potencia de procesamiento está estrechamente relacionada con la ley de Moore:

http://en.wikipedia.org/wiki/Moore's_law

El número de transistores que se pueden en un circuito integrado se ha se ha duplicado aproximadamente cada dos años. La tendencia ha durante más de medio siglo y no se espera que se detenga hasta 2015 o más tarde. Las capacidades de muchas dispositivos electrónicos digitales son fuertemente ligadas 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 están mejorando a un ritmo exponencialmente.

Como experto en arquitectura informática, no entiendo por qué añadir más transistores a una CPU aumentaría su potencia, ya que, en última instancia, las instrucciones se leen/ejecutan secuencialmente. ¿Alguien podría explicarme qué parte me estoy perdiendo?

31voto

SQLMenace Puntos 68670

Muchas cosas que dan más potencia sólo requieren más transistores para construirlas. Los buses más anchos aumentan el número de transistores en casi todos los componentes del procesador. Las cachés de alta velocidad añaden transistores en función del tamaño de la caché. Si se alarga un pipeline, hay que añadir etapas y unidades de control más complejas. Si se añaden unidades de ejecución para ayudar a mitigar un cuello de botella en el pipeline, cada una de ellas requiere más transistores, y luego los controles para mantener las unidades de ejecución asignadas añaden aún más transistores.

La cosa es que en un circuito electrónico, todo ocurre en paralelo. En el mundo del software, lo normal es que las cosas sean secuenciales, y los diseñadores de software se esfuerzan mucho por incorporar el paralelismo al software para que pueda aprovechar la naturaleza paralela del hardware. Paralelismo significa más cosas sucediendo al mismo tiempo, lo que equivale aproximadamente a velocidad; cuantas más cosas se puedan hacer en paralelo, más rápido se pueden hacer las cosas. La única real El paralelismo es lo que se consigue cuando hay más transistores trabajando.

21voto

Paul A. Clayton Puntos 902

Las primeras instrucciones no se "ejecutan secuencialmente" necesariamente, incluso en un ISA no VLIW, la ejecución sólo tiene que parecer secuencial. Una implementación superescalar en orden puede ejecutar más de una instrucción en paralelo con otra. Para hacerlo con eficacia, hay que aumentar (ampliar) el hardware de descodificación de instrucciones, añadir hardware para garantizar la independencia de datos de las instrucciones que se van a ejecutar en paralelo, aumentar los recursos de ejecución y, en general, aumentar el número de puertos de archivos de registro. Todo ello añade 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 gestionar la programación de las instrucciones en cuanto los datos están disponibles y añade registros de renombre y hardware para asignarlos, asignarlos y liberarlos (más transistores) para evitar los peligros de escritura después de lectura y escritura después de escritura. La ejecución fuera de orden evita que el procesador se atasque.

La reordenación de cargas y almacenamientos en un procesador fuera de orden requiere garantizar que los almacenamientos anteriores en el orden del programa reenvíen los resultados a las cargas posteriores de la misma dirección. Esto implica una lógica de comparación de direcciones, así como el almacenamiento de las direcciones (y el tamaño) de los almacenes (y el almacenamiento de los datos) hasta que el almacén se haya consignado en la memoria (la caché). (Para una ISA con un modelo de consistencia de memoria menos débil, también es necesario comprobar que las cargas se ordenan correctamente con respecto a los almacenes de otros procesadores: más transistores).

El pipelining añade cierta sobrecarga adicional de control y almacenamiento en búfer e impide 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 solapen en el tiempo para diferentes instrucciones.

El pipelining y la ejecución superescalar aumentan el impacto de los riesgos de control (es decir, las ramas condicionales y los saltos). La canalización (y también la ejecución fuera de orden) puede retrasar la disponibilidad del objetivo incluso en los saltos incondicionales, por lo que añadir hardware para predecir los objetivos (y la dirección de las bifurcaciones condicionales) permite que la búsqueda de instrucciones continúe sin esperar a que la parte de ejecución del procesador ponga a disposición los datos necesarios. Los predictores más precisos suelen requerir más transistores.

Para un procesador fuera de orden, puede ser deseable permitir que una carga de memoria se ejecute antes de que se hayan calculado las direcciones de todos los almacenamientos precedentes, por lo que se requiere algún hardware para manejar tal especulación, incluyendo potencialmente un predictor.

Las cachés pueden reducir la latencia y aumentar el ancho de banda de los accesos a la memoria, pero añaden transistores para almacenar los datos y almacenar las etiquetas (y comparar las etiquetas con la dirección solicitada). También se necesita hardware adicional para aplicar la política de sustitución. La precarga por hardware añadirá más transistores.

Implementar la funcionalidad en hardware en lugar de software puede aumentar el rendimiento (aunque requiere más transistores). Por ejemplo, la gestión de la TLB, operaciones complejas como la multiplicación o las operaciones en coma flotante, operaciones especializadas como el recuento de ceros a la izquierda. (Añadir instrucciones también aumenta la complejidad de la descodificación de instrucciones y, normalmente, la complejidad de la ejecución también; por ejemplo, para controlar qué partes del hardware de ejecución se utilizarán).

Las operaciones SIMD/vectoriales aumentan la cantidad de trabajo realizado por instrucción, pero requieren más almacenamiento de datos (registros más amplios) y suelen utilizar más recursos de ejecución.

(El multithreading especulativo también podría permitir que varios procesadores ejecutaran más rápido un programa con un único hilo. Obviamente, añadir procesadores a un chip aumentará el número de transistores).

Disponer de más transistores también puede permitir a los arquitectos de ordenadores proporcionar una ISA con más registros visibles para el software, reduciendo potencialmente la frecuencia de los accesos a memoria, que suelen ser más lentos que los accesos a registros e implican cierto grado de indirección (por ejemplo, añadir un desplazamiento al puntero de la pila), lo que aumenta la latencia.

La integración -que aumenta el número de transistores en un chip pero no en el sistema- reduce la latencia de las comunicaciones y aumenta el ancho de banda, lo que obviamente permite aumentar el rendimiento. (También se reduce el consumo de energía, lo que puede traducirse en un aumento del rendimiento).

Incluso a nivel de ejecución de instrucciones, añadir transistores puede aumentar el rendimiento. Por ejemplo, un sumador de selección de acarreo suma los bits superiores dos veces en paralelo con distintos supuestos del acarreo de los bits inferiores, seleccionando la suma correcta de bits superiores cuando el acarreo de los bits inferiores está disponible, lo que obviamente requiere más transistores que un sumador de acarreo de rizado simple, pero reduce el retardo en producir la suma completa. Del mismo modo, un multiplicador con una sola fila de sumadores de carry-save utiliza 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 comenzara a ejecutarse mientras una multiplicación anterior estaba en curso).

Lo anterior puede resultar agotador, pero no es exhaustivo.

12voto

hromanko Puntos 548

El número de transistores no se corresponde necesariamente con una mayor potencia de procesamiento; sin embargo, con más transistores, el procesador puede ejecutar instrucciones cada vez más complicadas que antes. Por ejemplo, un procesador con SSE utilizará más transistores para ejecutar estas instrucciones complejas (sumar muchos números en un ciclo, por ejemplo).

3voto

YonahW Puntos 145

Los microprocesadores han avanzado mucho en los últimos años. Elementos como los pipelines más largos, las bifurcaciones predictivas y la caché en chip han aumentado la complejidad de los procesadores.

Por supuesto, los procesos básicos de la CPU (búsqueda, descodificación, ALU, escritura) siguen siendo los mismos, pero para acelerar las cosas se utilizan pipelines más largos. Los pipelines más largos aumentan el rendimiento de la ejecución continua del código, pero también provocan mayores tiempos de ejecución cuando las bifurcaciones del código dañan el rendimiento. Remedio, bifurcación predictiva. La bifurcación predictiva es un secreto comercial, del que Intel no suele revelar el funcionamiento completo, simplemente lo utiliza para mantener el rendimiento lo más alto posible en sus CPUs.

La memoria caché es mucho más rápida que la RAM, pero ¿qué hay que hacer para pasar de la RAM a la caché y de la caché a la RAM? De nuevo, se trata de una tecnología patentada, pero para implementarla se necesitan transistores.

Así que los transistores extra se destinan a cosas como el pipeline más largo, los algoritmos de bifurcación predictiva, la memoria caché y los algoritmos de memoria.

Esto sin mencionar los procesadores multinúcleo y los controladores de acceso a memoria/recursos compartidos.

0voto

Mark Biek Puntos 41769

Otro factor: a medida que se introducen más transistores en un área determinada, éstos se hacen más pequeños, lo que los hace más rápidos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X