Un ciclo de instrucción incluye los
siguientes subciclos:
- Captación: llevar la siguiente instrucción de la memoria al procesador.
- Ejecución: interpretar el código de operación y llevar a cabo la operación indicada.
- Interrupción: si las interrupciones están habilitadas y ha ocurrido una interrupción, guardar el estado del proceso actual y atender la interrupción.
El
Ciclo Indirecto
La ejecución de una instrucción puede
involucrar a uno o más operandos en memoria, cada uno de los cuales requiere un
acceso a memoria. Además, si se usa direccionamiento indirecto serán necesarios
accesos a memoria adicionales.
Podemos considerar la captación de
direcciones indirectas como un subciclo de instrucción más. El resultado se
muestra en la Figura 12.4. La principal línea de actividad consiste en alternar
las actividades de captación y ejecución
de instrucciones. Después de que una instrucción sea captada, es examinada para
determinar si incluye algún direccionamiento indirecto. Si es así, los
operandos requeridos se captan usando direccionamiento indirecto. Tras la
ejecución se puede procesar una interrupción antes de la captación de la siguiente
instrucción.
En la Figura 12.5, que es una versión
revisada de la Figura 3.12, se muestra otra forma de ver este proceso. Esta
nueva figura ilustra más correctamente la naturaleza del ciclo de instrucción.
Una vez que una instrucción es captada, deben identificarse sus campos de
operandos. Se capta entonces de la memoria cada operando de entrada, y este
proceso puede requerir direccionamiento indirecto. Los operandos ubicados en
registros no necesitan ser captados. Una vez que se ejecuta la operación, puede
ser necesario un proceso similar para almacenar el resultado en la memoria
principal.
2.3.1
Ciclo Fetch-Decode-Execute
Procedimiento bien establecido
Fases(o sub ciclos): búsqueda y ejecución (cada fase tiene etapas o
actividades)
FASE FETCH
- Cargar la siguiente instrucción
- Incrementar el secuenciador
- Interpretar la Instrucción
FASE EXECUTE
- Cargar los operandos
- Ejecutar la operación
- Guardar el resultado
- Verificar si hay solicitudes de interrupción
2.3.
Elementos Para Construir El CPU.
Un conjunto de instrucciones o
repertorio de instrucciones, juego de instrucciones o ISA (del inglés
Instruction Set Architecture, Arquitectura del Conjunto de Instrucciones) es
una especificación que detalla las instrucciones que una CPU de un ordenador
puede entender y ejecutar, o el conjunto de todos los comandos implementados
por un diseño particular de una CPU. El término describe los aspectos del
procesador generalmente visibles a un programador, incluyendo los tipos de
datos nativos, las instrucciones, los registros, la arquitectura de memoria y
las interrupciones, entre otros aspectos.
Existen principalmente de 3 tipos:
CISC (Complex Instruction Set Computer), RISC (Reduced Instruction Set
Computer) y SISC (Simple Instruction Set Computing).
La arquitectura del conjunto de
instrucciones (ISA) se emplea a veces para distinguir este conjunto de
características de la microarquitectura, que son los elementos y técnicas que
se emplean para implementar el conjunto de instrucciones. Entre estos elementos
se encuentran las microinstrucciones y los sistemas de caché.
Procesadores con diferentes diseños
internos pueden compartir un conjunto de instrucciones; por ejemplo, el Intel
Pentium y AMD Athlon implementan versiones casi idénticas del conjunto de
instrucciones x86, aunque tienen diseños diferentes.
Características que debe tener un
conjunto de instrucciones:
Las características que se pretende
que tenga un conjunto de instrucciones son cuatro, principalmente:
- Completo: Que se pueda realizar en un tiempo finito cualquier tarea ejecutable con un ordenador (computable o decidible).
- Eficiente: Que permita alta velocidad de cálculo sin exigir una elevada complejidad en su UC y ALU y sin consumir excesivos recursos (memoria), es decir, debe cumplir su tarea en un tiempo razonable minimizando el uso de los recursos.
- Autocontenidas: Esto es, que contengan en sí mismas toda la información necesaria para ejecutarse.
- Independientes: Que no dependan de la ejecución de alguna otra instrucción.
Se puede comprobar que para que un
conjunto de instrucciones sea completo solo se necesitan cuatro instrucciones:
- Escritura
- Mover a la izquierda una posición y leer
- Mover a la derecha una posición y leer
- Parar
En esta idea se basan las arquitecturas
RISC, no obstante, con este conjunto no se puede conseguir la eficiencia del
repertorio de instrucciones por lo que en la práctica el conjunto suele ser más
amplio en aras de conseguir un mejor rendimiento, tanto en uso de recursos como
en consumo de tiempo.
2.3.4
Modos de Direccionamiento.
Contar con diferentes formatos de
instrucciones, implica contar con diferentes formas de obtener los operandos de
las instrucciones. Por lo general a estas múltiples formas se les conoce como
modos de direccionamiento. Los modos de direccionamiento en MIPS son:
Direccionamiento por registro, donde
los operandos son registros. Los datos a operar están contenidos en 2 registros
de 32 bits y el resultado será colocado en otro registro, del mismo tamaño.
Ejemplos de instrucciones que usan
este modo de direccionamiento: add, sub, slt, etc.
Direccionamiento base o
desplazamiento, donde uno de los operandos está en una localidad de memoria
cuya dirección es la suma de un registro y una constante que forma parte de la
misma instrucción.
Ejemplos de instrucciones que usan
este modo de direccionamiento: lw, sw, etc.
Direccionamiento inmediato, donde uno
de los operandos es una constante que está en la misma instrucción.
Ejemplos de instrucciones que usan
este modo de direccionamiento: addi, slti, etc.
Direccionamiento relativo al PC,
donde se forma una dirección sumando una constante, que está en la instrucción,
con el registro PC (Program Counter). El resultado de la suma corresponde a la
dirección destino si un brinco condicional se va a realizar.
Ejemplos de instrucciones que usan
este modo de direccionamiento: beq y bne.
Direccionamiento pseudo directo,
donde la dirección destino de un salto corresponde a la concatenación de 26
bits que están en la misma instrucción con los bits más significativos del PC.
Ejemplos de instrucciones que usan
este modo de direccionamiento: j y jal.
Es importante mencionar que estamos
estudiando una arquitectura con direcciones de 32 bits, sin embargo, MIPS, como
muchas otras arquitecturas, tiene una extensión que maneja direcciones de 64
bits. Esto como una respuesta a la necesidad de manejar programas cada vez más
grandes.
GG
ResponderBorrar