ing. edgardo gho

112
Práctica de eficiencia Ing. Edgardo Gho

Upload: others

Post on 09-Feb-2022

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ing. Edgardo Gho

Práctica de eficienciaIng. Edgardo Gho

Page 2: Ing. Edgardo Gho

Conceptos clave

● Ciclo de búsqueda● Ciclo de decodificación● Modos de direccionamiento● Búsqueda de operandos● Ejecución ● Resultado

2

Page 3: Ing. Edgardo Gho

Computadora elemental

0000

0001

0002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

PC (16 bits) TAR (16 bits)

MAR (16 bits)

Secuenciador

Decodificador

Registro de instrucción (8 bits)

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

3

Page 4: Ing. Edgardo Gho

Repasemos como se busca una instrucción

4

Page 5: Ing. Edgardo Gho

Búsqueda: PC → MAR

0000

0001

0002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

PC (16 bits) TAR (16 bits)

MAR (16 bits)

Secuenciador

Decodificador

Registro de instrucción (8 bits)

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

5

Page 6: Ing. Edgardo Gho

Búsqueda: MAR → Memoria y Read, PC=PC+1

0000

0001

0002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

PC (16 bits) TAR (16 bits)

MAR (16 bits)

Secuenciador

Decodificador

Registro de instrucción (8 bits)

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Read

6

Page 7: Ing. Edgardo Gho

Búsqueda: Memoria → MBR

0000

0001

0002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

PC (16 bits) TAR (16 bits)

MAR (16 bits)

Secuenciador

Decodificador

Registro de instrucción (8 bits)

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

7

Page 8: Ing. Edgardo Gho

Búsqueda: MBR → Registro de instrucción

0000

0001

0002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

PC (16 bits) TAR (16 bits)

MAR (16 bits)

Secuenciador

Decodificador

Registro de instrucción (8 bits)

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

8

Page 9: Ing. Edgardo Gho

Búsqueda: FIN

0000

0001

0002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

PC (16 bits) TAR (16 bits)

MAR (16 bits)

Secuenciador

Decodificador

Registro de instrucción (8 bits)

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Una vez que el registro de instrucción tiene la instrucción que se va a ejecutar, se acaba el ciclo de búsqueda de la instrucción. Luego

comienza el ciclo de decodificación.

9

Page 10: Ing. Edgardo Gho

Decodificación: R. de instrucción → Decodificador

0000

0001

0002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

PC (16 bits) TAR (16 bits)

MAR (16 bits)

Secuenciador

Decodificador

Registro de instrucción (8 bits)

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

10

Page 11: Ing. Edgardo Gho

Decodificación: Decodificador → Secuenciador

0000

0001

0002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

PC (16 bits) TAR (16 bits)

MAR (16 bits)

Secuenciador

Decodificador

Registro de instrucción (8 bits)

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

11

Page 12: Ing. Edgardo Gho

Decodificación: FIN

0000

0001

0002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

PC (16 bits) TAR (16 bits)

MAR (16 bits)

Secuenciador

Decodificador

Registro de instrucción (8 bits)

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Ahora el secuenciador sabe todos los pasos necesarios para completar

la instrucción. En este punto sabe cuántos operandos necesita, dónde

está cada uno de ellos y que operacion tiene que realizar para

complir con la instrucción.

12

Page 13: Ing. Edgardo Gho

Búsqueda de operandos

El secuenciador sabe en este punto cuántos operandos debe buscar.

● Sin operandos ● Un operando● Dos operandos● Tres operandos● ….

El secuenciador sabe en este punto el modo de direccionamiento de cada uno de los operandos

● Absoluto● Relativo

13

Page 14: Ing. Edgardo Gho

Búsqueda de operandos

El secuenciador sabe en este punto cuántos operandos debe buscar.

● Sin operandos ● Un operando● Dos operandos● Tres operandos● ….

El secuenciador sabe en este punto el modo de direccionamiento de cada uno de los operandos

● Absoluto● Relativo

Ejemplo 1: Instrucción de suma con dos operandos accedidos de forma absoluta: B=A+B

En este caso la instrucción tiene la siguiente forma

Se describen 8 bits para el código de operación. Esto suele coincidir (no siempre) con el tamaño de palabra de la CPU. Dado que tenemos direcciones para los operandos, estas suelen coincidir (no siempre) con el tamaño del bus de direcciones. Ejemplo: Sumar(C8)--> *(0007)+*(FFFE) = FFFE

Cod Operación Suma (8bits) Dir Op #1 (16 bits) Dir Op #2 (16 bits)

14

Page 15: Ing. Edgardo Gho

Búsqueda de operandos

El secuenciador sabe en este punto cuántos operandos debe buscar.

● Sin operandos ● Un operando● Dos operandos● Tres operandos● ….

El secuenciador sabe en este punto el modo de direccionamiento de cada uno de los operandos

● Absoluto● Relativo

Ejemplo 1: Instrucción de suma con dos operandos accedidos de forma absoluta: B=A+B

En este caso la instrucción tiene la siguiente forma

Se describen 8 bits para el código de operación. Esto suele coincidir (no siempre) con el tamaño de palabra de la CPU. Dado que tenemos direcciones para los operandos, estas suelen coincidir (no siempre) con el tamaño del bus de direcciones. Ejemplo: Sumar(C8)--> *(0007)+*(FFFE) = FFFE

Cod Operación Suma (8bits) Dir Op #1 (16 bits) Dir Op #2 (16 bits)

C8 0007 FFFE

15

Page 16: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0001 TAR (16 bits)

0000

Secuenciador

Decodificador

C8

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

El secuenciador sabe que tiene que ejecutar C8, por ende sabe que tiene que buscar dos operandos absolutos apuntados por el PC, y el resultado de la suma se guarda en el segundo operando.

16

Page 17: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C80001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0001 TAR (16 bits)

0000

Secuenciador

Decodificador

C8

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Notamos que el MAR tiene la dirección del código de operación que se copió de memoria al registro de instrucción para ser decodificado. Todo esto ocurrió en el ciclo de búsqueda.

17

Page 18: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0001 TAR (16 bits)

0000

Secuenciador

Decodificador

C8

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Durante el ciclo de búsqueda el PC se incrementó en uno, con lo cual apunta a la parte alta de la dirección del primer operando almacenado en la instrucción.

18

Page 19: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0001 TAR (16 bits)

0001

Secuenciador

Decodificador

C8

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Comienza la búsqueda del operando #1. Para ello buscamos la parte alta de la dirección de operando #1 almacenada en 0001. Entonces PC → MAR y luego Read

Read

19

Page 20: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 000002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0002 TAR (16 bits)

0001

Secuenciador

Decodificador

C8

00

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Luego la memoria devuelve el valor de la posición 0001 que se captura en el MBR. El PC se incrementa en 1.

20

Page 21: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0002 00:XX

0002

Secuenciador

Decodificador

C8

00

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Ahora la parte alta de la dirección del operando #1 se almacena en la parte alta de TAR. Mientras tanto el PC → MAR y se indica a la memoria que queremos leer. El Pc apunta a la parte baja de la dirección.

Read

21

Page 22: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 070003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 00:XX

0002

Secuenciador

Decodificador

C8

07

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Se copia el valor de memoria en el MBR y se incrementa el PC para seguir con la instrucción.

22

Page 23: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 00:07

0002

Secuenciador

Decodificador

C8

07

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

El TAR copia en su parte baja el valor del MBR para completar la dirección del primer operando. Note que el valor del PC no se copia al MAR ya que primero debemos buscar el valor del operando #1.

23

Page 24: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 00:07

0007

Secuenciador

Decodificador

C8

07

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

TAR → MAR y Read. En este instante TAR se copia a MAR para poder acceder al valor del operando #1.

Read

24

Page 25: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 00:07

0003

Secuenciador

Decodificador

C8

8A

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

El valor del operando #1 ahora está en el MBR. Deberemos pasarlo a algun lugar temporal para que luego pueda ser sumado. Mientras tanto el PC → MAR para buscar la parte alta de la dirección de operando #2

25

Page 26: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0004 00:07

0003

Secuenciador

Decodificador

C8

8A

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

El valor del operando #1 se almacena en un acumulador temporariamente y se pide a la memoria la parte alta de la dirección del operando #2. También se incrementa el PC.

8A

Read

26

Page 27: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0004 00:07

0004

Secuenciador

Decodificador

C8

FF

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Ahora tenemos la parte alta de la dirección del operando #2 en el MBR. También PC → MAR para buscar la parte baja de la dirección del operando #2.

8A

27

Page 28: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0005 FF:07

0004

Secuenciador

Decodificador

C8

FF

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Se guarda la parte alta de la dirección de operando #2 , luego se hace Read en la memoria de la parte baja de la dirección de operando #2 y por último se incrementa el PC (que ahora apunta a la siguiente instrucción).

8A

Read

28

Page 29: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0005 FF:07

0004

Secuenciador

Decodificador

C8

FE

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Ahora la parte baja de la dirección de operando #2 se encuentra en el MBR.

8A

29

Page 30: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0005 FF:FE

0004

Secuenciador

Decodificador

C8

FE

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

EL MBR → TAR (parte baja). Por lo tanto tenemos la dirección del operando #2.

8A

30

Page 31: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0005 FF:FE

FF:FE

Secuenciador

Decodificador

C8

FE

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Hacemos Read en la memoria para obtener el valor efectivo del operando #2 apuntando por FFFE.

8A

Read

31

Page 32: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0005 FF:FE

FF:FE

Secuenciador

Decodificador

C8

01

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Ahora el MBR tiene el valor efectivo del operando #2. Podemos proceder a sumar.

8A

32

Page 33: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0005 FF:FE

FF:FE

Secuenciador

Decodificador

C8

01

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Ahora el MBR tiene el valor efectivo del operando #2. Podemos proceder a sumar.

8A

La etapa de búsqueda de operandos finaliza ya que tenemos los valores efectivos de los operandos para ser

operados (suma).

33

Page 34: Ing. Edgardo Gho

Ejecución Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0005 FF:FE

FF:FE

Secuenciador

Decodificador

C8

01

ALU

8B Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

La ALU realiza la suma entre 8A y 01, lo cual resulta en 8B que se graba en el RTR. Note que el bit más significativo está en 1, por ende el flag de Negativo se enciende.

8A

34

Page 35: Ing. Edgardo Gho

Resultado para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0005 FF:FE

FF:FE

Secuenciador

Decodificador

C8

8B

ALU

8B Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

El Operando #2 almacena el resultado, por ende debemos llevarlo a la memoria. El contenido de RTR pasa a MBR para ser grabado en FFFE (dirección de operando #2).

8A

35

Page 36: Ing. Edgardo Gho

Resultado para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 8BFFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0005 FF:FE

FF:FE

Secuenciador

Decodificador

C8

8B

ALU

8B Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

El Operando #2 almacena el resultado, por ende debemos llevarlo a la memoria. El contenido de RTR pasa a MBR para ser grabado en FFFE (dirección de operando #2).

8A

Write

36

Page 37: Ing. Edgardo Gho

Resultado para Suma (C8)

0000 C8

0001 00

0002 07

0003 FF

0004 FE

0005

0006

0007 8A

0008

.

.

FFFE 8BFFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0005 FF:FE

FF:FE

Secuenciador

Decodificador

C8

8B

ALU

8B Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

El Operando #2 almacena el resultado, por ende debemos llevarlo a la memoria. El contenido de RTR pasa a MBR para ser grabado en FFFE (dirección de operando #2).

8A

Ahora con el resultado almacenado en la posición de memoria del

operando #2 se completa la ejecución de la instrucción.

La CPU deberá comenzar con un nuevo ciclo de búsqueda de código

de operando.

37

Page 38: Ing. Edgardo Gho

Cálculo de eficiencia

Para calcular la eficiencia necesitamos saber algunas cosas:

● Tamaño de palabra de la CPU● Líneas de bus de direcciones● Líneas de bus de datos● Tamaño del código de operación● Cantidad de operandos● Modo de direccionamiento

○ Para cada operando

● Cantidad de ciclos consumidos○ Por la decodificación○ Por la ejecución ○ Por acceso a memoria

38

Page 39: Ing. Edgardo Gho

Cálculo de eficiencia

Para calcular la eficiencia necesitamos saber algunas cosas:

● Tamaño de palabra de la CPU● Líneas de bus de direcciones● Líneas de bus de datos● Tamaño del código de operación● Cantidad de operandos● Modo de direccionamiento

○ Para cada operando

● Cantidad de ciclos consumidos○ Por la decodificación○ Por la ejecución ○ Por acceso a memoria

Indica cuántos bits ocupa un operando. Suele ser 8,16,32,64 bits.

39

Page 40: Ing. Edgardo Gho

Cálculo de eficiencia

Para calcular la eficiencia necesitamos saber algunas cosas:

● Tamaño de palabra de la CPU● Líneas de bus de direcciones● Líneas de bus de datos● Tamaño del código de operación● Cantidad de operandos● Modo de direccionamiento

○ Para cada operando

● Cantidad de ciclos consumidos○ Por la decodificación○ Por la ejecución ○ Por acceso a memoria

Indica cuantos bits de una dirección podemos enviar desde la CPU hacia

el mundo exterior. Generalmente coincide con la capacidad de

direccionamiento pero puede usarse multiplexación y aumentar así la capacidad de direccionamiento.

40

Page 41: Ing. Edgardo Gho

Cálculo de eficiencia

Para calcular la eficiencia necesitamos saber algunas cosas:

● Tamaño de palabra de la CPU● Líneas de bus de direcciones● Líneas de bus de datos● Tamaño del código de operación● Cantidad de operandos● Modo de direccionamiento

○ Para cada operando

● Cantidad de ciclos consumidos○ Por la decodificación○ Por la ejecución ○ Por acceso a memoria

Indica cuantos bits de datos podemos enviar o recibir en la CPU.

Generalmente coincide con el tamaño de palabra pero también

puede estar multiplexado.

41

Page 42: Ing. Edgardo Gho

Cálculo de eficiencia

Para calcular la eficiencia necesitamos saber algunas cosas:

● Tamaño de palabra de la CPU● Líneas de bus de direcciones● Líneas de bus de datos● Tamaño del código de operación● Cantidad de operandos● Modo de direccionamiento

○ Para cada operando

● Cantidad de ciclos consumidos○ Por la decodificación○ Por la ejecución ○ Por acceso a memoria

Indica cuántas operaciones podría realizar la CPU. Generalmente es

menor o igual que las líneas del bus de datos de forma de acceder a la operación en una sola lectura de

memoria pero existen casos donde se requiere más de un acceso.

Algunas arquitectura tienen tamaño de código de operación variable.

42

Page 43: Ing. Edgardo Gho

Cálculo de eficiencia

Para calcular la eficiencia necesitamos saber algunas cosas:

● Tamaño de palabra de la CPU● Líneas de bus de direcciones● Líneas de bus de datos● Tamaño del código de operación● Cantidad de operandos● Modo de direccionamiento

○ Para cada operando

● Cantidad de ciclos consumidos○ Por la decodificación○ Por la ejecución ○ Por acceso a memoria

Indica cuántos operandos están involucrados en la ejecución de la

instrucción.

43

Page 44: Ing. Edgardo Gho

Cálculo de eficiencia

Para calcular la eficiencia necesitamos saber algunas cosas:

● Tamaño de palabra de la CPU● Líneas de bus de direcciones● Líneas de bus de datos● Tamaño del código de operación● Cantidad de operandos● Modo de direccionamiento

○ Para cada operando

● Cantidad de ciclos consumidos○ Por la decodificación○ Por la ejecución ○ Por acceso a memoria

Indica cómo se accede a cada uno de los operandos.

44

Page 45: Ing. Edgardo Gho

Cálculo de eficiencia

Para calcular la eficiencia necesitamos saber algunas cosas:

● Tamaño de palabra de la CPU● Líneas de bus de direcciones● Líneas de bus de datos● Tamaño del código de operación● Cantidad de operandos● Modo de direccionamiento

○ Para cada operando

● Cantidad de ciclos consumidos○ Por la decodificación○ Por la ejecución ○ Por acceso a memoria

Es la unidad de medida que utilizaremos para calcular qué tan eficiente es una CPU a la hora de

ejecutar instrucciones.

45

Page 46: Ing. Edgardo Gho

Cálculo de eficiencia

Veamos para el ejemplo planteado

● Tamaño de palabra de la CPU: 8 bits● Líneas de bus de direcciones: 16 líneas ● Líneas de bus de datos: 8 líneas ● Tamaño del código de operación: 8 bits● Cantidad de operandos: 2● Modo de direccionamiento

○ Para cada operando: Ambos absolutos● Cantidad de ciclos consumidos

○ Por la decodificación: 2 ciclos○ Por la ejecución: 1 ciclo○ Por acceso a memoria: 3 ciclos

Cod Operación Suma (8bits) C8 Dir Op #1 (16 bits) 0007 Dir Op #2 (16 bits) FFFE

46

Page 47: Ing. Edgardo Gho

Cálculo de eficiencia

Veamos para el ejemplo planteado

● Tamaño de palabra de la CPU: 8 bits● Líneas de bus de direcciones: 16 líneas ● Líneas de bus de datos: 8 líneas ● Tamaño del código de operación: 8 bits● Cantidad de operandos: 2● Modo de direccionamiento

○ Para cada operando: Ambos absolutos● Cantidad de ciclos consumidos

○ Por la decodificación: 2 ciclos○ Por la ejecución: 1 ciclo○ Por acceso a memoria: 3 ciclos

Cod Operación Suma (8bits) C8 Dir Op #1 (16 bits) 0007 Dir Op #2 (16 bits) FFFE

Debemos calcular cuántos ciclos son necesarios para ejecutar esta

instrucción.

Luego sabiendo cuantos ciclos por segundo (Hz) ejecuta la CPU

podemos calcular la eficiencia.Calcular eficiencia sabiendo que la CPU ejecuta a 100 MHz

47

Page 48: Ing. Edgardo Gho

Cálculo de eficienciaCod Operación Suma (8bits) C8 Dir Op #1 (16 bits) 0007 Dir Op #2 (16 bits) FFFE

Etapa Accesos a memoria Ciclos

Para calcular la eficiencia armamos una tabla donde detallamos la etapa en la

ejecución de la instrucción, cuantos accesos a memoria y cuantos ciclos se consumió.

48

Page 49: Ing. Edgardo Gho

Cálculo de eficienciaCod Operación Suma (8bits) C8 Dir Op #1 (16 bits) 0007 Dir Op #2 (16 bits) FFFE

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 3

Vemos que para la búsqueda de código de operación se realizó un

acceso a memoria.

Note que el PC tiene el mismo tamaño que el bus de direcciones. Esto quiere decir que no hay multiplexación para apuntar a la memoria. El registro de instrucción tiene 8 bits los cuales coinciden con el bus de datos, por ende en un solo acceso a memoria podemos traer el código de operación.

Dado que esta arquitectura requiere 3 ciclos para un acceso a memoria, entonces la cantidad de ciclos para la búsqueda es 3.

49

Page 50: Ing. Edgardo Gho

Cálculo de eficienciaCod Operación Suma (8bits) C8 Dir Op #1 (16 bits) 0007 Dir Op #2 (16 bits) FFFE

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 3

Decodificación 0 2

La cantidad de ciclos que le toma a esta arquitectura decodificar es

dato. No requiere acceso a memoria ya que el registro de instrucción tiene el código de

operando.

50

Page 51: Ing. Edgardo Gho

Cálculo de eficienciaCod Operación Suma (8bits) C8 Dir Op #1 (16 bits) 0007 Dir Op #2 (16 bits) FFFE

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 3

Decodificación 0 2

Dirección operando #1 2 6

Dado que el modo de direccionamiento es absoluto para el operando #1, se debe

primero acceder a la dirección de memoria del mismo almacenada

en la instrucción. Esta arquitectura tiene palabras de 8 bits sin embargo las direcciones son de 16 bits, por ende tenemos

que acceder dos veces a la memoria para formar una

dirección completa. Dado que cada acceso consume 3 ciclos, el

traer a CPU una dirección completa de operando consume 6

ciclos.

51

Page 52: Ing. Edgardo Gho

Cálculo de eficienciaCod Operación Suma (8bits) C8 Dir Op #1 (16 bits) 0007 Dir Op #2 (16 bits) FFFE

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 3

Decodificación 0 2

Dirección operando #1 2 6

Operando #1 1 3

Una vez que la CPU accede a la dirección completa del primer

operando puede acceder al contenido del mismo. Dado que la

palabra es 8 bits entonces esto consume un solo acceso a

memoria, lo que equivale a 3 ciclos.

52

Page 53: Ing. Edgardo Gho

Cálculo de eficienciaCod Operación Suma (8bits) C8 Dir Op #1 (16 bits) 0007 Dir Op #2 (16 bits) FFFE

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 3

Decodificación 0 2

Dirección operando #1 2 6

Operando #1 1 3

Dirección operando #2 2 6

Operando #2 1 3

Vemos que para el operando #2, al ser esta accedido también de forma absoluta los números son iguales que para el operando #1.

53

Page 54: Ing. Edgardo Gho

Cálculo de eficienciaCod Operación Suma (8bits) C8 Dir Op #1 (16 bits) 0007 Dir Op #2 (16 bits) FFFE

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 3

Decodificación 0 2

Dirección operando #1 2 6

Operando #1 1 3

Dirección operando #2 2 6

Operando #2 1 3

Ejecución 0 1

La ejecución de la suma consume un solo ciclo (esto es dato).

54

Page 55: Ing. Edgardo Gho

Cálculo de eficienciaCod Operación Suma (8bits) C8 Dir Op #1 (16 bits) 0007 Dir Op #2 (16 bits) FFFE

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 3

Decodificación 0 2

Dirección operando #1 2 6

Operando #1 1 3

Dirección operando #2 2 6

Operando #2 1 3

Ejecución 0 1

Almacenar resultado 1 3

Para almacenar el resultado, la dirección donde debe

almacenarse ya se encuentra en el TAR. Por ende solo se realiza un acceso a memoria donde se

copia el valor de la suma a memoria. Esto solo consume 3

ciclos.

55

Page 56: Ing. Edgardo Gho

Cálculo de eficienciaCod Operación Suma (8bits) C8 Dir Op #1 (16 bits) 0007 Dir Op #2 (16 bits) FFFE

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 3

Decodificación 0 2

Dirección operando #1 2 6

Operando #1 1 3

Dirección operando #2 2 6

Operando #2 1 3

Ejecución 0 1

Almacenar resultado 1 3

Total 8 27

Por último sumamos la cantidad de ciclos. Esta instrucción tarda

27 ciclos de CPU en completarse.

56

Page 57: Ing. Edgardo Gho

Cálculo de eficienciaCod Operación Suma (8bits) C8 Dir Op #1 (16 bits) 0007 Dir Op #2 (16 bits) FFFE

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 3

Decodificación 0 2

Dirección operando #1 2 6

Operando #1 1 3

Dirección operando #2 2 6

Operando #2 1 3

Ejecución 0 1

Almacenar resultado 1 3

Total 8 27

Ahora que sabemos que una instrucción consume 27 ciclos y

que la CPU ejecuta un 100 millones de ciclos por segundo

(100 MHz), entonces la eficiencia se calcula como 100.000.000 / 27

Lo cual da como resultado3.703.703 instrucciones por

segundo.Podemos resumirlo en:

3,7 MIPS

CPU ejecuta a 100 MHz

57

Page 58: Ing. Edgardo Gho

GeneralidadesPara poder realizar el cálculo de la eficiencia debemos entender cómo se ejecuta la instrucción, que partes componen la instrucción, como es la arquitectura de la CPU , cuantos ciclos consume decodificar, ejecutar y acceder a la memoria.

Muchos de estos números son dato en el ejercicio, pero muchos otros detalles están “ocultos” y deben ser razonados. El razonamiento de los mismos es lo más importante en el ejercicio.

58

Page 59: Ing. Edgardo Gho

Búsqueda de operandos

Ejemplo 2: Instrucción de suma con dos operandos, el primero accedido de forma indirecta y el segundo es relativo (sin signo) al registro index.

Se describen 8 bits para el código de operación. Esto suele coincidir (no siempre) con el tamaño de palabra de la CPU. El primero operando se accede de forma indirecta, o sea que la instrucción posee la dirección de la dirección de donde se encuentra el operando. El segundo operando se accede de forma indexada, o sea que la instrucción contiene el offset (positivo) que se le suma al registro índice para obtener el dato. Asumimos que el registro índice tiene como valor FF00. La instrucción es: index[B]=*(*(A))+index[B]. Note que A es un puntero a puntero y B es el índice.

Cod Operación Suma (8bits) Dir de Dir Op #1 (16 bits) Offset Operando #2 (8 bits)

C9 0006 FE

Código de operación Dirección de la dirección del operando #1

Offset para el registro índice

59

Page 60: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0001 TAR (16 bits)

0000

Secuenciador

Decodificador

C9

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

El secuenciador sabe que tiene que ejecutar C9, por ende sabe que el primer operando se accede indirectamente y el segundo indexado. El registro Index tiene FF00 en este ejemplo.

60

Page 61: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0001 TAR (16 bits)

0000

Secuenciador

Decodificador

C9

C9

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Vemos que el secuenciador se encuentra listo para comenzar a buscar los operandos. El primer operando es indirecto, por ende buscamos la dirección de la dirección.

61

Page 62: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0001 TAR (16 bits)

0001

Secuenciador

Decodificador

C9

C9

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Buscamos la parte alta de la dirección de la dirección del operando #1

Read

62

Page 63: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 000002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0002 TAR (16 bits)

0001

Secuenciador

Decodificador

C9

00

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Buscamos la parte alta de la dirección de la dirección del operando #1. Se incrementa el PC. El MBR tiene la parte alta.

63

Page 64: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 000002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0002 00:XX

0002

Secuenciador

Decodificador

C9

00

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Copiamos la parte alta de la dirección de la dirección del operando #1 al TAR. Se apunta en la memoria la parte baja de la dirección de la dirección del operando #1.

Read

64

Page 65: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 060003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 00:XX

0002

Secuenciador

Decodificador

C9

06

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

La parte baja de la dirección de la dirección se copia al MBR y se incrementa el PC.

65

Page 66: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 0006

0002

Secuenciador

Decodificador

C9

06

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

El TAR tiene la dirección de la dirección del primer operando.

66

Page 67: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 0006

0006

Secuenciador

Decodificador

C9

06

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Se busca la parte alta de la dirección del primer operando.

Read

67

Page 68: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 000007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 0007

0006

Secuenciador

Decodificador

C9

00

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Se busca la parte alta de la dirección del primer operando. Nótese que se incrementa el TAR para apuntar a la parte baja de la dirección de memoria.

68

Page 69: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 0007

0007

Secuenciador

Decodificador

C9

00

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Se actualiza el MAR con el valor de la parte baja de la dirección. Mientras el valor de la parte alta se almacena en el MBR.

69

Page 70: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 0007

0007

Secuenciador

Decodificador

C9

00

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

La parte alta (guardada en el MBR) ahora pasa al TAR. Luego el MAR apunta a la parte baja de la dirección del operando #1.

Read

70

Page 71: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 090008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 0007

0007

Secuenciador

Decodificador

C9

09

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

La parte baja de la dirección del operando #1 pasa al MBR.

71

Page 72: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 0009

0007

Secuenciador

Decodificador

C9

09

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Ahora el TAR se actualiza con la dirección completa del operando #1.

72

Page 73: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 0009

0009

Secuenciador

Decodificador

C9

09

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Ahora el TAR se actualiza con la dirección completa del operando #1. Por ende se hace un Read en memoria.

Read

73

Page 74: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 0009

0009

Secuenciador

Decodificador

C9

7B

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Ahora se accede al valor efectivo del operando #1 y se copia al MBR.

74

Page 75: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0003 0009

0003

Secuenciador

Decodificador

C9

7B

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

El valor efectivo se guarda en un acumulador temporario. Luego el PC apunta al offset del operando #2, el cual debe ser sumado al registro index.

7B

Read

75

Page 76: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0004 0009

0003

Secuenciador

Decodificador

C9

FE

ALU

RTR (8 bits) Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Se accede al valor del offset que debe sumarse al registro index. El PC se incrementa.

7B

76

Page 77: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0004 0009

0003

Secuenciador

Decodificador

C9

FE

ALU

FE Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Se suma la parte baja del registro índice más el offset guardado en la instrucción. Nótese que Negativo se convierte en 1, pero Z,V y en particular Carry quedan en cero.

7B

77

Page 78: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0004 00FE

0003

Secuenciador

Decodificador

C9

FE

ALU

FE Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

La parte baja del TAR se actualiza con el valor calculado para el modo indexado.

7B

78

Page 79: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0004 FFFE

0003

Secuenciador

Decodificador

C9

FE

ALU

FE Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

La parte alta del registro index se copia a la parte alta del TAR. El secuenciador verifica que la suma anterior no haya dado Carry. Si hubiese dado Carry debe sumar uno a la parte alta del TAR.

7B

79

Page 80: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0004 FFFE

FFFE

Secuenciador

Decodificador

C9

FE

ALU

FE Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Ahora que tenemos la dirección del segundo operando lo accedemos en la memoria.

7B

Read

80

Page 81: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0004 FFFE

FFFE

Secuenciador

Decodificador

C9

01

ALU

FE Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

El MBR contiene el valor del operando #2.

7B

81

Page 82: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0004 FFFE

FFFE

Secuenciador

Decodificador

C9

01

ALU

7C Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Se ejecuta la suma ya que están ambos operandos disponibles.

7B

82

Page 83: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 01FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0004 FFFE

FFFE

Secuenciador

Decodificador

C9

7C

ALU

7C Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Se traslada el resultado al MBR para ser copiado a la memoria.

7B

Write

83

Page 84: Ing. Edgardo Gho

Búsqueda de operandos para Suma (C9)

0000 C9

0001 00

0002 06

0003 FE

0004

0005

0006 00

0007 09

0008

0009 7B

.

FFFE 7CFFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0004 FFFE

FFFE

Secuenciador

Decodificador

C9

7C

ALU

7C Stack (16 bits)

Index: FF00

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Por último se guarda el resultado en el segundo operando completando la ejecución de la instrucción.

7B

84

Page 85: Ing. Edgardo Gho

Cálculo de eficienciaCod Operación Suma (8bits) C9 Dir de Dir Op #1 (16 bits) 0006 Offset (8 bits) FE

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 3

Decodificación 0 2

Dirección de dir operando #1 2 6

Dirección operando #1 2 6

Operando #1 1 3

Offset operando #2 1 3

Operando #2 1 3

Ejecución 0 1

Almacenar resultado 1 3

Total 9 30

En este caso la eficiencia es 100.000.000 / 30o sea 3,3 MIPS

CPU ejecuta a 100 MHz

85

Page 86: Ing. Edgardo Gho

Búsqueda de operandos

Ejemplo 3: Instrucción de suma con un operando en registro y un valor inmediato.

Se describen 8 bits para el código de operación. Esto suele coincidir (no siempre) con el tamaño de palabra de la CPU. El primero operando se encuentra en un registro acumulador interno (por ejemplo A) y el segundo operando es inmediato incluido en la instrucción. El resultado se guarda en el registro.

Cod Operación Suma (8bits) Inmediato (8 bits)

CA 91

Código de operaciónSuma el A = A + Inmediato

Valor inmediato

86

Page 87: Ing. Edgardo Gho

Búsqueda de operandos para Suma (CA)

0000 CA

0001 91

0002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0001 TAR (16 bits)

0000

Secuenciador

Decodificador

CA

MBR (8 bits)

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

El secuenciador sabe que tiene que ejecutar CA, por ende sabe que tiene que traer de memoria el valor inmediato para sumarle al acumulador A. En este caso A tiene 8D y el valor inmediato es 91.

A=8D

87

Page 88: Ing. Edgardo Gho

Búsqueda de operandos para Suma (CA)

0000 CA

0001 91

0002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0001 TAR (16 bits)

0001

Secuenciador

Decodificador

CA

CA

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

El valor del PC → MAR y Read para acceder al valor inmediato.

A=8D

Read

88

Page 89: Ing. Edgardo Gho

Búsqueda de operandos para Suma (CA)

0000 CA

0001 910002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0002 TAR (16 bits)

0001

Secuenciador

Decodificador

CA

91

ALU

RTR (8 bits) Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Se lee el valor inmediato y se copia al MBR. También se incrementa el PC.

A=8D

89

Page 90: Ing. Edgardo Gho

Búsqueda de operandos para Suma (CA)

0000 CA

0001 91

0002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0002 TAR (16 bits)

0001

Secuenciador

Decodificador

CA

91

ALU

1E Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Dado que todos los valores están disponibles se puede hacer la suma. El resultado es 11E, con lo cual Carry se pone en 1 y también oVerflow (ya que 8D y 91 son negativos y el resultado es positivo).

A=8D

90

Page 91: Ing. Edgardo Gho

Búsqueda de operandos para Suma (CA)

0000 CA

0001 91

0002

0003

0004

0005

0006

0007

0008

.

.

FFFE

FFFF

CPU Memoria

Bus de direcciones (16 líneas)

Bus de datos (8 líneas)

0002 TAR (16 bits)

0001

Secuenciador

Decodificador

CA

91

ALU

1E Stack (16 bits)

Index (16 bits)

Base (8 bits)

Acumuladores c/u (8 bits)

Bus Interno de datos

Unidad de control

Bus de control

Oscilador Xtal

Z V N C

Bus Interno de direcciones

IRQ

Para finalizar con la ejecución el valor del acumulador A se actualiza con el resultado. Nótese que no hay acceso a memoria para almacenar el resultado ya que queda dentro de la CPU.

A=1E

91

Page 92: Ing. Edgardo Gho

Cálculo de eficienciaCod Operación

Suma (8bits) CA 91

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 3

Decodificación 0 2

Operando #1 (registro) 0 0

Operando #2 (inmediato) 1 3

Ejecución 0 1

Total 2 9

Nótese que no hay acceso a memoria para almacenar el

resultado. En este caso la eficiencia es

100.000.000 / 9 o sea 11,11 MIPS.

CPU ejecuta a 100 MHz

92

Page 93: Ing. Edgardo Gho

Ejercicio 1Dada una computadora con bus de direcciones de 16 bits, bus de datos de 8 bits, cuyos códigos de operación son de 16 bits y utiliza palabras de 16 bits. Se desea ejecutar una instrucción con dos operandos, accedidos de forma indirecta, ej: B=A+B. Se requieren dos ciclos de reloj por cada acceso a memoria, un ciclo para la decodificación y otro para la ejecución de la instrucción. Indique cuantos ciclos por segundo son necesarios para que la CPU ejecute a 2 MIPS

93

Page 94: Ing. Edgardo Gho

Ejercicio 1Dada una computadora con bus de direcciones de 16 bits, bus de datos de 8 bits, cuyos códigos de operación son de 16 bits y utiliza palabras de 16 bits. Se desea ejecutar una instrucción con dos operandos, accedidos de forma indirecta, ej: B=A+B. Se requieren dos ciclos de reloj por cada acceso a memoria, un ciclo para la decodificación y otro para la ejecución de la instrucción.

Conviene resaltar los valores que son dato y armar una tabla con ellos.

Bus Direcciones 16 bits

Bus Datos 8 bits

Palabra/ Cod OP 16 bits

Operando #1 Indirecto

Operando #2 Indirecto

Acceso a memoria 2 ciclos

Decodificación 1 ciclo

Ejecución 1 ciclo

CodOp (16) DIR2 OP#1 (16) DIR2 OP#2 (16)

También conviene dibujar la instrucción junto con cuántos bits ocupa cada una de sus partes

94

Page 95: Ing. Edgardo Gho

Ejercicio 1 Bus Direcciones 16 bits

Bus Datos 8 bits

Palabra/ Cod OP 16 bits

Operando #1 Indirecto

Operando #2 Indirecto

Acceso a memoria 2 ciclos

Decodificación 1 ciclo

Ejecución 1 ciclo

CodOp (16) DIR2 OP#1 (16) DIR2 OP#2 (16)

El bus de datos es de 8 bits, con lo cual traer 16 bits de memoria requiere dos accesos.

Acceder a DIR2 OP#1 (16) lleva dos accesos a memoria. Luego acceder a DIR OP#1 (16) también lleva dos accesos a memoria. Luego acceder a OP#1 lleva dos accesos a memoria ya que la palabra es de 16 bits pero el bus de datos es de 8, por ende debe leerse en dos partes.Lo mismo ocurre para acceder a OP#2.

Por último luego de operar el resultado es llevado a OP#2, pero al ser este de 16 bits y el bus de datos de 8 requiere nuevamente dos accesos a memoria.

95

Page 96: Ing. Edgardo Gho

Ejercicio 1 Bus Direcciones 16 bits

Bus Datos 8 bits

Palabra/ Cod OP 16 bits

Operando #1 Indirecto

Operando #2 Indirecto

Acceso a memoria 2 ciclos

Decodificación 1 ciclo

Ejecución 1 ciclo

CodOp (16) DIR2 OP#1 (16) DIR2 OP#2 (16)

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 2 4

Decodificación 0 1

DIR2 OP#1 2 4

DIR OP#1 2 4

OP#1 2 4

DIR2 OP#2 2 4

DIR OP#2 2 4

OP#2 2 4

Ejecución 0 1

Almacenar resultado 2 4

Total 16 34

Dado que cada ejecución consume 34 ciclos, se necesita que la CPU opere a 68 MHz para que la eficiencia sea de 2 MIPS.

96

Page 97: Ing. Edgardo Gho

Ejercicio 2Dada una computadora con bus de direcciones de 16 bits, bus de datos de 32 bits, cuyos códigos de operación son de 12 bits, posee 16 registros acumuladores y las palabras son de 32 bits. Se desea ejecutar una suma donde el primer operando funciona en modo registro y el segundo operando se accede de modo absoluto. El resultado se guarda en el registro.Codificación y ejecución en 1 ciclo c/u. La memoria responde en 1 ciclo. Calcule la eficiencia de la CPU sabiendo que la frecuencia de la misma es 12 MHz.

97

Page 98: Ing. Edgardo Gho

Ejercicio 2Dada una computadora con bus de direcciones de 16 bits, bus de datos de 32 bits, cuyos códigos de operación son de 12 bits, posee 16 registros acumuladores y las palabras son de 32 bits. Se desea ejecutar una suma donde el primer operando funciona en modo registro y el segundo operando se accede de modo absoluto. El resultado se guarda en el registro. Codificación y ejecución en 1 ciclo c/u. La memoria responde en 1 ciclo. Calcule la eficiencia de la CPU sabiendo que la frecuencia de la misma es 12 MHz.

98

Bus Direcciones 16 bits

Bus Datos 32 bits

Palabra 32 bits

Cod Operación 12 bits

Registros 16

Acceso a memoria 1 ciclo

Decodificación 1 ciclo

Ejecución 1 ciclo

Operando #1 Registro

Operando #2 Absoluto

CodOp (12) Registro (4) Dir OP #2 (16)

32 bits

En esta arquitectura la palabra es de 32 bits. Los códigos de operación son de 12 bits y posee 16 registros. Para seleccionar uno de esos registros alcanza con 4 bits. Luego el segundo operando se accede en modo absoluto, por ende la instrucción tiene la dirección de memoria del operando. Toda la instrucción ocupa 32 bits. Esto quiere decir que cuando se hace la búsqueda de la instrucción la misma se trae completa ya que el bus de datos es de 32 bits. Con lo cual un solo acceso a memoria alcanza para traer la operación, el registro y la dirección del segundo operando. Luego solo hace falta ir a buscar el segundo operando y ejecutar la suma. El resultado queda en el registro.

Page 99: Ing. Edgardo Gho

Ejercicio 2Dada una computadora con bus de direcciones de 16 bits, bus de datos de 32 bits, cuyos códigos de operación son de 12 bits, posee 16 registros acumuladores y las palabras son de 32 bits. Se desea ejecutar una suma donde el primer operando funciona en modo registro y el segundo operando se accede de modo absoluto. El resultado se guarda en el registro. Codificación y ejecución en 1 ciclo c/u. La memoria responde en 1 ciclo. Calcule la eficiencia de la CPU sabiendo que la frecuencia de la misma es 12 MHz.

99

Bus Direcciones 16 bits

Bus Datos 32 bits

Palabra 32 bits

Cod Operación 12 bits

Registros 16

Acceso a memoria 1 ciclo

Decodificación 1 ciclo

Ejecución 1 ciclo

Operando #1 Registro

Operando #2 Absoluto

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 1

Decodificación 0 1

Operando #1 0 0

Operando #2 1 1

Ejecución 0 1

Total 2 4

La eficiencia de la CPU es 3 MIPS.

Page 100: Ing. Edgardo Gho

Ejercicio 3Dada una computadora con bus de direcciones de 24 bits, bus de datos de 8 bits, palabra de 16 bits y 8 bits de código de operación. Se desea ejecutar una instrucción donde el primer operando es inmediato y el segundo se accede en modo paginado (256 páginas). Los accesos a memoria consumen 1 ciclo y la decodificación y ejecución 1 ciclo c/u. Indique la frecuencia de trabajo de la CPU para que la misma ejecute a 1 MIPS.

100

Page 101: Ing. Edgardo Gho

Ejercicio 3Dada una computadora con bus de direcciones de 24 bits, bus de datos de 8 bits, palabra de 16 bits y 8 bits de código de operación. Se desea ejecutar una instrucción donde el primer operando es inmediato y el segundo se accede en modo paginado (256 páginas). Los accesos a memoria consumen 1 ciclo y la decodificación y ejecución 1 ciclo c/u. Indique la frecuencia de trabajo de la CPU para que la misma ejecute a 1 MIPS.

101

Bus Direcciones 24 bits

Bus Datos 8 bits

Palabra 16 bits

Cod Operación 8 bits

Acceso a memoria 1 ciclo

Decodificación 1 ciclo

Ejecución 1 ciclo

Operando #1 Inmediato

Operando #2 Paginado

Cod Op (8) OP #1 (16) Offset Página (16)

En esta arquitectura el bus de datos es de 8 bits. Por ende solo se pueden traer a CPU de a 8 bits a la vez. Vemos que el código de operación ocupa 8 bits por ende se trae en un acceso a memoria. Luego el primer operando es inmediato, por ende viene como acompañante en la instrucción. Dado que la palabra es de 16 bits, entonces el OP#1 es de 16 bits. Por último el segundo operando se accede en modo paginado, donde existen 256 páginas. Esto quiere decir que el registro de página tiene 8 bits. Dado que las direcciones son de 24 bits, y los 8 bits más significativos son la página, quedan 16 bits que vienen acompañando la instrucción. Juntando la página con el offset obtenemos la dirección efectiva del OP#2.

Nótese que no se aclara donde se guarda el resultado. Sin embargo existe sólo un lugar donde guardarlo… el OP#2, ya que el OP#1 es un número inmediato y no hay otros registros involucrados.

Page 102: Ing. Edgardo Gho

Ejercicio 3Dada una computadora con bus de direcciones de 24 bits, bus de datos de 8 bits, palabra de 16 bits y 8 bits de código de operación. Se desea ejecutar una instrucción donde el primer operando es inmediato y el segundo se accede en modo paginado (256 páginas). Los accesos a memoria consumen 1 ciclo y la decodificación y ejecución 1 ciclo c/u. Indique la frecuencia de trabajo de la CPU para que la misma ejecute a 1 MIPS.

102

Bus Direcciones 24 bits

Bus Datos 8 bits

Palabra 16 bits

Cod Operación 8 bits

Acceso a memoria 1 ciclo

Decodificación 1 ciclo

Ejecución 1 ciclo

Operando #1 Inmediato

Operando #2 Paginado

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 1

Decodificación 0 1

Operando #1 2 2

Dir operando #2 2 2

Operando #2 2 2

Ejecución 0 1

Resultado 2 2

Total 9 11

La frecuencia de la CPU debe ser 11 MHz

Page 103: Ing. Edgardo Gho

Ejercicio 4Dada una computadora que ejecuta sólo 16 operaciones. Posee 16 registros acumuladores. La palabra es de 16 bits. Ambos buses son de 16 bits. Se desea ejecutar una instrucción con 3 operandos del tipo R

x = R

y + R

z (modo registro). La decodificación y

ejecución tardan un ciclo. Los accesos a memoria tardan un ciclo. Indique la eficiencia sabiendo que la CPU opera a 3 MHz.

103

Page 104: Ing. Edgardo Gho

Ejercicio 4Dada una computadora que ejecuta sólo 16 operaciones. Posee 16 registros acumuladores. La palabra es de 16 bits. Ambos buses son de 16 bits. Se desea ejecutar una instrucción con 3 operandos del tipo R

x = R

y + R

z (modo registro). La decodificación y

ejecución tardan un ciclo. Los accesos a memoria tardan un ciclo. Indique la eficiencia sabiendo que la CPU opera a 3 MHz.

104

Bus Direcciones 16 bits

Bus Datos 16 bits

Palabra 16 bits

Cod Operación 4 bits

Registros 16

Acceso a memoria 1 ciclo

Decodificación 1 ciclo

Ejecución 1 ciclo

Operando #1 Registro

Operando #2 Registro

Operando #3 Registro

En esta arquitectura existen solo 16 operaciones, por ende los códigos de operación son solo de 4 bits. Existen 16 registros, por ende se apunta a cada registro con solo 4 bits. Siendo que toda la instrucción ocupa 16 bits y el tamaño del bus de datos es de 16 bits entonces en el ciclo de búsqueda se obtiene toda la instrucción.

Cod Op (4) Rx (4) Ry(4) Rz(4)

Page 105: Ing. Edgardo Gho

Ejercicio 4Dada una computadora que ejecuta sólo 16 operaciones. Posee 16 registros acumuladores. La palabra es de 16 bits. Ambos buses son de 16 bits. Se desea ejecutar una instrucción con 3 operandos del tipo R

x = R

y + R

z (modo registro). La decodificación y

ejecución tardan un ciclo. Los accesos a memoria tardan un ciclo. Indique la eficiencia sabiendo que la CPU opera a 3 MHz.

105

Bus Direcciones 16 bits

Bus Datos 16 bits

Palabra 16 bits

Cod Operación 4 bits

Registros 16

Acceso a memoria 1 ciclo

Decodificación 1 ciclo

Ejecución 1 ciclo

Operando #1 Registro

Operando #2 Registro

Operando #3 Registro

Cod Op (4) Rx (4) Ry(4) Rz(4)

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 1

Decodificación 0 1

Ejecución 0 1

Total 1 3

La CPU tiene una eficiencia de 1 MIPS

Page 106: Ing. Edgardo Gho

Ejercicio 5Repita el ejercicio 4 , pero ahora la palabra es de 32 bits. El resto de los valores se mantienen iguales.

106

Ejercicio 6Repita el ejercicio 5 , pero ahora el bus de direcciones es de 32 bits. El resto de los valores se mantienen iguales.

La CPU tiene una eficiencia de 1 MIPS

La CPU tiene una eficiencia de 1 MIPS

Page 107: Ing. Edgardo Gho

Ejercicio 7Dada una computadora que ejecuta sólo 16 operaciones. Posee 16 registros acumuladores. La palabra es de 16 bits. Ambos buses son de 16 bits. Se desea ejecutar una instrucción con 3 operandos del tipo R

x = R

y + R

z (modo registro indirecto). La

decodificación y ejecución tardan un ciclo. Los accesos a memoria tardan un ciclo. Indique la eficiencia sabiendo que la CPU opera a 3 MHz.

107

Page 108: Ing. Edgardo Gho

Ejercicio 7Dada una computadora que ejecuta sólo 16 operaciones. Posee 16 registros acumuladores. La palabra es de 16 bits. Ambos buses son de 16 bits. Se desea ejecutar una instrucción con 3 operandos del tipo R

x = R

y + R

z (modo registro indirecto). La

decodificación y ejecución tardan un ciclo. Los accesos a memoria tardan un ciclo. Indique la eficiencia sabiendo que la CPU opera a 3 MHz.

108

Bus Direcciones 16 bits

Bus Datos 16 bits

Palabra 16 bits

Cod Operación 4 bits

Registros 16

Acceso a memoria 1 ciclo

Decodificación 1 ciclo

Ejecución 1 ciclo

Operando #1 Registro Ind.

Operando #2 Registro Ind.

Operando #3 Registro Ind.

Cod Op (4) *(Rx) (4) *(Ry) (4) *(Rz) (4)

Nótese que el modo de direccionamiento es registro indirecto. Esto quiere decir que cada registro contiene la dirección del operando. Sin embargo los registros utilizados vienen en la instrucción. Por ende Rx tiene la dirección donde se guarda el resultado de operar las posiciones de memoria apuntadas por Ry y Rz.

Page 109: Ing. Edgardo Gho

Ejercicio 7Dada una computadora que ejecuta sólo 16 operaciones. Posee 16 registros acumuladores. La palabra es de 16 bits. Ambos buses son de 16 bits. Se desea ejecutar una instrucción con 3 operandos del tipo R

x = R

y + R

z (modo registro indirecto). La

decodificación y ejecución tardan un ciclo. Los accesos a memoria tardan un ciclo. Indique la eficiencia sabiendo que la CPU opera a 3 MHz.

109

Bus Direcciones 16 bits

Bus Datos 16 bits

Palabra 16 bits

Cod Operación 4 bits

Registros 16

Acceso a memoria 1 ciclo

Decodificación 1 ciclo

Ejecución 1 ciclo

Operando #1 Registro Ind.

Operando #2 Registro Ind.

Operando #3 Registro Ind.

Cod Op (4) *(Rx) (4) *(Ry) (4) *(Rz) (4)

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 1

Decodificación 0 1

Operando #2 1 1

Operando #3 1 1

Ejecución 0 1

Resultado (Operando #1) 1 1

Total 4 6

La CPU tiene una eficiencia de 0,5 MIPS

Page 110: Ing. Edgardo Gho

Ejercicio 8Dada una computadora que puede direccionar 1MPalabras utilizando un registro de segmento de 16 bits. El bus de datos y las palabras son de 16 bits. Se requiere ejecutar una instrucción de 2 operandos, el primero es inmediato y el segundo es segmentado. Sabiendo que la CPU tarda en decodificar 1 ciclo, 2 ciclos en ejecutar y 2 ciclos por acceso a memoria, calcule la eficiencia sabiendo que la CPU opera a 39 MHz.

110

Page 111: Ing. Edgardo Gho

Ejercicio 8Dada una computadora que puede direccionar 1MPalabras utilizando un registro de segmento de 16 bits. El bus de datos y las palabras son de 16 bits. Se requiere ejecutar una instrucción de 2 operandos, el primero es inmediato y el segundo es segmentado. Sabiendo que la CPU tarda en decodificar 1 ciclo, 2 ciclos en ejecutar y 2 ciclos por acceso a memoria, calcule la eficiencia sabiendo que la CPU opera a 39 MHz.

111

Bus Direcciones 20 bits

Bus Datos 16 bits

Palabra 16 bits

Acceso a memoria 2 ciclo

Decodificación 1 ciclo

Ejecución 2 ciclo

Operando #1 Inmediato

Operando #2 Segmentado

Cod Op (16) OP #1 (16) Offset Segmento(16)

Esta arquitectura no aclara cuántos bits tienen los códigos de operación, con lo cual asumimos que son iguales a la palabra. Podríamos haber asumido otra cosa pero es necesario aclararlo.El OP#1 es inmediato, y al ser palabras de 16 bits asumimos que es de 16 bits.El bus de direcciones tiene 20 bits y un registro de segmento de 16 bits (el cual ocupa los 16 bits más significativos de la dirección). Luego el offset de segmento tiene que al menos completar los 4 bits restantes pero al ser segmentado se extiende a toda la palabra, por ende son 16 bits.

Vemos que podemos traer el código de operación en un acceso a memoria, el valor inmediato en otro y el OP#2 en dos accesos más (uno para traer el offset y el otro para el dato efectivo).

Page 112: Ing. Edgardo Gho

Ejercicio 8

112

Bus Direcciones 20 bits

Bus Datos 16 bits

Palabra 16 bits

Acceso a memoria 2 ciclo

Decodificación 1 ciclo

Ejecución 2 ciclo

Operando #1 Inmediato

Operando #2 Segmentado

Cod Op (16) OP #1 (16) Offset Segmento(16)

Etapa Accesos a memoria Ciclos

Búsqueda de código de operación 1 2

Decodificación 0 1

Operando #1 1 2

Offset operando #2 1 2

Operando #2 1 2

Ejecución 0 2

Resultado 1 2

Total 5 13La CPU tiene una eficiencia de 3 MIPS

Dada una computadora que puede direccionar 1MPalabras utilizando un registro de segmento de 16 bits. El bus de datos y las palabras son de 16 bits. Se requiere ejecutar una instrucción de 2 operandos, el primero es inmediato y el segundo es segmentado. Sabiendo que la CPU tarda en decodificar 1 ciclo, 2 ciclos en ejecutar y 2 ciclos por acceso a memoria, calcule la eficiencia sabiendo que la CPU opera a 39 MHz.