El procesador
Datapath para las instrucciones de brinco
Instrucciones de brinco

Dos tipos de instrucciones de brincos:
1. Brinco condicional.

beq $t0, $t1, Etiqueta
2. Brinco incondicional.
 j Etiqueta
Universidad de Sonora
Arquitectura de Computadoras
; if t0 == t1 goto Etiqueta
; goto Etiqueta
2
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.
Universidad de Sonora
Arquitectura de Computadoras
3
Brinco condicional
 En MIPS, los brincos condicionales son relativos al
contador del programa (PC).
 Ejemplo:
…
…
beq $s0, $s1, Etiqueta
1000 Etiqueta:
1040
 El brinco beq se traduce en lenguaje máquina :
000100 10000 10001 1111111111110101
beq
$s0 $s1
-11
Universidad de Sonora
Arquitectura de Computadoras
4
Brinco condicional
 Por 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:
…
…
beq $s0, $s1, Etiqueta
1000 Etiqueta:
1040
Hay 11 palabras (44 bytes) entre 1000 y 1044.
Universidad de Sonora
Arquitectura de Computadoras
5
Brinco condicional
 Otra 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
Universidad de Sonora
Arquitectura de Computadoras
6
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.
Universidad de Sonora
Arquitectura de Computadoras
7
Brinco condicional
Hay 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.
Universidad de Sonora
Arquitectura de Computadoras
8
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.
Universidad de Sonora
Arquitectura de Computadoras
9
Datapath para un brinco
condicional
Universidad de Sonora
Arquitectura de Computadoras
10
Explicación
 Para 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.
Universidad de Sonora
Arquitectura de Computadoras
11
Brinco incondicional
 La instrucción
 j Etiqueta
 Brinca 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.
Universidad de Sonora
Arquitectura de Computadoras
12
Brinco incondicional
 Ejemplo:
…
…
j Etiqueta
1000 Etiqueta:
1040
 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.
Universidad de Sonora
Arquitectura de Computadoras
13
Brinco incondicional
 Otra forma de ver la instrucción j:
PC += 4
PC = (offset << 2)
; no tiene efecto
; multiplica por 4
 La instrucción j necesita:
 Hacer un shift a la izquierda de 2 bits. Usa una unidad
de shift.
Universidad de Sonora
Arquitectura de Computadoras
14
Instrucciones de brinco

1.
2.
3.
4.
5.
En resumen, el datapath para las instrucciones de
brinco (condicionales e incondicionales) necesita:
Banco de registros.
Unidad para extender el signo.
Sumador.
ALU para comparar.
Unidad de shift.
Universidad de Sonora
Arquitectura de Computadoras
15
Descargar

El procesador: datapath para las instrucciones de brinco