El procesador Datapath para las instrucciones de brinco.

15
El procesador Datapath para las instrucciones de brinco

Transcript of El procesador Datapath para las instrucciones de brinco.

Page 1: El procesador Datapath para las instrucciones de brinco.

El procesadorDatapath para las instrucciones de

brinco

Page 2: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 2

Instrucciones de brinco Dos tipos de instrucciones de brincos:

1. Brinco condicional. beq $t0, $t1, Etiqueta ; if t0 == t1 goto Etiqueta

2. Brinco incondicional. j Etiqueta ; goto Etiqueta

Page 3: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 3

Brinco condicional La instrucción de brinco condicional

beq $r1, $r2, Etiqueta

1. Compara $r1 con $r2.

2. Si $r1 = $r2 brinca a la dirección determinada por Etiqueta.

3. Si $r1 $r2 continúa con la siguiente instrucción.

Page 4: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 4

Brinco condicionalEn MIPS, los brincos condicionales son relativos al

contador del programa (PC).Ejemplo:

1000 Etiqueta: …

1040 beq $s0, $s1, Etiqueta

El brinco beq se traduce en lenguaje máquina :000100 10000 10001 1111111111110101

beq $s0 $s1 -11

Page 5: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 5

Brinco condicionalPor conveniencia, el PC se incrementa en 4 antes

de checar la condición.El brinco es relativo a la siguiente instrucción

(PC+4).La diferencia se calcula en palabras no en bytes.En el ejemplo:

1000 Etiqueta: ……

1040 beq $s0, $s1, Etiqueta

Hay 11 palabras (44 bytes) entre 1000 y 1044.

Page 6: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 6

Brinco condicionalOtra forma de ver la instrucción beq:

PC += 4

offset = (Etiqueta – PC) >> 2 ; divide entre 4

if $s0 == $s1

PC += (offset << 2) ; multiplica por 4

Page 7: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 7

Brincos relativos¿Cuál es su ventaja?En MIPS solo hay 16 bits para indicar la dirección

en los brincos condicionales (beq, bne).Si los brincos fueran absolutos, un programa no

podría tener mas de 216 palabras.Usando brincos relativos:

El programa puede tener cualquier tamaño.Los brincos están limitados a 215 palabras hacia atrás

y 215 – 1 palabras hacia adelante.Usando el brinco incondicional (instrucción j), se

puede ampliar ese rango.

Page 8: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 8

Brinco condicionalHay que tomar en cuenta lo siguiente:

1. El brinco es relativo con PC + 4. El PC ya se incrementó durante el ciclo de fetch

(primera fase del datapath).

2. El offset viene especificado en palabras no en bytes.

Para convertir de palabras a bytes se multiplica por 4, o se hace un shift a la izquierda de 2 bits.

3. Hay que evaluar la condición.

Page 9: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 9

Brinco condicional En resumen, el datapath del brinco condicional

hace 2 operaciones:

1. Calcular la dirección destino.a) Si toma el brinco: PC = PC + (offset << 2).

b) Si no toma el brinco: PC = PC + 4.

2. Comparar el contenido de los registros.

Page 10: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 10

Datapath para un brinco condicional

Page 11: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 11

ExplicaciónPara calcular la dirección destino se usa:

Unidad de extensión de signo.Unidad para el shift a la izquierda de 2 bits.Sumador.

Para hacer la comparación de registros:Banco de registros para leer los dos registros.ALU para hacer la comparación. Se puede comparar

si $r1 == $r2 haciendo la resta $r1 – $r2 y checando si la salida Zero se prende o no.

Page 12: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 12

Brinco incondicionalLa instrucción

j EtiquetaBrinca a la dirección determinada por Etiqueta.El brinco es absoluto.La dirección de Etiqueta se guarda como parte de la

instrucción.La dirección se guarda en palabras no en bytes.

Page 13: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 13

Brinco incondicionalEjemplo:

1000 Etiqueta: …

1040 j Etiqueta

El brinco j se traduce en lenguaje máquina:000010 00000000000000000011111010

j 250

Un brinco j no puede cruzar el límite de 226 (67 millones) instrucciones. En caso de ser necesario se usa un brinco jal.

Page 14: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 14

Brinco incondicionalOtra forma de ver la instrucción j:

PC += 4 ; no tiene efecto

PC = (offset << 2) ; multiplica por 4

La instrucción j necesita:Hacer un shift a la izquierda de 2 bits. Usa una unidad

de shift.

Page 15: El procesador Datapath para las instrucciones de brinco.

Universidad de Sonora Arquitectura de Computadoras 15

Instrucciones de brinco En resumen, el datapath para las instrucciones de

brinco (condicionales e incondicionales) necesita:

1. Banco de registros.

2. Unidad para extender el signo.

3. Sumador.

4. ALU para comparar.

5. Unidad de shift.