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

Universidad Rey Juan Carlos

Ingeniera Informtica Organizacin y Arquitectura de Computadores

HOJA DE PROBLEMAS 2.
REPERTORIOS DE INSTRUCCIONES Y MODOS DE DIRECCIONAMIENTO

1. Por qu no basta con un solo formato de instruccin para representar todas las
instrucciones en un computador determinado?

2. Se ha demostrado que puede construirse un computador con slo dos instrucciones: una
para incrementar, y otra para decrementar y bifurcar si el resultado es 0. Por qu los
repertorios de instruccin de los computadores tienen tantas instrucciones distintas?

3. Por qu se utiliza direccionamiento implcito para saber cul es la siguiente instruccin


cuando estamos ejecutando en secuencia? Qu sucede si hay una bifurcacin en la
secuencia?

4. Cul es la diferencia entre una instruccin de salto y una de ramificacin?

5. Si un computador tiene buses diferentes para entrada / salida y memoria, ser posible
contar con una nica instruccin en el repertorio que sirva para escribir en memoria y en
perifricos?

6. Cuando una instruccin tiene un operando inmediato y dicha instruccin ha sido leda y
decodificada, en qu ubicacin se encuentra el operando inmediato?

7. Ciertos modos de direccionamiento en los computadores implican calcular la direccin en


memoria de un dato sumando un desplazamiento al contenido de un registro de propsito
general. Dnde se realiza tal clculo? Reflexiona sobre la forma en que ste se realiza,
suponiendo que el desplazamiento va en una palabra de ampliacin. En ciertas mquinas
el desplazamiento no va en una palabra de ampliacin, sino que cabe dentro de la propia
palabra de operacin. Qu es lo que esto implica? (Pista: el tamao de la palabra de
operacin de la instruccin tiene relacin con el ancho de palabra del computador).

8. Disea un conjunto de formatos de instruccin para una mquina con las siguientes
caractersticas:
Su ancho de palabra es de 16 bits.
Tiene 60 instrucciones diferentes, 50 de las cuales tienen 2 operandos, mientras que las
10 restantes tienen un nico operando.
Cuenta con la posibilidad de direccionar 64 Kbytes en memoria.
Dispone de un banco de 16 registros de tamao palabra.
Tiene 5 modos de direccionamiento: inmediato (campo CD), absoluto directo a memoria
(campo CD), directo a registro (campo Registro), indirecto a registro (campo Registro) e
indirecto a registro con desplazamiento (campos Registro y CD).
La arquitectura es bastante ortogonal.

9. Disea un conjunto de formatos de instruccin para una mquina con las siguientes
caractersticas:
Su ancho de palabra es de 16 bits.
Cuenta con la posibilidad de direccionar 64 Kbytes en memoria.
1
Dispone de un banco de 16 registros de tamao palabra.
Admite los siguientes modos de direccionamiento:
Inmediato (campo CD), slo para operandos fuente.
Directo a registro (campo Registro).
Indirecto a registro (campo Registro).
Indirecto a registro con predecremento (campo Registro).
Indirecto a registro con posincremento (campo Registro).
Indirecto a registro con desplazamiento (campos Registro y CD).
Relativo a PC con desplazamiento (campo CD), slo para operandos fuente.
Absoluto directo a memoria (campo CD).
Tiene las siguientes instrucciones:
Una instruccin de transferencia con dos operandos explcitos prcticamente
ortogonal.
20 instrucciones aritmticas y lgicas de dos operandos explcitos, uno de los
cuales ser obligatoriamente un registro (puede ser fuente o destino).
10 instrucciones que tienen un nico operando explcito que forzosamente ser
un registro.
10 instrucciones que tienen un nico operando explcito que podr ser de
cualquier modo de direccionamiento excepto inmediato (podr incluir CD si es
preciso).
2 instrucciones de tipo condicional, con nicamente un operando explcito, que
pueden contemplar cada una de ellas hasta 16 condiciones diferentes. El
operando puede tener cualquier modo de direccionamiento excepto inmediato
(podr incluir CD si es preciso).
10 instrucciones sin operandos explcitos.

10. Muchas mquinas tienen instrucciones aritmticas y de otros tipos con slo dos operandos,
actuando uno de ellos a la vez como fuente y destino. Cules pueden ser las razones para
no incluir un tercer operando que acte como resultado? Tiene alguna influencia esto
sobre el nmero de instrucciones de los programas?

11. Si el nemotcnico de la suma en el repertorio de instrucciones de un computador con


arquitectura GPR ortogonal es ADD, podemos escribir ADD R1,R2 donde R1 y R2 son
registros, y podremos escribir tambin ADD A,R2, donde A es una variable que se
encuentra en memoria. Ambas instrucciones son iguales, o podremos considerarlas como
instrucciones distintas?

12. Sea un computador con arquitectura memoria-memoria en el cual cada acceso a memoria
tarda varios ciclos de reloj. Podr implementarse dicha mquina sin usar ningn registro
de tipo acumulador para almacenar operandos o resultados?

13. Se desea disear un fragmento de programa en ensamblador para ejecutar la siguiente


expresin escrita en PASCAL:

Z := (A*5+B)/C Z*(32+A*B-(B-D*C))

Tanto Z como A, B, C y D son variables ubicadas en memoria.

Se pide:

2
1) Disear el fragmento de programa para una mquina de pila, suponiendo que en
las instrucciones de dos operandos el primero se encuentra en la cabecera de la
pila, y el segundo est inmediatamente debajo. Calcular el nmero de instrucciones
del fragmento de cdigo, el nmero bytes que ocupa en memoria, su CPI medio y
su velocidad de ejecucin en ciclos teniendo en cuenta que:
Los operandos tienen 16 bits.
Cada palabra de instruccin con un cdigo de operacin ocupa 1 byte.
Cada referencia a un operando en memoria ocupa 2 bytes adicionales.
Cada lectura o escritura de un byte en memoria consume 3 ciclos de reloj.
La decodificacin de cada instruccin dura 1 ciclo de reloj.
La duracin de las operaciones aritmticas es la reflejada en la tabla 1.

Tiempo de
Tipo de instruccin
ejecucin
Suma o resta 1 ciclo
Multiplicacin 4 ciclos
Divisin 10 ciclos
Tabla 1. Duracin de las operaciones aritmticas.

2) Disear el fragmento de programa para una mquina de acumulador. Calcular el


nmero de instrucciones del fragmento de cdigo, el nmero bytes que ocupa en
memoria, su CPI medio y su velocidad de ejecucin en ciclos teniendo en cuenta
que:
Los operandos tienen 16 bits.
Cada palabra de instruccin con un cdigo de operacin ocupa 1 byte.
Cada referencia a un operando en memoria ocupa 2 bytes adicionales.
Cada lectura o escritura de un byte en memoria consume 3 ciclos de reloj.
La decodificacin de cada instruccin dura 1 ciclo de reloj.
La duracin de las operaciones aritmticas es la reflejada en la tabla 1.

3) Disear el fragmento de programa para una mquina de memoria-memoria,


suponiendo que en las instrucciones el operando destino siempre es el que se
encuentra en primer lugar. Calcular el nmero de instrucciones del fragmento de
cdigo, el nmero bytes que ocupa en memoria, su CPI medio y su velocidad de
ejecucin en ciclos teniendo en cuenta que:
Los operandos ocupan 16 bits.
Cada palabra de instruccin con un cdigo de operacin ocupa 1 byte.
Cada referencia a un operando en memoria ocupa 2 bytes adicionales.
Cada lectura de un byte en memoria consume 3 ciclos de reloj.
La decodificacin de cada instruccin dura 1 ciclo de reloj.
La duracin de las operaciones aritmticas es la reflejada en la tabla 1.

4) Disear el fragmento de programa para una mquina de registro-memoria,


suponiendo que en las instrucciones el operando destino siempre es el que se
encuentra en primer lugar. Calcular el nmero de instrucciones del fragmento de
cdigo, el nmero bytes que ocupa en memoria, su CPI medio y su velocidad de
ejecucin en ciclos teniendo en cuenta que:
Los operandos ocupan 16 bits.
Cada palabra de instruccin con un cdigo de operacin ocupa 2 bytes.
Cada referencia a un operando en memoria ocupa 2 bytes adicionales.

3
Cada lectura o escritura de una palabra (2 bytes) en memoria consume 3 ciclos
de reloj.
La decodificacin de cada instruccin dura 1 ciclo de reloj.
La duracin de las operaciones aritmticas es la reflejada en la tabla 1.

5) Disear el fragmento de programa para una mquina de carga-almacenamiento,


suponiendo que en las instrucciones el operando destino siempre es el que se
encuentra en primer lugar. Calcular el nmero de instrucciones del fragmento de
cdigo, el nmero bytes que ocupa en memoria, su CPI medio y su velocidad de
ejecucin en ciclos teniendo en cuenta que:
Los operandos ocupan 32 bits.
Todas las instrucciones ocupan 4 bytes, incluyendo cdigo de operacin y
referencias a operandos.
Cada lectura o escritura de una palabra (4 bytes) en memoria consume 3 ciclos
de reloj.
La decodificacin de cada instruccin dura 1 ciclo de reloj.
La duracin de las operaciones aritmticas es la reflejada en la tabla 1.

6) Hacer una tabla de doble entrada de forma que cada fila corresponda a uno de los
tipos de mquina anteriores, y en las columnas aparezcan las siguientes
informaciones:
Columna 1: longitud del programa en nmero de instrucciones.
Columna 2: longitud del programa en nmero de bytes que ocupa en memoria.
Columna 3: nmero de accesos a memoria debidos a lecturas o escrituras de
operandos.
Columna 4: el CPI medio del programa.
Columna 5: tiempo de ejecucin del programa en ciclos.

Comentar los resultados obtenidos para cada tipo de mquina.

14. Explica las ventajas e inconvenientes de los siguientes tipos de arquitecturas una por una,
comparndolas con el resto:
a) Arquitectura de pila.
b) Arquitectura de acumulador.
c) Arquitectura de memoria-memoria.
d) Arquitectura GPR de registro-memoria.
e) Arquitectura GPR de registro-registro.
Razona acerca de las caractersticas de las mquinas que pueden servir de soporte a dichas
arquitecturas (ancho de palabra, tamao y formatos de las instrucciones, presencia o ausencia
de bancos de registros, nmero de registros en el banco en su caso, necesidad de usar
acumuladores, etc).

4
15. Se desea disear un fragmento de programa en ensamblador para ejecutar la siguiente
expresin, en la que Z, A, B y C son variables de 32 bits ubicadas en memoria:

Z := Z - (A+B*C)*12) / A;

Se pide resolver los siguientes apartados:

a) Disear el fragmento de programa para una mquina de pila con las siguientes
caractersticas:
En las instrucciones con dos operandos fuente el primero se encuentra en la cima de la
pila y el segundo est inmediatamente debajo.
La palabra con el nemotcnico de la instruccin ocupa 1 byte.
Cada campo de direccin de memoria ocupa 4 bytes en la instruccin.
Cada campo de dato inmediato ocupa 4 bytes en la instruccin.

b) Disear el fragmento de programa para una mquina de acumulador con las siguientes
caractersticas:
La palabra con el nemotcnico de la instruccin ocupa 1 byte.
Cada campo de direccin de memoria ocupa 4 bytes en la instruccin.
Cada campo de dato inmediato ocupa 4 bytes en la instruccin.
El nemotcnico para cargar un dato de memoria en el acumulador es LOAD y el
nemotcnico para almacenar en memoria el contenido del acumulador es STORE.

c) Disear el fragmento de programa para una mquina de carga-almacenamiento con las


siguientes caractersticas:
El ancho de palabra de todas las instrucciones es de 4 bytes (32 bits) e incluye todos los
campos necesarios (desplazamientos, inmediatos, etc).
Tiene un banco de 32 registros de propsito general.
Para acceder a un dato residente en memoria, basta con hacer un LOAD o un STORE. El
ensamblador traduce automticamente la direccin del dato a un direccionamiento
indirecto a un puntero global ($gp) establecido de antemano con un cierto
desplazamiento que cabe siempre en el campo correspondiente.
En las instrucciones con varios operandos, el destino siempre aparece indicado
explcitamente en primer lugar.

d) Calcular cul de los fragmentos de programa anteriores produce ms trfico en memoria


(incluyendo instrucciones y datos), medido en nmero total de bytes transferidos.
Calcular tambin cul de estos programas ocupa ms espacio en memoria (sin contar el
espacio destinado a variables).

16. Se desea disear un fragmento de programa en ensamblador para ejecutar la siguiente


expresin, en la que Z, A, B y C son variables de 32 bits ubicadas en memoria:
Z := (A*B-C)/ A-(B/5);
Se pide:

a) Disear el fragmento de programa para una mquina registro-memoria (1,2) con las
siguientes caractersticas:
o En las instrucciones con dos operandos, el destino se escribe siempre en primer
lugar.
o El operando destino puede ser un registro o un dato residente en memoria, a
eleccin del programador.
5
o La palabra con el nemotcnico de la instruccin ocupa 1 byte, cada campo de
direccin de memoria ocupa 4 bytes, cada campo de dato inmediato ocupa 2
bytes y cada referencia a un operando en registro ocupa 1 byte.
o Para acceder a un dato residente en memoria, basta con hacer un LOAD o un
STORE, indicando el nombre del registro y la direccin de la variable (es decir,
su nombre).

b) Disear el fragmento de programa para una mquina de memoria-memoria (3,3) con


las siguientes caractersticas:
o El operando destino se escribe siempre en primer lugar.
o La palabra con el nemotcnico de la instruccin ocupa 1 byte, cada campo de
direccin de memoria ocupa 4 bytes y cada campo de dato inmediato ocupa 2
bytes.

c) Disear el fragmento de programa para una mquina con acumulador con las
siguientes caractersticas:
o La palabra con el nemotcnico de la instruccin ocupa 1 byte, cada campo de
direccin de memoria ocupa 4 bytes y cada campo de dato inmediato ocupa 2
bytes.
o El acumulador es siempre el primer operando en las operaciones aritmticas.

d) Calcular cul de los fragmentos de programa anteriores produce ms trfico en memoria


(incluyendo instrucciones y datos), medido en nmero total de bytes transferidos.
Calcular tambin cul de estos programas ocupa ms espacio en memoria (sin contar el
espacio destinado a variables).

17. Disee un conjunto de formatos de instruccin para una mquina con las siguientes caractersticas:
Su ancho de palabras es de 32 bits.
Tiene 77 instrucciones:
15 de ellas tienen un nico operando.
El resto tienen 2 operandos. 14 de estas instrucciones son aritmtico-lgicas y
necesitan de un campo funcin de 5 bits que sirve para diferenciar qu hace cada
una de ellas.
Dispone de un banco de 32 registros tamao palabra.
Tiene 9 modos de direccionamiento: directo a registro, directo (o absoluto) a memoria
(campo CD), indirecto a registro, indirecto a registro con desplazamiento (campo CD),
indirecto a memoria, indirecto a registro con predecremento, indirecto a registro con
postincremento, escaledo e inmediato (campo CD).
El campo CD no podr tener menos de 8 bits en ningn caso.
La arquitectura es bastante ortogonal.