Vous êtes sur la page 1sur 17

Clase prctica - Microarquitectura del CPU a

Juan Pablo

Primer Cuatrimestre de 2011- Organizacin del Computador I o

Introduccin o
A1 B1 SS

As

C1

ADD R1, R0 ?

Ae A2 A3 Ae A3 B3 Ae A4 B4 S S S

As

C2

As

C3

As

C4 C5

El lenguaje

NEG

Podemos activar seales n

NEG on : niega los bits de la entrada y los pone a la salida NEG


o

: pasa los bits sin

modificarlos

El lenguaje

HAB.

SET

s3

CLR

Q
HAB.

SET

s2

Podemos ver alguna parte espec ca de un registro y usarla para algo...


WriteEnable

CLR

Q
HAB.

SET

s1

CLR

Q
HAB.

SET

s0

CLR

Reset

Enable out

Vale R0[3]

El lenguaje

Existen caminos (l neas) por donde van los datos. Podemos mover un dato de un registro a otro si hay un camino directo entre ellos Podemos asignar un valor constante a un registro.

R0

R_OUT

R1

Vale R1:= R0 R OUT:=R0 . . . R0:=0

No vale R0:=R OUT R1:=R OUT R1:=x

El lenguaje

Podemos analizar un registro o parte de l y actuar en e consecuencia

if R1[3:0]=0x0 R OUT:=R3 else R OUT:=R2 endif

Ejercicio 1
Se cuentan con los siguientes circuitos: Una ALU con 2 registros de 16 bits (ALU IN1 y ALU IN2) que usa de entradas y 5 registros que usa de salida: ALU OUT de 16 bits y (ALU Z, ALU N, ALU C y n ALU V) de 1 bit. Sus seales de control son: Seal n Efecto ALUadd ALU OUT := ALU IN1 + ALU IN2 ALUsub ALU OUT := ALU IN1 - ALU IN2 ALUneg ALU OUT := - ALU IN1 ALUand ALU OUT := ALU IN1 AND ALU IN2 ALUnot ALU OUT := NOT ALU IN1 Un extensor de signo complemento a 2 (SIGN EXT) con un registro de entrada de 16 bits (EXT IN) y un registro de salida de 16 bits (EXT OUT). Sus seales de control son: n Seal n Efecto SIGN EXTon activa la operacin de extensin de signo de 8 bits a 16 bits o o SIGN EXTo copia el contenido de EXT IN en ALU IN2 1. Suponiendo que se encuentra resuelta la decodicacin y el acceso a memoria o de la mquina, disear el camino de datos de la arquitectura de la mquina a n a ORGA1. No dibujar la unidad de control para simplicar el diagrama. 2. Indicar cul es la secuencia de seales (o microoperaciones) que debe realizar la a n unidad de control para ejecutar las siguientes instrucciones:

MOV R5, R1 AND R7, R1 NEG R4

Ejercicio 1 - Solucin o
R0 ... R7 SP PC ALU EXT_IN SIGN_EXT

ALU_IN1

ALU_IN2

ALU_Z ALU_N ALU_V Z N V C ALU_C

ALU_OUT

CPUOrga1

Nota: EXT OUT es el mismo registro que ALU IN2

Ejercicio 1 - Solucin: Secuencias de microoperaciones o

MOV R5,R1
1. R5 := R1

AND R7, R1
1. 2. 3. 4. 5. 6. 7. 8. 9. ALU IN1 := R7 EXT IN := R1 SIGN EXTo ALUand R7 := ALU OUT Z := ALU Z N := ALU N C := ALU C V := ALU V

NEG R4
1. 2. 3. 4. 5. 6. 7. ALU IN1 := R4 ALUneg R4 := ALU OUT Z := ALU Z N := ALU N C := ALU C V := ALU V

Ejercicio 2
Se cuenta con una memoria con palabra y direccionamiento de 16 bits. Posee 2 registros de entrada de 16 bits (ADDR, WRT DATA) y 1 de salida de 16 bits n (RD DATA). Sus seales de control son: MEM WRITE: Activa la microoperacin de escritura del contenido del registro o WRT DATA en la direccin de memoria indicada por el ADDR o MEM READ: Activa la microoperacin de lectura del contenido de la direccin o o de memoria indicada por el ADDR, colocando el valor en el registro RD DATA. 1. Extender el camino de datos de la arquitectura de la mquina ORGA1. No a dibujar la unidad de control para simplicar el diagrama. 2. Qu componentes del camino de datos se encuentran dentro del CPU y fuera e de l? e 3. Indicar cul es la secuencia de seales (o microoperaciones) que debe realizar la a n unidad de control para ejecutar las siguientes instrucciones:

MOV MOV MOV MOV

R2, R5 R2, [R5] R2, [0xFF00] [0xFF00], [0xFF01]

Ejercicio 2: Solucin o

.... IR0 IR1 IR2

.... ADDR
WRT_DATA RD_DATA

bus externo

Memoria

CPU Orga1

Ejercicio 2 - Solucin: secuencias de microoperaciones o

MOV R2, [0xFF00] MOV R2, R5


1. R2 := R5 1. ADDR := IR1 2. MEM READ 3. R2 := RD DATA

MOV R2, [R5]


1. ADDR := R5 2. MEM READ 3. R2 := RD DATA

MOV [0xFF00], [0xFF01]


1. 2. 3. 4. 5. ADDR := IR2 MEM READ WRT DATA := RD DATA ADDR := IR1 MEM WRITE

Ejercicio 3
La computadora STACK1 es una mquina de pila con direccionamiento a byte, a tamao de palabra de 16 bits y direcciones de memoria de 12 bits. Trabaja con n aritmtica complemento a 2 de 16 bits. Posee el siguiente set de instrucciones: e Instruccin o STORE [M] LOAD [M] ADD SUB JUMP SKIP N SKIP Z SKIP GE CodOp 0000 0001 0010 0011 0100 0101 0110 0111 Signicado push [M] [M] := pop push(pop+pop) push(pop-pop) PC := pop (slo los 12 bits menos signicativos) o ignora la prxima instruccin si top es < 0 o o ignora la prxima instruccin si top es 0 o o ignora la prxima instruccin si top es >= 0 o o

El formato de instruccin de STACK1 es el que sigue: o CodOp 4 bits Direccin o 12 bits

1. Denir el camino de datos y la organizacin del CPU de STACK1 para soportar o la implementacin de, al menos, estas instrucciones. o 2. Describa la secuencia de microoperaciones que realiza la unidad de control para realizar un fetch de una instruccin. o 3. Implementar las siguientes instrucciones

i) JUMP ii) SKIP Z

iii) STORE [M] iv) ADD

Ejercicio 3: Solucin o
Se utiliza un circuito incrementador con 2 seales: INC +2 que suma 2 a la entrada, y n INC 2 que resta 2 a la entrada. ADDR, INC IN, INC OUT, SP y PC son registros de 12 bits.

SP PC IR ALU ALU_IN1

ALU_IN2

ADDR bus externo Memoria


WRT_DATA RD_DATA

ALU_OUT INC_IN INC INC_OUT CPU STACK1

Ejercicio 3 - Solucin: fetch o

1. ADDR := PC 2. MEM READ 3. IR := RD DATA // cargo el IR 4. INC IN := PC 5. INC


+2

6. PC := INC OUT // incremento PC

Ejercicio 3 - Solucin: secuencia de microoperaciones o

SKIP Z JUMP

1. 2. 3. 4. 5. 6.

INC IN := SP INC +2 SP := INC OUT ADDR := SP MEM READ PC := RD DATA[11:0]

1. 2. 3. 4. 5. 6. 7. 8. 9.

INC IN := SP INC +2 ADDR := INC OUT MEM READ if RD DATA = 0x0000 INC IN := PC INC +2 PC := INC OUT endif

Ejercicio 3 - Solucin: secuencia de microoperaciones o


ADD 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.

STORE [M] 1. ADDR := IR[11:0] 2. MEM READ 3. WRT DATA := RD DATA 4. ADDR := SP 5. MEM WRITE 6. INC IN := SP 7. INC 2 8. SP := INC OUT

INC IN := SP INC +2 SP := INC OUT ADDR := SP MEM READ ALU IN1 := RD DATA // primer operando INC IN := SP INC +2 SP := INC OUT ADDR := SP MEM READ ALU IN2 := RD DATA // segundo operando ALU add WRT DATA := ALU OUT ADDR := SP MEM WRITE // push resultado INC IN := SP INC 2 SP := INC OUT