sábado, 6 de agosto de 2011

CPU - Procesamiento de Instrucciones

La unidad de Pre-Fetch se encarga de traer las instrucciones de la memoria. Primero, la unidad Fetch observa si la instrucción solicitada por el micro está en la L1, si no, ésta busca la instrucción en la cache L2. Si la instrucción tampoco está allí, entonces la unidad de Pre-Fetch ha fallado en la predicción de la próxima instrucción a ejecutar y esto se penaliza con un lento acceso a la memoria principal.

Cuando se enciende la computadora, las cache están vacías, por supuesto, pero a medida que el sistema comienza a cargar el sistema operativo, el micro inicia el procesamiento de las primeras instrucciones traídas desde el disco rígido, y el controlador de cache empieza a cargar las cache, y comienza el show. Luego de que la unidad de fetch graba las instrucciones requeridas por el micro a ser procesadas, las envía a la unida de decodificación (decode). La unida de decode observa qué tipo de instrucción es. Y esto lo hace consultando una memoria ROM que existe dentro del micro, denominada microcódigo.

El microcódigo le “enseña” al micro qué hacer. Es como una guía paso a paso para cada instrucción. Si la instrucción fuese por ejemplo ADD A+B su microcódigo le dirá a la unida de decode que éste necesita dos parámetros A y B. La unidad de decodificación entonces solicita al fetch las próximas dos posiciones de memoria, las cuales pertenecen a los valores de A y B. Luego el decode “transfiere” la instrucción y los datos a la unidad de ejecución.

Finalmente la unidad de ejecución llevará a cabo la instrucción y una vez terminado el procesamiento, los resultados se enviarán a la cache de datos (L1), y probablemente de allí a la memoria principal u otro lugar, como la tarjeta de video. Pero esto dependerá de la siguiente instrucción ha ser procesada, por ejemplo podría ser “mostrar el resultado en pantalla”.