Sei sulla pagina 1di 42

Arquitectura de Computadoras UNT D.

Cohen 1 2014

Arquitectura de Computadores
Tema 6: Descripcin del ISA del MIPS
Eduardo Daniel Cohen dcohen@arnet.com.ar
http://www.herrera.unt.edu.ar/arqcom
Arquitectura de Computadoras UNT D. Cohen 2 2014

Temario
Operaciones del MIPS
Procesamiento: Aritmticas y Lgicas.
Transferencia de Control (Saltos).
Transferencia de Datos
Convenciones de uso de registros.
Seudoinstrucciones.
Miscelneas.
Arquitectura de Computadoras UNT D. Cohen 3 2014

Memoria y Registros
2
32
x bytes de memoria
31 x 32-bit GPRs (R0 = 0) (Registros de Prop. General)
32 x 32-bit registros FP (FP = Floating Point)
PC - program counter
lo hi registros de salida del multiplicador
0
r0
r1

r31
PC
lo
hi
Almacenamiento MIPS I
Arquitectura de Computadoras UNT D. Cohen 4 2014

MIPS: Formatos de la Instruccin y Modos de Direcc.
op rs rt rd
register
De Registro Directo
immed op rs rt
Immediato
Todas las instrucciones tienen 32 bits de longitud
immed op rs rt
register
Base+ndice
+
Memoria
immed op rs rt
PC
PC-relativa
+
Memoria
Registro Indirecto? Direccionamiento Directo?
16 Bits Imm.
Arquitectura de Computadoras UNT D. Cohen 5 2014

Principio de Diseo?
Menos es ms rpido.
Simplicidad favorece regularidad.
Todas del mismo ancho.
Arquitectura de Computadoras UNT D. Cohen 6 2014

Tipos de Datos

Bit: 0, 1

Bit String: secuencia de bits de cierta longitud
4 bits: nibble
8 bits: byte
16 bits: half-word
32 bits: word
64 bits: double-word

Caracter:
Cdigo ASCII de 7 bits

BCD:
digitos 0-9 codificados desde 0000b hasta 1001b
dos dgitos decimales empacados por cada 8 bit

Enteros:
Complemento a dos.

Punto Flotante:
Precisin Simple.
Precisin Doble.
Precisin Extendida.
M x R
E
exponente
base
mantisa
Arquitectura de Computadoras UNT D. Cohen 7 2014

MIPS instrucciones aritmticas
Instruccin Ejemplo Significado Comentarios
add add $1,$2,$3 $1 = $2 + $3 3 operands; exception possible
subtract sub $1,$2,$3 $1 = $2 $3 3 operands; exception possible
add immediate addi $1,$2,100 $1 = $2 + 100 + constant; exception possible
add unsigned addu $1,$2,$3 $1 = $2 + $3 3 operands; no exceptions
subtract unsigned subu $1,$2,$3 $1 = $2 $3 3 operands; no exceptions
add imm. unsign. addiu $1,$2,100 $1 = $2 + 100 + constant; no exceptions
multiply mult $2,$3 Hi, Lo = $2 x $3 64-bit signed product
multiply unsigned multu$2,$3 Hi, Lo = $2 x $3 64-bit unsigned product
divide div $2,$3 Lo = $2 $3, Lo = quotient, Hi = remainder
Hi = $2 mod $3
divide unsigned divu $2,$3 Lo = $2 $3, Unsigned quotient & remainder
Hi = $2 mod $3
Move from Hi mfhi $1 $1 = Hi Used to get copy of Hi
Move from Lo mflo $1 $1 = Lo Used to get copy of Lo
Cul add para direcciones? cul para nmeros enteros?
Arquitectura de Computadoras UNT D. Cohen 8 2014

Multiplicacin / Divisin
Comienzo de la multiplicacin o divisin
MULT rs, rt
MULTU rs, rt
DIV rs, rt
DIVU rs, rt
Mover el resultado de la operacin.
MFHI rd
MFLO rd
Registers
HI LO
Arquitectura de Computadoras UNT D. Cohen 9 2014

MIPS Instrucciones Lgicas
Instruction Example Meaning Comment
and and $1,$2,$3 $1 = $2 & $3 3 reg. operands; Logical AND
or or $1,$2,$3 $1 = $2 | $3 3 reg. operands; Logical OR
xor xor $1,$2,$3 $1 = $2 ! $3 3 reg. operands; Logical XOR
nor nor $1,$2,$3 $1 = ~($2 |$3) 3 reg. operands; Logical NOR
and immediate andi $1,$2,10 $1 = $2 & 10 Logical AND reg, constant
or immediate ori $1,$2,10 $1 = $2 | 10 Logical OR reg, constant
xor immediate xori $1, $2,10 $1 = $2 ! 10 Logical XOR reg, constant
shift left logical sll $1,$2,10 $1 = $2 << 10 Shift left by constant
shift right logical srl $1,$2,10 $1 = $2 >> 10 Shift right by constant
shift right arithm. sra $1,$2,10 $1 = $2 >> 10 Shift right (sign extend)
shift left logical sllv $1,$2,$3 $1 = $2 << $3 Shift left by variable
shift right logical srlv $1,$2, $3 $1 = $2 >> $3 Shift right by variable
shift right arithm. srav $1,$2, $3 $1 = $2 >> $3 Shift right arith. by variable

Arquitectura de Computadoras UNT D. Cohen 10 2014

Uso de Instrucciones Lgicas
Trabajar con bits, bytes, medias palabras.
Caracteres son bytes.
Programa para encontrar 2 bytes en una cadena
Desarrollar para prxima clase.
Arquitectura de Computadoras UNT D. Cohen 11 2014

Principio de Diseo
Optimizar el caso ms comn.
Se cubre la mayora de las constantes.
El resto con dos instrucciones.
Arquitectura de Computadoras UNT D. Cohen 12 2014

MIPS Instrucciones de Transferencia de Datos
Instruction Comment
SW 500(R4), R3 Store word
SH 502(R2), R3 Store half word
SB 41(R3), R2 Store byte
LW R1, 30(R2) Load word
LH R1, 40(R3) Load halfword
LHU R1, 40(R3) Load halfword unsigned
LB R1, 40(R3) Load byte
LBU R1, 40(R3) Load byte unsigned
LUI R1, 40 Load Upper Immediate (16 bits shifted left by 16)
Cargas de constantes?
Para qu LUI?
0000 0000
LUI R5
R5
Arquitectura de Computadoras UNT D. Cohen 13 2014

A tener en cuenta
Palabras en direcciones mltiplos de 4.
Medias Palabras en mltiplos de 2.
Bytes en cualquier direccin.
Programa anterior:
Qu instruccin usar para leer de memoria?
Las comparaciones solo entre registros no olvidar
- A continuacin.
Arquitectura de Computadoras UNT D. Cohen 14 2014

MIPS Instrucciones jump, branch y comparacin
Instruction Example Meaning
branch on equal beq $1,$2,100 if ($1 == $2) go to PC+4+100
Equal test; PC relative branch
branch on not eq. bne $1,$2,100 if ($1!= $2) go to PC+4+100
Not equal test; PC relative
set on less than slt $1,$2,$3 if ($2 < $3) $1=1; else $1=0
Compare less than; 2s comp.
set less than imm. slti $1,$2,100 if ($2 < 100) $1=1; else $1=0
Compare < constant; 2s comp.
set less than uns. sltu $1,$2,$3 if ($2 < $3) $1=1; else $1=0
Compare less than; natural numbers
set l. t. imm. uns. sltiu $1,$2,100 if ($2 < 100) $1=1; else $1=0
Compare < constant; natural numbers
jump j 10000 go to 10000
Jump to target address
jump register jr $31 go to $31
For switch, procedure return
jump and link jal 10000 $31 = PC + 4; go to 10000
For procedure call
Arquitectura de Computadoras UNT D. Cohen 15 2014

MIPS - Comparacin y Saltos
Compare and Branch
BEQ rs, rt, offset if R[rs] == R[rt] then PC-relative branch
BNE rs, rt, offset <>
Compare to zero and Branch
BLEZ rs, offset if R[rs] <= 0 then PC-relative branch
BGTZ rs, offset >
BLTZ rs, offset <
BGEZ rs, offset >=
BLTZAL rs, offset if R[rs] < 0 then branch and link (into R 31)
BGEZAL rs, offset >=
Excepto BEQ y BNE las comparaciones y branch toman dos
instrucciones (se combinan con SLT). Por qu?
El ensamblador presenta seudoinstrucciones para el resto de los
branchs que se traducen en dos instrucciones.

Arquitectura de Computadoras UNT D. Cohen 16 2014

Solo Beq y Bne?
Son las ms simples y por tanto se implementan con
mayor performance.
Implementar el resto significa penalizar las ms
rpidas.
Que adems son el caso ms comn.
Principios:
Menos es ms.
Optimizar el caso ms comn.
Un buen diseo requiere buenos compromisos.

Arquitectura de Computadoras UNT D. Cohen 17 2014

Cmo se carga en Memoria un Programa de MIPS?
El primer bloque se reserva para uso del Sistema Operativo.
3 Sementos: texto (programa), datos y stack.
El puntero global ($gp) apunta al comienzo de datos dinmicos.
Permite el crecimiento de la Pila y de los datos dinmicos.
Se reserva 7FFF FFFF
hex

de Mem.

Ms adelante veremos que
se asigna memoria fsica a
medida que se necesite
(mecanismo de Memoria
Virtual)

Arquitectura de Computadoras UNT D. Cohen 18 2014

0 zero constant 0
1 at reserved for assembler
2 v0 expression evaluation &
3 v1 function results
4 a0 arguments
5 a1
6 a2
7 a3
8 t0 temporary: caller saves
. . . (convocado puede taparlos)
15 t7
MIPS: Convenciones Standard para uso de Registros
16 s0 Guardar por el convocado
23 s7
24 t8 temporary (contd)
25 t9
26 k0 reserved for OS kernel
27 k1
28 gp Pointer to global area
29 sp Stack pointer
30 fp frame pointer
31 ra Return Address (HW)
Ms un stack de profundidad 3 para los bits de modo (ver PSW)
Arquitectura de Computadoras UNT D. Cohen 19 2014

MIPS / GCC Convenciones de Llamadas a Rutinas
FP
SP
fact: addiu $sp, $sp, -32
sw $ra, 20($sp)
sw $fp, 16($sp)
addiu $fp, $sp, 32
. . .
sw $a0, 0($fp)
...
lw $ra, 20($sp)
lw $fp, 16($sp)
addiu $sp, $sp, 32
jr $ra
ra
old FP
ra
old FP
ra
FP
SP
ra
FP
SP
Bajas
Direcciones
En este ejemplo el marco albergar 8 registros (incluidos gp y ra).
marco
Arquitectura de Computadoras UNT D. Cohen 20 2014

Seudoinstrucciones
La mayora de las instrucciones de assembler se
traducen a una instruccin en LM.
Seudoinstrucciones: para mejorar la vida del
programador
Y vender mejor.
move $t0, $t1 ! add $t0, $zero, $t1
blt $t0, $t1, L ! slt $at, $t0, $t1
bne $at, $zero, L
$at (register 1): assembler temporary
Arquitectura de Computadoras UNT D. Cohen 21 2014

Detalles del Set de Instrucciones del MIPS
El registro cero siempre tiene el valor cero (an si se escribe en l)
Branch/jump and link pone direccin de retorno. PC+4 en el registro de
enlace (R31, tambin llamado Ra)
Todas las instrucciones cambian todos los 32 bits del registro destino
(incluso lui, lb, lh) y todas leen todos los 32 bits de las fuentes (add, sub,
and, or, )
Las instrucciones inmediatas, aritmticas y lgicas se extienden de la
siguiente manera:
Operandos lgicos inmediatos se extienden con 0.
Op. aritmticos se extienden mediante signo a 32 bits
Los datos que se cargan mediante las instrucciones lb and lh se extienden
de la siguiente manera:
lbu, lhu se extienden con 0.
lb, lh se extienden con signo.
Puede haber Overflow en las instrucciones add, sub, addi.
No puede haber Overflow en addu, subu, addiu, and, or, xor, nor, shifts, mult, multu,
div, divu.
Arquitectura de Computadoras UNT D. Cohen 22 2014

Saltos Retardados
En el MIPS, la instruccin que est despus de un branch se ejecuta
an si el salto se produce.
Permite al compilador emplear mejor el pipeline del MIPS.
Se ver con detalle en prximos temas.
Arquitectura de Computadoras UNT D. Cohen 23 2014

3 Formatos de Instruccin
3 Direcciones de Reg
add rd, rs, rt
sub rd, rs, rt
3 Direcc, 1 inmediata:
ori rt, rs, imm16
2 Direcc, 1 registro, 1 Memoria Indexada
lw rt, rs, imm16
sw rt, rs, imm16
Branch, relativo:
beq rs, rt, imm16
JUMP, semidirecto:
j target
op target address
0 26 31
6 bits 26 bits
op rs rt rd shamt funct
0 6 11 16 21 26 31
6 bits 6 bits 5 bits 5 bits 5 bits 5 bits
op rs rt immediate
0 16 21 26 31
6 bits 16 bits 5 bits 5 bits
Arquitectura de Computadoras UNT D. Cohen 24 2014

Sntesis: Caractersticas resaltantes del MIPS I
Instrucciones de longitud fija de 32-bit (3 formatos)
32 32-bit GPRs (R0 contiene zero) y 32 FPRs (y HI LO)
Particionados por convencin de Sw.
Instrucciones aritmticas de 3-direcciones, reg-reg.
Modo inmediato con 16-bit ms LUI (para llegar a ctes de 32 bits)
Un solo modo de direccionam. para load/store: base+desplazamiento
No hay indireccin, ni escalado.
Condiciones simples de salto
Comparar con cero o dos registros para =,<>
No hay cdigos de condicin.
Salto retardado
Ejecuta la instruccin despus del branch (o jump) an cuando el salto
se realice
Arquitectura de Computadoras UNT D. Cohen 25 2014

Revisin: Diseo Set de Instrucciones (MIPS)
Usar GPRs con una arquitectura LOAD-STORE: SI
Proveer al menos 16 GPRs ms FPRs (floating point reg) separados: 31 GPR
& 32 FPR
Soportar modos de direccionamiento bsicos: desplazamiento (con un
offset de 12 a 16 bits), inmediato (de 8 a 16 bits), y reg. indirecto : SI: 16 bits
para inmediato, desplazamiento (disp=0 => registro indirecto)
Que todos los modos de direccionamiento se apliquen a todas las
instrucciones de transferencia de datos : SI
Emplear codificacin de largo fijo si prima la performance y largo variable si
prima el tamao del programa : FIJO
Soportar estos tipos de datos: 8-bit, 16-bit, 32-bit enteros y 32-bit y 64-bit
IEEE 754 nmeros de punto flotante: SI
Soportar las instrucciones simples, ya que son las ms frecuentemente
ejecutadas: load, store, add, subtract, move register-register, and, shift,
compare equal, compare not equal, branch (con direccionamiento relativo a
PC de al menos 8-bits), jump, call, and return: SI, 16b
Focalizarse en un set de instrucciones pequeo: SI
Arquitectura de Computadoras UNT D. Cohen 26 2014

Otras Arquitecturas
ARM
INTEL.
A
Arquitectura de Computadoras UNT D. Cohen 27 2014

Similitudes entre ARM y MIPS
ARM: El core embebido ms popular.
Set bsico de instrucciones similar a MIPS
ARM MIPS
Fecha de Anuncio 1985 1985
Tamao de la Instruccin 32 bits 32 bits
Espacio de direcciones. 32-bit 32-bit
Alineamiento de Datos Alineados Alineados
Modos Direccionamiento 9 3
Registros 15 ! 32-bit 31 ! 32-bit
Entrada/Salida Memory
mapped
Memory
mapped
Arquitectura de Computadoras UNT D. Cohen 28 2014

Comparacin y Salto en ARM
Emplea cdigo de condicin (flags)
Resultados de una operacin aritmtica o lgica.
Negative, zero, carry, overflow
Compara instructiones para setear CCR
- Sin quedarse con un resultado en un registro (MIPS).
Cada instruccin puede ser condicional.
Primeros 4 bits de la instruction: condition value
Permite evitar saltos sobre algunas instrucciones.
Arquitectura de Computadoras UNT D. Cohen 29 2014

Codificacin de las Instrucciones.
Arquitectura de Computadoras UNT D. Cohen 30 2014

ISA de Intel x86
Evolucin con compatibilidad hacia atrs.
8080 (1974): 8-bit microprocessor
- Acumulador, ms 3 pares de registros ndices.
8086 (1978): extensin de 16 bits al 8080
- Set Complejo de Instrucciones (CISC)
8087 (1980): floating-point coprocessor
- Agrega instrucciones FP.
80286 (1982): direcciones de 24-bit, MMU
- Unidad de Manejo de Memoria. Protecciones.
Segmentos.
80386 (1985): extensin de 32-bit (ahora IA-32)
- Ms modos de direccionamientos y operaciones.
- Memoria virtual paginada y segmentada.
Arquitectura de Computadoras UNT D. Cohen 31 2014

ISA de INTEL x86
Evolucin Posterior:
i486 (1989): pipeline, caches on-chip, y FPU
- Competidores Compatibles: AMD, Cyrix,
Pentium (1993): superescalar, datapath 64-bit,
- Versiones posteriores: MMX (Multi-Media eXtension Inst.).
- Bug en divisiones de PF.
Pentium Pro (1995), Pentium II (1997)
- Nueva Microarquitectura (para disear el control).
Pentium III (1999)
- SSE (Streaming SIMD Extensions) y registros asociados.
Pentium 4 (2001)
- Nueva Microarquitectura
- Se agregan instrucciones SSE2
Arquitectura de Computadoras UNT D. Cohen 32 2014

ISA de INTEL x86
AMD64 (2003): extiende arquitectura a 64 bits
EM64T Extended Memory 64 Technology (2004)
- AMD64 es adoptada por Intel (con refinamientos)
- Agrega instrucciones SSE3
Intel Core (2006)
- Agrega instrucciones SSE4, soporte para mq. virtuales
AMD64 (2007): instrucciones SSE5
- Intel no sigue este camino, en cambio
Advanced Vector Extension (2008)
- Registros SSE ms largos, ms instrucciones.
Si INTEL no extenda con compatibilidad, su
competencia s lo hara.
Elegancia tcnica " xito en el mercado.
Arquitectura de Computadoras UNT D. Cohen 33 2014

Registros bsicos del x86
Arquitectura de Computadoras UNT D. Cohen 34 2014

Modos de direccionamiento bsicos del x86
Dos operandos por instruccin.
Fuente/Destino Segundo Operando
Register Register
Register Immediate
Register Memory
Memory Register
Memory Immediate
! Modos de direccionamiento a memoria:
! Direccin en un registro
! Indexado = R
base
+ displacement
! Escalado = R
base
+ 2
scale
! R
index
(scale = 0, 1, 2, or 3)
! Indexado y Escalado = R
base
+ 2
scale
! R
index
+ displacement
Arquitectura de Computadoras UNT D. Cohen 35 2014

Implementacin del IA-32
Set complejo de instrucciones es dificil de
implementar.
El Hw traduce instructiones a microoperaciones
simples (RISC?)
- Simple instructions: 1 microoperacin.
- Complex instructions: Varias
microoperaciones.
Mquina similar a RISC para las
microoperaciones.
Porcin del mercado hace que sea
economicamente viable ($$$$)
Performance comparable a RISC
Los compiladores evitan las instrucciones
complejas.
Arquitectura de Computadoras UNT D. Cohen 36 2014

Instrucciones del ARM v8
Extendindose a 64-bit, ARM realiza un vuelco
completo:
ARM v8 se parece al MIPS
Cambios en relacin a V7
- No hay campo de ejecucin condicional.
- Campo inmediato para constantes de 12 bits (crece).
- Elimina instrucciones load/store de mltiples datos.
- PC ideja de ser un GPR
- Conjunto de GPRs se expande de 16 a 32
- Los modos de direccionamiento se extienden para
todas las dimensiones de datos.
- Instruccin de divisin.
- Instrucciones Branch if equal/branch if not equal
Arquitectura de Computadoras UNT D. Cohen 37 2014

Falacias (Mentiras)
Instrucciones Poderosas " ms performance
Se requieren menos instrucciones complejas.
Pero difciles de implementar, provoca:
- Instrucciones ms lentas, incluyendo las simples.
Los compiladores son buenos en armar buen
cdigo con mayora de instrucciones simples.
Emplear assembler para mejorar la
performance.
Pero los compiladores modernos son mejores
para manejarse con procesadores modernos.
Ms lneas de cdigo " ms errores y menos
productividad.
Y para qu sirve saber Assembler?
Arquitectura de Computadoras UNT D. Cohen 38 2014

Falacia
Compatibilidad hacia atrs " No cambia el set de Instrucciones
Pero agrega ms instrucciones!!
x86 instruction set
Arquitectura de Computadoras UNT D. Cohen 39 2014

Benchmarks para MIPS
Frecuencias Dinmicas.
Instruction class MIPS examples SPEC2006 Int SPEC2006 FP
Arithmetic add, sub, addi 16% 48%
Data transfer lw, sw, lb, lbu,
lh, lhu, sb, lui
35% 36%
Logical and, or, nor, andi,
ori, sll, srl
12% 4%
Cond. Branch beq, bne, slt,
slti, sltiu
34% 8%
Jump j, jr, jal 2% 0%
Arquitectura de Computadoras UNT D. Cohen 40 2014

80X86 Una Arquitectura Dominante
Muy Complejo:
Longitud de las instrucciones: de 1 a 17 bytes.
Un operando debe actuar tanto como fuente como tambin destino.
Un operando puede estar en memoria.
Registros con personalidad.
Modos complejos de direccionamiento
e.g., base o indexado escalado con desplazamiento de 8 o 32 bits
Pero funciona bien gracias a que:
Las instrucciones que ms se usan se pueden implementar con
buena performance.
Los compiladores evitan las porciones lentas de la arquitectura ISA
Lo que al 80X86 le falta en estilo le sobra en cantidad,
logrndose un buen diseo en la verdadera perspectiva
Arquitectura de Computadoras UNT D. Cohen 41 2014

ARM Una arquitectura dominante embebidos.
Nace al mismo tiempo que MIPS.
Arquitecturas RISCs parecidas.
Con algunas diferencias interesantes.
La versin 8 da un giro y se parece mucho ms a
MIPS.
Arquitectura de Computadoras UNT D. Cohen 42 2014

La complejidad de las instrucciones es solo una variable.
Menor cantidad de instrucciones Vs. CPI mayor / menor
frecuencia de reloj
Principios de Diseo (MIPS)
La simplicidad favorece la regularidad (no requiere
ortogonalidad).
Menos es ms rpido (32 registros no ms)
Un buen diseo requiere compromisos (tamao de
constantes...)
Paretto que los casos ms comunes sean los ms rpidos.
- Mejor 2 instrucciones simples a que
- Todas las instrucciones sean ms lentas.
Resumiendo...

Potrebbero piacerti anche