Hoy voy a explicar la Ley de Amdahl y por qué tu ordenador no mejora cuando amplías alguna parte de él, como, por ejemplo, la memoria RAM. Ésta ley fue enunciada en 1967 por el arquitecto de computadores Gene Myron Amdahl.
Gene M. Amdahl nació en el año 1922 en Flandreau, Dakota del Sur. Trabajó para IBM, pero posteriormente abandonó la compañía al no estar contento con el sistema burocrático mediante el cual funcionaba la misma. A partir de 1970 creó la Amdahl Corporation para competir con IBM. Sus desarrollos en ésta compañía obligaron a IBM a emplear un mayor presupuesto en investigación para poder ser competitivos. Sin embargo, en 1980, abandonó su propia compañía para fundar Trilogy Systems, especializada en el diseño de ordenadores de alta capacidad con un alcance de procesamiento mucho mayor que el ofrecido por cualquier producto de IBM o Amdahl Corp. hasta ése momento. Después fundó otras dos compañías especializadas en la fabricación de microchips, pero no consiguió que ninguna de las dos funcionase.
Según dice la ley de Amdahl:
La mejora en el rendimiento de un sistema debido a la alteración de uno de sus componentes está limitada por la cantidad de tiempo que se utiliza dicho componente.
Dicho de otro modo: si ampliamos la memoria RAM de nuestro equipo, pero nuestro programa está leyendo mucho de disco duro, la mejora que repercute sobre el programa será mínima.
Pongamos un ejemplo más concreto: Un videojuego muy potente no va del todo bien en un equipo que tenemos una tarjeta gráfica normal, 4GB de memoria RAM DDR3 a 1333MHz y un procesador Intel core i3 a 2,5GHz. Para poder jugar al juego con mayor soltura, dado que no tenemos presupuesto para una tarjeta gráfica buena, decidimos cambiar la memoria RAM por una de 1866MHz, ya que ésta sale más barata. Sin embargo, cuando vamos a probar el juego, observamos que sigue prácticamente igual, sin ninguna mejora apreciable a simple vista en el rendimiento del mismo.
¿Qué ha pasado aquí? Simple: el videojuego, probablemente, requiere de una gráfica mucho mejor, ya que es lo que más suele requerir este tipo de aplicaciones. Al ser más barata la memoria RAM, decidimos ampliar la misma, pero probablemente la velocidad de acceso de la que ya teníamos era de sobra para el videojuego.
Parece que esté dando una visión fatalista de todo esto, pero es así, debemos pensar un poco cual es el “cuello de botella” de nuestro sistema cuando ejecutamos una aplicación para saber como mejorar nuestro equipo, ya que: “Un sistema es tan rápido como el más lento de sus componentes”.
La ley de Amdahl no solo es un enunciado teórico. La mejora implicada de un componente se puede cuantificar mediante la siguiente ecuación:
En la ecuación anterior, A es la aceleración o ganancia de un sistema con la mejora, también llamado speed-up; Fm es la fracción de tiempo que se emplea la mejora introducida; y Am es el factor de mejora.
Por ejemplo, en el caso del videojuego, podríamos suponer, a forma de ejemplo, que se ejecutan instrucciones de procesado el 30% del tiempo, instrucciones de tarjeta gráfica el 60% y lecturas de memoria el 10% del tiempo. De ésta forma, hemos introducido una mejora de: 1866/1333 = 1,39 durante un 10% del tiempo. Lo que quiere decir que, en la ecuación anterior: Am=1,39 y Fm=0,1. Por lo tanto, si operamos, tenemos que la mejora o speed-up A es: 1,029. Ésto quiere decir que el juego correrá un 2,9% más que antes.
Si hubiésemos aplicado la mejora sobre la tarjeta gráfica, imaginando que la mejora se conserva en 1,39, el tiempo de uso de la mejora sería del 60%, por lo que Fm=0,6. Así pues el speed-up sería: 1,21; es decir, el juego correría un 21% más que antes.
Claro está que ejemplo anterior es algo muy teórico. En realidad es muy complicado saber cuánto utiliza un programa la tarjeta gráfica, el procesador, la memoria, el disco… Lo que si podemos saber es, si el programa tiene un tipo de componente que utilice más según el tipo de actividad que realiza: ¿Escribe y lee de disco? ¿Realiza cálculos matemáticos? ¿Ejecuta gráficos muy detallados? En base a esto podemos saber qué es lo que más nos influye en un ordenador a la hora de ejecutar el programa, y mejoraremos el equipo en consecuencia a ello.
Pero no nos engañemos, por lo general, esto solo se tiene en cuenta cuando se trata de mejorar sistemas avanzados que se dedican a cálculos científicos, grandes centros de computación, servidores, y éste tipo de sistemas informáticos industriales o profesionales. ¿Cómo podemos utilizar la ley de Amdahl a nuestro favor? Pues muy simple. Cuando vayamos a comprar un nuevo equipo, por ejemplo, podemos tener en cuenta si nos va a salir rentable gastarnos más dinero en una memoria de 1866MHz respecto a una de 1333Mhz, que ya os aventuro que no. Así podremos ahorrar de unos componentes que no vamos a sacar provecho y mejorar otros que sí.
El artículo La ley de Amdahl apareció por primera vez en Instinto Binario.