150 likes | 391 Views
El procesador. Datapath para las instrucciones de brinco. Instrucciones de brinco. Dos tipos de instrucciones de brincos: Brinco condicional. beq $t0, $t1, Etiqueta ; if t0 == t1 goto Etiqueta Brinco incondicional. j Etiqueta ; goto Etiqueta. Brinco condicional.
E N D
El procesador Datapath para las instrucciones de brinco
Instrucciones de brinco • Dos tipos de instrucciones de brincos: • Brinco condicional. • beq $t0, $t1, Etiqueta ; if t0 == t1 goto Etiqueta • Brinco incondicional. • j Etiqueta ; goto Etiqueta Arquitectura de Computadoras
Brinco condicional • La instrucción de brinco condicional • beq $r1, $r2, Etiqueta • Compara $r1 con $r2. • Si $r1 = $r2 brinca a la dirección determinada por Etiqueta. • Si $r1 $r2 continúa con la siguiente instrucción. Arquitectura de Computadoras
Brinco condicional • En 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 Arquitectura de Computadoras
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: 1000 Etiqueta: … … 1040 beq $s0, $s1, Etiqueta Hay 11 palabras (44 bytes) entre 1000 y 1044. Arquitectura de Computadoras
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 Arquitectura de Computadoras
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. Arquitectura de Computadoras
Brinco condicional Hay que tomar en cuenta lo siguiente: • El brinco es relativo con PC + 4. • El PC ya se incrementó durante el ciclo de fetch (primera fase del datapath). • 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. • Hay que evaluar la condición. Arquitectura de Computadoras
Brinco condicional • En resumen, el datapath del brinco condicional hace 2 operaciones: • Calcular la dirección destino. • Si toma el brinco: PC = PC + (offset << 2). • Si no toma el brinco: PC = PC + 4. • Comparar el contenido de los registros. Arquitectura de Computadoras
Datapath para un brinco condicional Arquitectura de Computadoras
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. Arquitectura de Computadoras
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. Arquitectura de Computadoras
Brinco incondicional • Ejemplo: 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. Arquitectura de Computadoras
Brinco incondicional • Otra 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. Arquitectura de Computadoras
Instrucciones de brinco • 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. Arquitectura de Computadoras