CICLO
CICLO
CICLO
Universidad UDF
DE
INSTRUCCIONES
Ciclo de Fetch-DecodeExecute
1.- Buscar la instrucción en la memoria principal
• Entonces la CPU pasa la instrucción de la memoria principal a través del bus de datos al Registro
de Datos de Memoria (MDR).
• A continuación el valor del MDR es colocado en el Registro de Instrucción Actual (CIR), un circuito
que guarda la instrucción temporalmente de manera que pueda ser decodificada y ejecutada.
• También se lee la dirección efectiva de la memoria principal si la instrucción tiene una dirección
indirecta, y se recogen los datos requeridos de la memoria principal para ser procesados y
colocados en los registros de datos.
• A partir del registro de instrucción, los datos que forman la instrucción son decodificados por la
unidad de control.
• Ésta interpreta la información como una secuencia de señales de control que son enviadas a las
unidades funcionales relevantes de la CPU para realizar la operación requerida por la instrucción.
Ciclo de búsqueda
• Los pasos 1 y 2 del ciclo de instrucción se conocen como ciclo de búsqueda (fetch). Estos pasos
son idénticos en todas las instrucciones.
Ciclo de ejecución.
Los pasos 3 y 4 del ciclo de instrucción se conocen como ciclo de ejecución. Estos pasos cambiarán
con cada tipo de instrucción.
• El primer paso del ciclo de ejecución es el proceso de memoria, en que los datos se transfieren
entre la CPU y el módulo de entrada/salida (I/O).
• A continuación se produce el proceso de datos, que usa operaciones matemáticas, así como
operaciones lógicas en referencia a los datos.
• Después tiene lugar el paso de alteraciones centrales, que son una secuencia de operaciones, por
ejemplo, una operación de salto. El último paso es una operación combinada de todos los otros
pasos.
La segmentación de instrucciones
Es una técnica que permite implementar el paralelismo a nivel de instrucción en un único procesador.
La segmentación intenta tener ocupadas con instrucciones todas las partes del procesador
dividiendo las instrucciones en una serie de pasos secuenciales que efectuarán distintas unidades
de la CPU, tratando en paralelo diferentes partes de las instrucciones. Permite una mayor tasa de
transferencia efectiva por parte de la CPU que la que sería posible a una determinada frecuencia de
reloj, pero puede aumentar la latencia debido al trabajo adicional que supone el propio proceso de
la segmentación.
Número de pasos
El número de pasos dependientes varían según la arquitectura de la máquina. Algunos ejemplos:
• Entre 1956 y 1961, el proyecto IBM stretch proponía los términos Fetch (Lectura),
Decode (Decodificación) y Execute (Ejecución) que se convirtieron en habituales.
• La segmentación RISC clásica comprende:
1. Lectura de instrucción
2. Decodificación de instrucción y lectura de registro
3. Ejecución
4. Acceso a memoria
5. Escritura de vuelta en el registro
• Las microcontroladoras Atmel AVR y PIC disponen cada una de segmentación de
dos etapas.
• Muchos diseños incluyen segmentación de 7, 10 e incluso 20 etapas (como es el
caso del Pentium 4 de Intel).
• Los núcleos "Prescott" y "Cedar Mill" de la microarquitectura NetBurst de Intel,
utilizados en las versiones más recientes del Pentium 4 y sus derivados Pentium
D y Xeon, tienen una segmentación de 31 etapas.
• El "Xelerated X10q Network Processor" cuenta con una segmentación de más de
1000 etapas, si bien en este caso 200 de estas etapas representan CPU independientes
con instrucciones programadas de forma individual. Las etapas restantes se usan para
coordinar los accesos a la memoria y las unidades funcionales presentes en el chip.
Conforme la segmentación se hace más "profunda" (aumentando el número de pasos dependientes),
un paso determinado puede implementarse con circuitería más simple, lo cual puede permitir que el
reloj del procesador vaya más rápido. En inglés, las segmentaciones de este tipo pueden
llamarse superpipelines.
Se dice que un procesador está totalmente segmentado si puede leer una instrucción en cada ciclo.
Por tanto, si ciertas instrucciones o condiciones requieren un retardo que impide la lectura de nuevas
instrucciones, el procesador no está totalmente segmentado.
Tipos de instrucciones
Una máquina puede llegar a funcionar con un juego de instrucciones muy limitado (recuérdese, por
ejemplo, la máquina de Turing que sólo tiene 4 instrucciones, incluso se han diseñado máquinas
teóricas con menos instrucciones), esto simplificaría mucho los circuitos de la máquina. Sin embargo,
un conjunto de instrucciones demasiado simplificado origina, como consecuencia, unos programas
demasiado complejos e ineficientes. Es necesario encontrar un compromiso entre la simplicidad del
hardware y del software. Un mínimo para llegar a ese compromiso se consigue con los tipos de
instrucciones siguientes: Instrucciones de transferencia de datos. Instrucciones aritméticas.
Instrucciones lógicas. Instrucciones de control del flujo del programa (bifurcaciones, bucles,
procedimientos, etc.) Instrucciones de entrada y salida. En los apartados siguientes iremos viendo
con detalle algunos de estos tipos de instrucciones. Si bien es cierto que el conjunto de instrucciones
debe de cumplir unos mínimos para conseguir una mínima eficiencia en los programas, también se
verá que ésta no se aumenta indefinidamente al incrementar el número de instrucciones de la
máquina.