Вы находитесь на странице: 1из 3

1

MEMORIA

PROGRAMA DATOS

1

9

17
25
2

10

18 Dato A
26 Dato B
3

11

19
27
4
Leer A
12

20
28
5
Leer B
13

21
29
6
Calcular C = A * B
14

22 Dato C
30
7
Calcular C = C + A + B

15

23
31
8 Visualizar C

16

24
32

Partimos de la situacin anterior de memoria, donde encontramos que las instrucciones que componen el
programa se encuentran cargadas a partir de la direccin de memoria 4 (desde la 4 hasta la 8). Suponemos
que las dos primeras instrucciones (Leer A y Leer B ya han sido ejecutadas). El valor del contador de
programa en este momento es 6 (direccin de la siguiente instruccin que hay que llevar a la unidad de
control para ser decodificada).
Los valores A, B y C se encuentran en memoria en las direcciones 18, 22 y 26. Cuando sea necesario hacer
referencia a ellos, se emplearn sus direcciones de memoria.
La Unidad de control (en adelante UC) ordena que el contenido del Registro contador de programa pase al
bus de datos. La posicin de memoria 6, viaja por el bus de direcciones hasta llegar al registro de Direccin
de Memoria (RDM) en la memoria principal. Por otra parte, la UC tambin se encarga de generar la seal de
lectura correspondiente para la memoria. Con la seal de lectura y la direccin la memoria lleva a cabo la
lectura de la posicin 6 y su contenido (Calcular C=A*B) ser transferido al RIM (Registro de Instruccin de
memoria, tambin llamado, Registro de Intercambio de memoria). La instruccin viajar por el bus de datos
hasta la UC, en concreto al Registro Instruccin (RI), donde ser decodificada.
El decodificador se encarga de analizar el cdigo de operacin de dicha instruccin, para determinar qu
operacin hay que realizar. En este caso se trata de una operacin de multiplicacin entre dos valores que se
hallan en la memoria principal. Esa informacin es enviada al secuenciador, quien ser el encargado de
generar la secuencia de rdenes de control necesarias para que cada componente realice su funcin en el
ciclo de tiempo correspondiente.
A continuacin, el registro contador de programa se autoincrementa en 1 para quedar apuntando a la
prxima instruccin que se ha de ejecutar. Recordemos que las instrucciones se encuentran almacenadas
secuencialmente en memoria y su ejecucin suele ser secuencial (como es este caso). En este punto finaliza
la fase de bsqueda de la instruccin.
Comienza la ejecucin de la misma. Para llevar a cabo la multiplicacin, ambos operandos, A y B, han de ser
llevados a registros de la Unidad Aritmtico Lgica (ALU) donde sern operados. La UC sabe que los
operandos estn en las direcciones de memoria 18 y 26.
La primera tarea a realizar ser llevar el operando A a la ALU, para lo cual la UC, coloca en el bus de
direcciones, la direccin del dato que desea leer (16). La direccin viaja por el bus de direcciones hasta el
2

RDM. La memoria recibe la seal de lectura y recupera la posicin 16, de manera que el contenido de esta
posicin es transferido al RIM, de ah pasar al bus de datos, a travs del cual, llegar a la ALU.
Vamos a suponer que este procesador cuenta con una memoria cach para almacenar los datos. En este
punto, en la ALU van a suceder dos cosas.
- El dato A, se guarda en uno de los registros de la ALU, por ejemplo R1
- El dato A se guarda en la memoria cach
Para realizar esas dos acciones la UC tiene que generar la seal de escritura correspondiente tanto para el
registro R1 como para la memoria cach.
La segunda tarea a realizar ser llevar el operando B a la ALU. Tiene lugar del mismo modo que en el caso del
operando A, para lo cual la UC, coloca en el bus de direcciones la direccin 26. El dato quedar almacenado
en uno de los registros de la ALU, por ejemplo el registro R2. As mismo tambin quedar almacenado en la
memoria cach.
Ahora solo resta efectuar la multiplicacin. Para lo cual la UC, genera seales de lectura para los registros R1
y R2, de manera que su contenido pasa al circuito operacional de la ALU. La UC genera, entonces, la seal
con la operacin a realizar para el circuito operacional, en este caso, la multiplicacin. El resultado ser
transferido al registro acumulador (AC). Este resultado, ser transferido a uno de los registros de la ALU (por
ejemplo R3) y por otra parte a la memoria cach. Para ello se generan las correspondiente seal de lectura
para el registro AC, el dato viaja por el bus de datos hasta el registro R3, donde ser guardado.
Para ello, la UC, genera la correspondiente seal de escritura del registro R3. El valor del dato C, tendr que
ser actualizado tambin en la memoria principal. Para ello, es enviado por el bus de datos, hasta llegar al
RIM. En este momento la UC, enva una seal de escritura para la memoria a la vez que coloca en el bus de
direcciones la direccin que ocupa el dato C (22) que viaja hasta el RDM. Con la informacin del RDM, el dato
del RIM y la seal de escritura, la memoria ya puede llevar a cabo la operacin.
De esta forma se completa la ejecucin de la primera instruccin.
Para ejecutar la siguiente instruccin, el valor del registro contador de programa (CP), 7, pasa al bus de
direcciones , de ah al RDM. La memoria recibe la seal de lectura, y recupera el contenido de la posicin 7,
pasando este (C=C+A+B) al RIM y de ah al bus de datos, por donde viajar hasta llegar al RI, donde ser
posteriormente decodificada. El proceso de decodificacin es el mismo que para la instruccin anterior. Al
final de la fase de bsqueda se incrementa el registro contador de programa (CP). Ahora tendr el valor 8.
Realizar la suma (C+A)+B, es sencillo, ya que los tres datos estn almacenados en la memoria cach, con lo
cual no es necesario realizar operaciones de lectura para traerlos desde la memoria RAM.
- Se genera seal de lectura para leer de la memoria cach el dato C. El dato se guarda en el registro
R4 de la ALU, generando para ello la UC la correspondiente seal de escritura.
- Se genera seal de lectura para leer de la memoria cach el dato A. El dato se guarda en el registro
R1 de la ALU, generando para ello la UC la correspondiente seal de escritura.
- Se generan dos seales de lectura para los registros anteriores, de manera que el contenido de R4 y
R1, pasan al circuito operacional.
- Se genera la seal de operacin (suma) para el circuito operacional. El circuito operacional realiza la
suma de ambos datos.
3

- Se genera la seal de escritura para guardar el resultado de la suma, en el registro AC.
- El resultado deber ser almacenado en uno de los registros de la ALU, por ejemplo R2. Para ello, la
UC genera la correspondiente seal de escritura y el dato se escribe en dicho registro.
- Ahora solo resta sumar el contenido del registro R2 (C+A) con el dato B. La UC, pregunta a la cach si
tiene el dato B. Como la respuesta es afirmativa, la UC, genera la seal de lectura de la memoria
cach y recupera el valor del dato B, guardndolo en uno de los registros de la ALU, por ejemplo, en
el registro R3.
- Se generan dos seales de lectura para los registros anteriores, de manera que el contenido de R2 y
R3, pasan al circuito operacional.
- Se genera la seal de operacin (suma) para el circuito operacional. El circuito operacional realiza la
suma de ambos datos.
- Se genera la seal de operacin (suma) para el circuito operacional. El circuito operacional realiza la
suma de ambos datos.
- Se genera la seal de escritura para guardar el resultado de la suma, en el registro AC.
- El resultado ser almacenado en la memoria principal en la posicin 22. Para ello, es enviado por el
bus de datos, hasta llegar al RIM. En este momento la UC, enva una seal de escritura para la
memoria a la vez que coloca en el bus de direcciones la direccin que ocupa el dato C (22) que viaja
hasta el RDM. Con la informacin del RDM, el dato del RIM y la seal de escritura, la memoria ya
puede llevar a cabo la operacin.

Вам также может понравиться