¿Qué es la Ley de Amdahl y cómo se aplica a la informática?

¿Qué es la Ley de Amdahl y cómo se aplica a la informática?

Rodrigo Alonso

Es probable que si eres un gran aficionado al hardware, o bien si has estudiado algo relacionado con las tecnologías de la información, en algún momento hayas escuchado hablar de la Ley de Amdahl. En cualquier caso, si tienes curiosidad en este artículo te vamos a explicar lo que es y cómo afecta a la informática que todos conocemos, y más concretamente al hardware.

La Ley de Amdahl se llama así por Eugene Amdahl, el arquitecto informático que formuló dicha ley. En la informática moderna y más concretamente para el desarrollo, se utiliza para averiguar la mejora de un sistema cuando solo una parte de éste es mejorado. ¿Te suena a chino? Pues sigue leyendo, que en breve te lo explicamos de manera sencilla.

Eugene Amdahl

¿Qué es la Ley de Amdahl y para qué sirve?

La definición de esta ley establece que: «La mejora obtenida en el rendimiento de un sistema debido a la alternación de uno de sus componentes está limitada por la fracción de tiempo que se utiliza dicho componente».

Arriba podéis ver la fórmula, donde:

  • Fm es la francción de tiempo que el sistema utiliza el subsistema mejorado.
  • Am es el factor de mejora que se ha introducido en el sistema.
  • Ta es el tiempo de ejecución antiguo.
  • Tm es el tiempo de ejecución mejorado.

Esta fórmula se puede reescribir usando la definición de incremento de velocidad para poder calcular la ganancia de velocidad (A):

Fórmula Ganancia de velocidad

Con la definición de esta ley es probable que te hayas quedado igual, así que vamos a explicártela con nuestras propias palabras; esta ley lo que nos dice es que la mejora de rendimiento de un sistema (entendiéndose por sistema un conjunto de piezas como puede ser un PC) cuando cambias una única pieza, está limitada por el tiempo que se utilice dicho componente.

Dicho de otra manera con un ejemplo: la mejora de rendimiento de tu PC cuando le cambias la memoria RAM está limitada por el tiempo que vayas a utilizar dicho componente. Ahora mejor, ¿verdad? Pero esto seguramente te genere otra pregunta, ¿qué tendrá que ver el tiempo que uses el componente para la mejora de rendimiento? Para entenderlo veamos otro ejemplo.

Si en un programa de PC la velocidad de ejecución de un algoritmo (como puede ser la operación de un procesador) supone el 30% del tiempo de ejecución del total que tarda el programa en ejecutar la orden, y conseguimos hacer que ese algoritmo se ejecute en la mitad de tiempo tendremos:

  • Am = 2
  • Fm = 0,3
  • A = 1,8

Lo que significa que la velocidad de ejecución del programa habrá mejorado en un factor de 1,8 y eso solo modificando uno de sus subsistemas.

¿Para qué sirve esta ley en informática?

Después de contaros la teoría, ¿para qué sirve esta ley en la práctica? Básicamente la utilizan los ingenieros de sistemas, tanto de hardware como de software, simplemente para definir si introducir una mejora en su sistema merece o no la pena.

Dado que el incremento de velocidad de un programa utilizando múltiples núcleos de un procesador (o múltiples procesadores, da igual) en computación distribuida está limitada por la fracción secuencial del programa, con la Ley de Amdahl podrán ya no solo calcular, sino ver gráficamente si el mejorar el rendimiento de uno u otro componente merecerá o no la pena, y hasta qué punto.

De esta manera, podrán ver por ejemplo si mejorar el desempeño de los transistores de un procesador en, digamos, un 50%, merecerá la pena según crece el número de transistores y durante cuánto tiempo se vayan a utilizar en cada una de las operaciones que ejecuta el procesador.