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.