En arquitectura informática , la ley de hierro del rendimiento del procesador (o simplemente ley de hierro del rendimiento) describe el equilibrio de rendimiento entre la complejidad y la cantidad de instrucciones primitivas que los procesadores utilizan para realizar cálculos. [1] Esta formulación de la compensación impulsó el desarrollo [ cita necesaria ] de computadoras con conjunto de instrucciones reducido (RISC) cuyas arquitecturas de conjunto de instrucciones (ISA) aprovechan un conjunto más pequeño de instrucciones básicas para mejorar el rendimiento. El término fue acuñado por Douglas Clark [2] basándose en una investigación realizada por Clark y Joel Emer en la década de 1980. [3]
El rendimiento de un procesador es el tiempo que tarda en ejecutar un programa: . Esto se puede dividir en tres factores: [4]
La selección de la arquitectura de un conjunto de instrucciones afecta , mientras que está determinada en gran medida por la tecnología de fabricación. ISA de computadora con conjunto de instrucciones complejas clásicas (CISC) optimizadas al proporcionar un conjunto más grande de instrucciones de CPU más complejas . Sin embargo, en términos generales, las instrucciones complejas inflan el número de ciclos de reloj por instrucción porque deben decodificarse en microoperaciones más simples que realmente realiza el hardware. Después de convertir el binario X86 a las microoperaciones utilizadas internamente, el número total de operaciones se acerca al que se produce para un RISC ISA comparable. [5] La ley de hierro del rendimiento del procesador hace explícita esta compensación e impulsa la optimización en su conjunto, no solo de un solo componente.
Si bien se atribuye a la ley de hierro el mérito de impulsar el desarrollo de arquitecturas RISC, [ cita necesaria ] no implica que una ISA más simple sea siempre más rápida. Si ese fuera el caso, el ISA más rápido consistiría en lógica binaria simple. Una sola instrucción CISC puede ser más rápida que el conjunto equivalente de instrucciones RISC cuando permite realizar múltiples microoperaciones en un solo ciclo de reloj. En la práctica, sin embargo, la regularidad de las instrucciones RISC permitió una implementación canalizada donde el tiempo total de ejecución de una instrucción era (normalmente) ~5 ciclos de reloj, pero cada instrucción seguía la instrucción anterior ~1 ciclo de reloj después [ cita requerida ] . Los procesadores CISC también pueden lograr un mayor rendimiento utilizando técnicas como extensiones modulares, lógica predictiva, instrucciones comprimidas y fusión de macrooperaciones. [6] [5] [7]