Enfrentados a todos los problemas y limitaciones que la arquitectura NetBurst les dió en los últimos dos años, los Ingenieros de Intel se propusieron 2 metas fundamentales en esta nueva arquitectura: una es una mayor performance por clock que la arquitectura anterior y la otra es un menor consumo de energía, son 2 metas que, curiosamente van en contra de lo que Intel nos estuvo mostrando en sus últimos procesadores Presler por ejemplo. Aquí es donde vemos como las falencias en la arquitectura NetBurst no fueron tomadas como una derrota por parte de Intel sinó como una forma de poder mejorarse y es justamente por eso que las metas que se impusieron esta vez fueron bien claras y muy exigentes.
En cualquier diseño de procesadores, hay ciertas variables matemáticas que se deben respetar, ya que son estas las bases para lograr una arquitectura eficiente, estas son, "C dynamic", Voltaje y Frecuencia. Estas 3 variables dictan el consumo, frecuencia y movimiento de bits a lo largo de una arquitectura determinada. Debido a que estas variables se encuentran conectadas entre sí cualquier modificación a una, afecta a la otra.
Lo primero que vemos es que la relación Voltaje x Frecuencia es 2 veces mayor, esto quiere decir, que por cada vez que el procesador sube linealmente su frecuencia de operación, aumenta de forma cuadruple su consumo de energía, esto es perfectamente válido en Overclocking, ya que aplicamos el concepto opuesto para la misma ecuación, cuando un procesador llega a su límite de clock, es necesario subir el voltaje para permitirle obtener un clock mas alto. Pero, como bien vemos en la ecuación, es necesario cuadruplicar el voltaje necesario para apenas subir linealmente su frecuencia. Al ver estos valores, se hizo claro para Intel que elevar su frecuencia de operación no es una opción, como tampoco jugar con el voltaje. La otra forma de elevar la performance de un procesador es claro está aumentando la cantidad de unidades de ejecución que conlleva en general, a aumentar la eficiencia, esto es, la cantidad de instrucciones por ciclo de reloj que un procesador puede realizar, pero es aqu?donde aparece la siguiente limitación.
El valor que todavía no mencionamos es el "C dynamic", explicar el funcionamiento de esta variable y que es exactamente lo que significa no es facil, es por eso que voy a intentar expresarlo en castellano, para que pueda ser entendido. C dynamic es el valor que expresa el producto de un area de actividad de bits, o lo que es lo mismo que decir "cuantos bits" existen en un momento dado en nuestra area determinada, para este caso, el procesador. La cantidad de bits que en un momento determinado se mueven en el procesador determina el area total del "C dynamic", como pueden ver, es un area no definida por un espacio físico ni por silicio, sinó mas bien por "bits activos" en la arquitectura. El problema con esta variable es, que a mayor número de bits activos, existe claro está mayor energía y por ende, se eleva nuevamente el voltaje del procesador, negando toda posibilidad de lograr una arquitectura con bajo consumo.
Para elevar efectivamente la performance, se deben aumentar la cantidad de unidades de ejecución, esto conlleva a una mayor cantidad de transistores y por ende, potencialmente mayor cantida de bits activos en un momento dado en el procesador, esto directamente nos lleva a un aumento en el nivel de energía que el procesador consume y por ende, aparece nuestro dilema
El problema se evidencia en procesadores como el Presler, donde una excesiva cantidad de transistores y su largo Pipeline de Ejecución provocan una gran cantidad de "bits activos" combinado esto con la baja eficiencia de instrucciones por segundo y con una alto clock elevan el consumo de energía a niveles desproporcionados, es por esto que el proceso de manufactura no afecta ni contribuye automáticamente a una mejor eficiencia en el procesador ni en el consumo, ya que el area de "C dynamic" no se encuentra definida por un proceso de miniaturización.
Aquí Intel se enfrenta a su segundo dilema, ya que debe lidiar con el problema de mejorar la arquitectura por medio de una mejor unidad de ejecución sin que esto introduzca una mayor carga de "bits activos", para lo cual recurrió a una serie de "trucos" por así decirlo que aprendió a lo largo del tiempo y por sobre todo con sus últimos procesadores Pentium-M. Acompañenme en el análisis de la arquitectura y descubramos que es exactamente lo que hizo Intel con su "Core Arquitecture"
En base a esta descripción, vamos a analizar punto por punto para investigar porque esta nueva arquitectura es mas eficiente y consume menos energía.
Aquí vemos un diagrama de la arquitectura completa, con sus 4 unidades de ejecución, el Cache compartido de 2M/4M dependiendo del modelo de procesador, la unidad de ejecución fuera de orden, el Scheduler y el Instruction Fetch y PreDecode, vamos a analizar cada punto por separado.
Como expliqué anteriormente, una de las claves para mejorar la eficiencia de la arquitectura es la inclusión de una unidad de ejecución mas amplia, en este caso, se trata de 4 unidades y viendo que su Pipeline de operación es bastante corto con 14 estados (recuerden que uno de los primeros Pentium4 ya tenían mas de 20 stages), esto le permite al Conroe obtener una mejor performance por Clock que sus hermanos basados en NetBurst, sin embargo, una unidad de ejecución mas amplia no garantiza automáticamente un procesador eficiente por lo cual Intel introduce algunas capacidades extras a la arquitectura Core
La nueva arquitectura ahora puede manejar hasta 4 instrucciones por ciclo de reloj, esto implica que puede hacer un "fetch", "dispatch", "execute" y "retire" de hasta 4 instrucciones completas por ciclo de reloj, esto le da una ventaja con respecto a procesadores AMD como también los propios Pentium4/D que tan solo pueden manejar 3 por ciclo de reloj, además de esto, Intel perfecciona la unidad de "decode" de la siguiente manera.
La nueva característica se denomina "Macro-Fusion", como funciona, primero veamos como se realiza la ejecución de instrucciones en una arquitectura moderna. Para que una instrucción sea exitosamente ejecutada, debe pasar primero por la unidad de "decodificación" que se encarga de convertir esa instrucción a una denominada "micro-op" que en pocas palabras es una micro operación que puede ser entendida por la unidad de ejecución. Todas las intrucciones que llegan al procesador son entonces convertidas a "matro-ops" antes de ser ejecutadas. Ahora bién, cuando Intel se encontraba investigando como mejorar la efectividad, descubrió que ciertas instrucciones tenían cierta afinidad con otras y que podrían "fundirse" para abreviar el trabajo y así mejorar el rendimiento, a esta técnica la denominó "Macro-Fusion".
Cuando 2 instrucciones que son candidato a ser fundidas se encuentran, estas se mandan a la unidad de decodificación que determina la "fusión" de estas instrucciones que luego le permitiran ser representadas por una simple "micro-op", por lo tanto, una vez que esta micro-op llega a la unidad de ejecución, la misma es vista como una instrucción simple, esta abreviación no solo elimina una enorme cantidad de datos que le permiten aumentar el rendimiento de las unidades de ejecución, sinó que al fundir instrucciones, reduce considerablemente la cantidad de micro-ops que debe ejecutar por ende aumentar la efectividad del procesador, dándole la apariencia de tener una unidad de ejecución mucho mas ámplia y a su vez bajando el valor de la variable "C dynamic" que vimos anteriormente gracias a que ahora hay muchos menos "bits" en un momento dado. Aumenta la simplicidad, baja el tiempo de ejecución y mantiene el consumo en un nivel bajo.
Podemos ver como se indica un 15% de reducción en cantidad de instrucciones lo cual implica un 10% de reducción en la cantidad de micro-ops que son enviadas a las unidades de ejecución.
Páginas: « Anterior | 1 2 3 4 5 6 7 | Siguiente »