EJECUCIÓN DE INSTRUCCIONES La función básica
que realiza un computador es la ejecución de un programa.
Un programa consiste en un conjunto de instrucciones y datos
almacenados en la unidad de memoria. La CPU es la encargada de
ejecutar las instrucciones especificadas en el programa.
EJECUCIÓN DE INSTRUCCIONES(2) La secuencia de operaciones
realizadas en la ejecución de una instrucción
constituye lo que se denomina ciclo de instrucción. Lo
más cómodo es considerar que el procesamiento del
ciclo de instrucción consta de dos fases:
a) Fase de Búsqueda
b) Fase de Ejecución
EJECUCIÓN DE INSTRUCCIONES(3) La culminación de
cada una de estas fases necesita de uno a seis ciclos de
reloj.
Fase de Búsqueda: (1) Transferir el contenido del Contador
de Programa (CP) al registro de Direcciones (RD). 1. 2. 3. 4.
Pasar a registro de Memoria (RM) el dato almacenado en la
dirección de memoria indicada por RD. Transferir el dato
leído desde el RM al registro de instrucción (RI).
Incrementar el valor del Contador de Programa para apuntar a la
instrucción siguiente.
Esquema básico de un computador didáctico
PARTES DEL COMPUTADOR
Fase de Búsqueda: (2) Registro de Direcciones Registro de
Instrucciones Registro de Memoria Registro Contador de Programa
5º Decodificación …
Fase de Ejecución: (3) comprende el conjunto de
operaciones elementales específicas de la
instrucción en curso. 5. Decodificación de la
Instrucción. Por ejemplo la Instrucción ADD. (la
instrucción es cambiada por su código
máquina correspondiente) 6. Transferencia del campo
“CD” de la instrucción en curso ( este campo
contiene la dirección de memoria en la que se encuentra el
operando, y que se encuentra en el registro RI desde que
finalizó la fase de búsqueda), al registro RD. Se
inicia, por tanto, un proceso similar al de la fase de
búsqueda, pero en esta ocasión para buscar en
memoria el operando de la instrucción.
…fase de ejecución: 7. Lanzar un ciclo de lectura de
memoria que ponga en RM el operando almacenado en la
dirección indicada por RD. 8. Transferencia del dato
leído desde el RM al registro intermedio ,Ro2, del
Operador. Paralelamente se puede transferir el otro operando
desde el acumulador, AC, (contenido en él un instante
anterior), al registro intermedio Ro1. Realizar la
operación de SUMA (ADD) y almacenar el resultado en el AC.
9.
modos de direccionamiento. Consiste en determinar la forma en la
que se va ha leer o escribir un dato. Modos de direccionamiento
INMEDIATO; el dato está en la propia instrucción (
ejemplo: SUMA 7, 3), en el ejemplo los dos son datos, el
resultado es 10. DIRECTO; en la instrucción está
contenida la dirección de memoria donde se encuentra el
dato (ejemplo: SUMA 7, 01) , 7 es un dato, 01 es una
dirección de memoria donde se encuentra el dato. En la
dirección de memoria 01 está contenido el dato, 3;
el resultado es: [7 + (01=3)] = 10. Nota: no se pueden mezclar
dos datos con direccionamiento directo, es decir:
directo-directo.
modos de direccionamiento. RELATIVO A REGISTRO; aclarar primero
que existen varios tipos de registros. Registro de
instrucción RI Registro de memoria RM Registro de
direcciones RD Contador de programa CP (Ejemplo: SUMA 3+CP, 1),
en este caso el direccionamiento es relativo a registro Contador
de Programa. 4 CP; 3+4=(dirección de memoria) 07. Si 1 en
la instrucción es dato el resultado es: 4+1= 5. Como hemos
observado, la dirección en la que se encuentra el dato se
tiene que calcular. La dirección del puntero + el
desplazamiento indicado en la propia instrucción Nos lleva
al dato.
modos de direccionamiento. INDEXADO o direccionamiento a Registro
Base. Un registro índice contiene una dirección de
referencia que actúa como puntero: se emplea para recorrer
estructuras de datos tipo vector o tabla. Su valor se modifica
con frecuencia. INDIRECTO; la instrucción contiene una
dirección de memoria que lleva a otra dirección de
memoria en la que se encuentra el dato. (ejemplo: 04, 3), en 04
se encuentra 06 y en 06 está el dato: 2. El resultado es
2+3= 5.
Elementos principales de la Unidad de Control El CP es un
registro que contiene la dirección de la siguiente
instrucción que hay que ejecutar. El RI es un registro que
contiene la instrucción que se está ejecutando en
cada momento. El decodificador se encarga de examinar el
código de operación de la instrucción que se
encuentra en el registro de instrucción para determinar
que es lo que hay que hacer. El secuenciador ordena que se
realicen las operaciones necesarias para ejecutar la
instrucción cuyo código de operación ha
examinado el decodificador.
formatos de instrucción tienen varios formatos.
Código de Operación Operando 1 dato Método
de direccionamiento Campo de registro Tipo de registro
Desplazamiento, dirección o dato Ejemplo: Relativo a R.
base R.I. (registro de instrucción) Operando 2
Un programa suele estar dividido en dos partes o zonas; una zona
para código y otra para datos. Como ya hemos estudiado,
una instrucción puede contener el dato propiamente dicho o
una dirección de memoria que nos lleve al dato. Instr. ? [
etiqueta: ] Cod. Op. [ operandos ] [ ; comentario ] Ejemplo:
GUARDAR: SUMA 7,3 ; esto es una suma Para poder trabajar con una
CPU determinada, lo primero que debemos conocer es la longitud de
palabra de sus registros. Una CPU de 32 bits dispone de los
siguientes registros: Datos; D0, ………………………, D7.
Direcciones; A0, ……………………., A6. Los anteriores
son registros de acceso a memoria.
Otros registros son: CP contador de programa, SR registro
de estado, SP puntero de pila, ……………..
formatos de palabra. (+) (-) 01 02 03 04 05 Byte más
significativo Byte menos significativo 8 bits byte (B) palabra
(W) palabra larga (L) Si trabajamos con registros de 16 bits y
deseamos mover datos con una longitud de palabra de 32 bits,
tendremos que recurrir a posiciones de memoria contiguas:
Código de Operación: Código de
Operación: CÓD. OP. | para formato de 32
bits: L | Sintaxis: [Cód. Op.].[L] | para formato de 16
bits: W | | para formato de 8 bits: B | Ejemplo:
instrucción que permite realizar una suma: ADD.W D0, D1
modificadores: algunos modificadores empleados en
instrucciones son: % binario $ hexadecimal #
direccionamiento inmediato Ejemplo: MOVE.B #10, D1
Representación de la información En la
representación conceptual de una memoria se tiende a
emplear notación hexadecimal, que es más
fácil de leer y simplifica muchísimo la
representación de la información. A pesar de todo,
esta forma de escribir las órdenes de un computador
resulta también algo engorroso para el programador, por lo
que se emplean códigos nemotécnicos que ayudan a
comprender el significado de cada combinación hexadecimal.
El lenguaje máquina está íntimamente ligado
a la construcción interna del computador. Los programas
escritos en lenguaje máquina sólo son
transportables a otras máquinas de idénticas
características.
ejemplo de representación de la información
representación de la información
representación de la información La
representación en hexadecimal se hace con agrupaciones de
4-bits. Los números en hexadecimal se escriben con el
sufijo H (mayúscula o minúscula) para indicar el
sistema de numeración. Ej: 6E8.58H 0110 1110 1000 .
0101 1000 6 E 8 5 8 A29.C4H 1010 0010 1001 . 1100
0100 A 2 9 C 4 Esta representación sólo
sería válida para registros de 4-bits.
Hay que tener presente que en un sistema basado en
microprocesador es habitual registros de 8, 16 y 32 bits. Por
ejemplo: si el registro A de 8-bits contiene la siguiente
secuencia, 1011 0011, se escribiría así; B3H. O una
dirección de 16-bits sería como sigue: 0000 0100
0001 1101, en hexadecimal 041DH. Ejemplos con
nemotécnicos: Instrucción MOVE.L D0, D1 Tipo
de instrucción: transferencia entre registros.Carga el
contenido del registro D0 en el registro D1. Ambos son de 32 bits
por lo que supone el intercambio entre ellos de una palabra
larga. Código: Binario Hexadecimal Nemotécnico
Descripción 0010001000000000 2200 MOVE.L D0, D1 (D0) ?
(D1)
Instrucción NOP Tipo de instrucción:
miscelánea. Su misión es no realizar ninguna
operación. Su único efecto es provocar un
pequeño retardo temporal ya que obliga a mantener
funcionando el bucle de ejecución de instrucciones.
Código: Binario Hexadecimal Nemotécnico
Descripción 0100111001110001 4E71 NOP No
operación
Para buscar la instrucción que se debe ejecutar a
continuación, la unidad de control mantiene actualizado un
registro de propósito especial o dedicado, el Contador de
Programa, CP. El contador de programa es un registro de
operación que siempre mantiene la dirección de la
próxima instrucción a ejecutar. Cuando el
procesador es inicializado la unidad de control coloca el
contador de programa a cero. La dirección contenida en el
contador de programa se coloca en el bus de direcciones. Para
ello, la unidad de control transfiere el contenido del CP al
registro de dirección, RD. el Contador de Programa
Interconexión con los buses y la memoria. El dato se
transfiere al procesador a través del bus de datos y el
registro de instrucción, RI.
Interconexión con los buses: arquitectura de bus interno.
La primera palabra de una instrucción es el código
de operación para dicha instrucción. El
código de operación indica a la unidad de control
las operaciones requeridas para ejecutar la instrucción.
Todos estos son registros internos, ubicados en el interior de la
propia CPU.
Durante una operación normal, el procesador busca
secuencialmente y ejecuta una instrucción tras otra, hasta
que se procesa una instrucción (HALT) de paro. La
búsqueda y ejecución de una instrucción
constituye el ciclo de instrucción, que representa a su
vez una o más operaciones de acceso a memoria o a
dispositivos de E/S. Cada acceso a memoria requiere un ciclo
máquina. Ciclo máquina.
Hay, por ejemplo, siete tipos diferentes de ciclo máquina
en el 8085. búsqueda de Cod. Op. lectura de MEMORIA
escritura a MEMORIA lectura de E/S escritura a E/S respuesta a
interrupción bus inactivo.
Representación del ciclo máquina.
El repertorio de instrucciones Todo computador posee un
repertorio de instrucciones que es capaz de ejecutar,
constituyendo este, lo que se conoce como “lenguaje
máquina del computador”. Estas instrucciones se
encuentran codificadas de acuerdo a un formato específico
del computador, y constituyen una opción más del
diseño del mismo. En general, el algoritmo de
solución de cualquier problema consiste en varios pasos
que deben realizarse en una secuencia específica. Para
implantar tal algoritmo en un computador, estos pasos se
descomponen en pasos más pequeños, cada uno de los
cuales representa una instrucción del computador. La
secuencia de instrucciones resultante es un programa en lenguaje
máquina, que representa al algoritmo en
cuestión.
Cada instrucción máquina del computador se ejecuta
realizando una secuencia de operaciones elementales más
rudimentarias. A su vez, cada operación elemental requiere
la activación de un conjunto de señales de control
por parte del secuenciador de la Unidad de Control. La
activación de dichas señales se efectúa a
“golpe” de reloj.
? Unidad de control La misión fundamental de esta
unidad se centra en recoger las instrucciones que componen un
programa, interpretarlas y controlar su ejecución. Dado
que las instrucciones se encuentran almacenadas en la unidad de
memoria, deberá encargarse en primer lugar de recibirlas
en el orden establecido. En segundo lugar, deberá
identificar de qué instrucción se trata en cada
caso. Por último, tendrá que generar la secuencia
adecuada de órdenes para el resto de elementos que
constituyen el computador, de manera que cada instrucción
se ejecute correctamente.