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

ELO311 Estructura de Computadores Segundo Semestre 2008.

1. Para el procesador Monociclo visto en clases:


Sin efectuar modificaciones al camino de datos, ¿pueden efectuarse las operaciones, descritas en
RTL:
a) De tipo Load Word: R[rd] = Mem[ R[rs]+R[rt] ]; PC= PC + 4; 10 puntos
b) De tipo Store Word, descrita en RTL: Mem[ R[rs]+R[rt] ] = R[rd]; PC = PC + 4; 20 puntos
Justifique su respuesta, indicando las señales de control que las implementan.

Efectuando modificaciones al camino de datos, ¿pueden efectuarse las operaciones, descritas en


RTL?
c) De almacenamiento de dirección de instrucción siguiente: R[rs] = PC+4; PC = PC+4;
20 puntos
d) Mem[ R[rs]+R[rt] ] = 0; PC = PC + 4; 10 puntos
Justifique su respuesta, agregando las señales de control que sean necesarias, las modificaciones
al camino de datos, y las señales de control que las implementan.

Solución.
a) Puede efectuarse, en forma similar a la instrucción Load Word, pero direccionando la memoria
de datos con la suma de los contenidos de los registros indexados por rt y rs.

ADD: R[rd] = Mem[ R[rs]+R[rt] ]; PC = PC + 4

nPC_sel = “+4”, WEPC =1, Unidad Instrucción.


RegDst = "rd", Unidad Registros. Lectura.
AluSrc = "busB", AluCtr = “add”, ExtOp=∅, Unidad Operaciones.
MemWr=0, MemRd=1, Unidad Memoria Datos.
Memtoreg="mem", RegWr=1. Unidad Registros. Escritura.

b) La instrucción requiere la lectura simultánea de tres registros, lo cual no puede efectuarse, ya


que no puede leerse R[rd].
Lo que está disponible en el bus de datos de entrada de la memoria es R[rt], y no R[rd].
Lo que si puede efectuarse, sin modificaciones al hardware, es:
Mem[ R[rs]+R[rt] ] = R[rt]; PC = PC + 4;

c) Se requiere modificar las entradas del arreglo de registros. Es preciso colocar un mux,
controlado por la nueva señal de control RegBusW, que permite ingresar la señala (PC+4) en el bus
de escritura del arreglo de registros.

Además debe agregarse una entrada en el mux, con el campo rs de la instrucción, que selecciona
el registro destino, donde se escribirá un nuevo valor (el seleccionado por RegBusW).

R[rs] = PC+4; PC = PC+4;

nPC_sel = “+4”, WEPC =1, Unidad Instrucción.


RegDst = "rs", Unidad Registros. Lectura.
AluSrc = "busB", AluCtr = “add”, ExtOp=∅, Unidad Operaciones.
MemWr=0, MemRd=∅, Unidad Memoria Datos.
RegBusW=”PC+4”, Memtoreg=∅, RegWr=1. Unidad Registros. Escritura.
El siguiente diagrama muestra las modificaciones al camino de datos:
RegBusW RegDst RegWr

rs Ra WE
5 32
Rb
5
1 busA
rt 5
2 Rw
PC+4 0 RW
32
1 rd 32 Registros
32-bit busB
32
0
busW

d) Es preciso agregar un mux, para llevar al bus de entrada de datos de la memoria el contenido
del busB o una señal formada por puros ceros. El mux queda controlado por la nueva señal: CtrDin.
MemWr MemRd MemtoReg
CtrDin

AddrD Dout busW


busB Memoria 1
0 Datos

Din
Cero
1

Mem[ R[rs]+R[rt] ] = 0; PC = PC + 4;

nPC_sel = “+4”, WEPC =1, Unidad Instrucción.


RegDst = ∅, Unidad Registros. Lectura.
AluSrc = "busB", ExtOp = “∅”, AluCtr = “add”, Unidad Operaciones.
CtrDin=”Cero”, MemWr=1, MemRd=0, Unidad Memoria Datos.
Memtoreg=∅, RegWr=0. Unidad Registros. Escritura
2. Para el procesador Monociclo visto en clases, efectuar las modificaciones necesarias al hardware
para que se pueda ejecutar la siguiente instrucción: Add3 $t0, $t1, $t2, $t3
Transferencia Lógica: add3: R[rd] = R[rs] + R[rt] +R[shamt]; PC =PC +4
a) Indicar las modificaciones a las unidades y señales de control que se agregan. 20 puntos
b) Transferencias Físicas separadas por unidad. 20 puntos.

Solución.
Para obtener tres salidas del arreglo de registros es necesario modificar dicha unidad de tal manera de tener
una entrada Rc (en la cual se ingresa shamt) y una salida adicional que entregue R[rc]. Ver figura 1.
Ra
RegWr R0 Rb

Rc
Decodi- 0
ficador 1
1
5 a 32
R1 BusA
RW 31

BusB

31

BusW
BusC

R31

Figura 1

Adicionalmente se hace necesario realizar la suma de R[rs] + R[rt] +R[shamt]. Ya se encuentra


implementada la suma de R[rs] + R[rt], pero la ALU no es de 3 entradas por lo que se tiene que agregar
un nuevo sumador para lograr: R[rs] + R[rt] +R[shamt]. Además se agrega un multiplexor para mantener
las operaciones anteriores. Ver Figura 2
ExtOp Equal AluSrc AluCtr_1 AluCtr_2 Aluout_Ctr

BusA
Igual
AluOut

AluOut_1
BusB

AluOut_2
Extensor Op3
2
BusC

Inm16
busB

Figura 2
Transferencias físicas de datos.

add3: R[rd] = R[rs] + R[rt] +R[shamt]; PC =PC +4

AddrI=PC, busIR=MemInst[AddrI], PC=PC+4, Unidad Instrucción.


Ra=rs, Rb=rt, Rc= shamt, RW=rd, busA=R[Ra], busB=R[Rb], busC=R[Rc), Unidad Registros. Lectura.
AluOut_1=add(busA, busB), AluOut_2 = add(AluOut_1, busC),Alu_Out = AluOut_2,
Unidad Operaciones.
busW=AluOut, R[RW]=busW. Unidad Registros. Escritura.

Valores de las señales de control para activar las transferencias lógicas. (esto no se pedía responder)

nPC_sel = “+4”, WEPC =1, Unidad Instrucción.


RegDst = "rd", Unidad Registros. Lectura.
AluSrc = "busB", AluCtr_1 = “add”, AluCtr_2 = “add”, ExtOp=∅, Aluout_ctr= 1, Unidad Operaciones.
MemWr=0, MemRd=∅, Unidad Memoria Datos.
Memtoreg="alu", RegWr=1. Unidad Registros. Escritura.

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