viernes, 21 de noviembre de 2014

2.3 El ciclo de instrucción.

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.

1 comentario: