Sei sulla pagina 1di 16

Universidad

Rey Juan Carlos

ESTRUCTURA Y TECNOLOGA DE
COMPUTADORES

Introduccin a los microprocesadores MIPS

Luis Rincn Crcoles


Licesio J. Rodrguez-Aragn

Introduccin a los microprocesadores MIPS

Programa
1. Introduccin a la arquitectura MIPS.
2. Caractersticas principales de MIPS.
3. Modelo de programacin de MIPS R2000.
4. Registros del procesador.
5. Registros de la unidad de coma flotante.
6. Coprocesadores.
7. Alineamiento y accesos a memoria.
8. Mquina virtual.
9. Modos de direccionamiento en MIPS.
10. Las instrucciones en MIPS.

2
Introduccin a los microprocesadores MIPS

Bibliografa
D.A. PATTERSON, J.L HENNESSY. Estructura y diseo de computadores.
Revert, 2000.
D. SWEETMAN. See MIPS Run. Morgan Kaufmann, 2002.
E. FARQUHAR, P. BUNCE. The MIPS Programmers Handbook. Morgan
Kaufmann, 1994.
J. GOODMAN, K. MILLER. A Programmers View of Computer Architecture.
Saunders College Pub., 1993.
MIPS32 Architecture For Programmers Volume I: Introduction to the MIPS32
Architecture. MIPS Technologies Inc., 2003.
MIPS32 Architecture For Programmers Volume II: The MIPS32 Instruction Set.
MIPS Technologies Inc., 2003.
MIPS32 Architecture For Programmers Volume III: The MIPS32 Privileged
Resource Architecture. MIPS Technologies Inc., 2003.
MIPS64 Architecture For Programmers Volume I: Introduction to the MIPS64
Architecture. MIPS Technologies Inc., 2003.
MIPS64 Architecture For Programmers Volume II: The MIPS64 Instruction Set.
MIPS Technologies Inc., 2003.
MIPS64 Architecture For Programmers Volume III: The MIPS64 Privileged
Resource Architecture. MIPS Technologies Inc., 2003. 3

Introduccin a los microprocesadores MIPS

1. Introduccin a la arquitectura MIPS


Segmentacin de instrucciones: tcnica de implementacin de unidades de
control que permite tratar las instrucciones en serie dividindolas en fases.
Con un nico cauce de ejecucin de instrucciones es posible mantener ejecutndose
simultneamente varias instrucciones, cada una en una fase distinta.

MIPS es una arquitectura diseada para optimizar la segmentacin en unidades


de control y para facilitar la generacin automtica de cdigo mquina por parte
de los compiladores.

MIPS: Microprocessor without Interlocked Pipeline Stages (microprocesador sin


bloqueos en las etapas de segmentacin).

MIPS es RISC (computador con repertorio de instrucciones reducido).

Existen mltiples fabricantes de microprocesadores con arquitectura MIPS.

4
Introduccin a los microprocesadores MIPS

Arquitectura frente a implementacin


Distincin arquitectura-implementacin:
Arquitectura: repertorio de instrucciones, registros, modelo de excepciones, manejo de
memoria virtual, mapa de direcciones fsicas y otras caractersticas comunes.

Implementacin: forma en que los procesadores especficos aplican la arquitectura.

La arquitectura MIPS est desacoplada de las implementaciones hardware


especficas
Se deja libertad a los diseadores de microprocesadores a la hora de crear sus propios
diseos dentro del marco de definicin de la arquitectura.

Las implementaciones de las arquitecturas MIPS deben cumplir una serie de


requisitos.
Todas las instrucciones normales deben estar implementadas.
La implementacin de la coma flotante y de los restantes coprocesadores es opcional.
El modo de ejecucin de supervisor es opcional.
Etc.
5

Introduccin a los microprocesadores MIPS

Versiones de MIPS
Versiones histricas del repertorio de instrucciones MIPS ISA (MIPS Instruction
Set Architecture).

Ancho de
Versin Procesadores Comentarios
los registros
Versin comercial del procesador MIPS de la
MIPS I 32 R2000, R3000 Universidad de Stanford

MIPS II 32 R6000 Base del estndar MIPS32

MIPS III 64 R4000 Primera arquitectura MIPS de 64 bits

MIPS IV 64 R5000, R10000 Actualizacin menor de MIPS III

MIPS V 64 - Base del estndar MIPS64

El modo de ejecucin de usuario siempre es compatible hacia atrs.


El entorno privilegiado no formaba parte del MIPS ISA, sino que puede variar
dependiendo de la implementacin.
6
Introduccin a los microprocesadores MIPS

Arquitecturas MIPS ISA actuales


MIPS32:
Basada en MIPS II ISA.
Incluye algunas instrucciones de MIPS III, IV y V para aumentar la eficiencia del
cdigo generado y la de la transferencia de datos.
MIPS32 Release 1: lanzamiento inicial.
MIPS32 Release 2: lanzada en 2002, incorpora una serie de mejoras.

MIPS64:
Basada en MIPS V ISA.
Es compatible hacia atrs con MIPS32.

Ambas arquitecturas incluyen la definicin del entorno privilegiado (MIPS PRA:


Privileged Resource Architecture).

Ambas arquitecturas prevn la adicin de:


MIPS ASEs: Application Specific Extensions (extensiones especficas dependientes
de la aplicacin).
MIPS UDIs: User Defined Instructions (instrucciones definidas por el usuario).
Coprocesadores especficos custom adaptados a la especificidad de las necesidades
7
del mercado.

Introduccin a los microprocesadores MIPS

Relacin entre MIPS32 y MIPS64


MIPS32 es un subconjunto de MIPS64.
MIPS64 es compatible hacia atrs con MIPS32.

8
Introduccin a los microprocesadores MIPS

2. Caractersticas principales de MIPS32


Mquina RISC (computador con repertorio de instrucciones reducido).

Ancho de palabra y tamao de los buses: 32 bits.

Tamao de los datos en las instrucciones:


Byte (b): 8 bits
Halfword (h): 16 bits
Word (w): 32 bits
Doubleword (d): 64 bits

Arquitectura de carga / almacenamiento:


Antes de ser utilizado en una instruccin aritmtica, todo dato debe ser cargado
previamente en un registro de propsito general.
Instrucciones aritmticas con 3 operandos de 32 bits en registros.

Esquema de bus nico para memoria y E/S.

Modos de funcionamiento: usuario, ncleo (kernel), supervisor y depuracin.


9

Introduccin a los microprocesadores MIPS

3. Modelo de programacin de MIPS R2000


Memory

CPU Coprocessor 1 (FPU)

Registers Registers

$0 $0

$31 $31

Arithmetic Multiply
unit divide

Arithmetic
Lo Hi unit

Coprocessor 0 (traps and memory)


Registers

BadVAddr Cause

Status EPC
10
Introduccin a los microprocesadores MIPS

4. Registros del procesador


32 registros de propsito general

Registros propsito especfico:


HI-LO: para productos y divisiones.
PC.

Ancho de los registros: 32 bits.

11

Introduccin a los microprocesadores MIPS

Registros del procesador


En MIPS los registros $0 a $31 son de propsito general pueden emplearse para
contener datos o punteros.

Existe un convenio que dota de pseudnimos y usos determinados a todos los


registros del MIPS:
$s0 ... $s7 ($16 ... $23): respetados en llamadas a subprogramas.
$t0 ... $t9 ($8 ... $15, $24 y $25): no respetados en llamadas a subprogramas.
$v0 y $v1 ($2 y $3): valores de retorno de subprogramas.
$a0 ... $a3 ($4 ... $7): argumentos para subprogramas.
$zero ($0): valor constante 0 (no modificable).
$gp ($28): puntero a zona de datos globales.
$sp ($29): puntero de pila.
$fp ($30): puntero a bloque de activacin.
$ra ($31): direccin de retorno (usado implcitamente en la instruccin jal).
$at ($1): uso interno del traductor de ensamblador en pseudoinstrucciones.
$k0 y $k1 ($26 y $27): uso privado del ncleo del sistema operativo (kernel).

Los registros $s0 ... $s7, $t0 ... $t9, $a0 ... $a3, $v0 y $v1 pueden contener
tanto datos de cualquier tipo como punteros. 12
Introduccin a los microprocesadores MIPS

5. Registros de la unidad de coma flotante


32 registros.

Ancho de los registros: 32 bits.

En instrucciones de precisin simple se pueden usar


todos los registros: $0, $1, $2, $3, ... $31.

En instrucciones de precisin doble, los registros se


usan en parejas de dos registros par-impar: $0,$2,$4, ...
$30.

13

Introduccin a los microprocesadores MIPS

6. Coprocesadores
Hasta 4 coprocesadores.
Hasta 32 registros cada uno, accesibles mediante instrucciones especficas.

Coprocesador 0:
Coprocesador de control de sistema (System Control Coprocessor).
Obligatorio e incorporado en el chip de la UCP.
Controla el susbsistema de memoria cach.
Soporta el sistema de memoria virtual y traduce direcciones virtuales en fsicas.
Soporta el manejo de excepciones.
Maneja los cambios en el modo de ejecucin (usuario, ncleo, supervisor).
Proporciona control de diagnsticos y recuperacin ante errores.

Coprocesador 1:
Reservado para la unidad de coma flotante.

Coprocesador 2:
Reservado para implementaciones especficas.

Coprocesador 3:
Reservado para la unidad de coma flotante en MIPS64 Release 2. 14
Introduccin a los microprocesadores MIPS

7. Alineamiento y accesos a memoria


MIPS puede funcionar con ordenacin de datos little-endian o big-endian.

Big-endian

Little-endian

Normalmente se exige que los accesos a memoria estn alineados.


Accesos a byte: sin alinear.
Accesos a media palabra: alineados a direccin par.
Accesos a palabra: alineados a direccin mltiplo de 4.
Accesos a doble palabra: alineados a direccin mltiplo de 8.
15

Introduccin a los microprocesadores MIPS

8. Mquina virtual
MIPS es una arquitectura RISC.

MIPS est diseado para ser programado en alto nivel.


La programacin en bajo nivel es bastante incmoda.

Los ensambladores para MIPS proporcionan al programador una mquina


virtual que le hace un poco menos incmodo programar en bajo nivel.
Pseudoinstrucciones: instrucciones proporcionadas por el ensamblador.

Las pseudoinstrucciones slo deberan ser utilizadas por los programadores,


nunca por los compiladores.

El traductor de ensamblador oculta algunas otras caractersticas de los


procesadores MIPS.
Huecos de retardo.

16
Introduccin a los microprocesadores MIPS

9. Modos de direccionamiento en MIPS


Direccionamiento directo a registro.
Direccionamiento indirecto a registro con desplazamiento.
Direccionamiento relativo a PC con desplazamiento.
Direccionamiento inmediato.
Direccionamiento pseudodirecto.
Direccionamiento implcito.

17

Introduccin a los microprocesadores MIPS

Direccionamiento directo a registro


El campo tiene 5 bits.

Permitido para operando fuente o destino.

Register addressing
op rs rt rd ... funct Registers
Register

Notacin: $n

Los registros tienen alias, indicando la funcin para la que estn dedicados
segn los convenios adoptados por programadores y compiladores.

18
Introduccin a los microprocesadores MIPS

Direccionamiento indirecto a registro con


desplazamiento
Campos:
Registro: 5 bits.
Desplazamiento: 16 bits.
Permitido para operando fuente en almacenamientos y destino en cargas.

Base addressing
op rs rt Address Memory

Register + Byte Halfword Word

Notacin: desp($n)

19

Introduccin a los microprocesadores MIPS

Direccionamiento relativo a PC con


desplazamiento
Campos:
Desplazamiento: 16 bits.

El desplazamiento se alinea a mltiplo de 4 (se multiplica por 4, o lo que


es lo mismo, es desplazado dos posiciones a la izquierda) y se extiende en
signo a 32 bits para calcular la direccin efectiva.

Se utiliza para direcciones en bifurcaciones.


PC-relative addressing
op rs rt Address Memory

PC + Word

Notacin: oculto en etiqueta.

20
Introduccin a los microprocesadores MIPS

Direccionamiento inmediato
Campos:
Inmediato de 16 bits.

Los datos inmediatos se extienden a 32 bits.


En ciertas instrucciones se hace extensin de signo.
En otras instrucciones se hace extensin con ceros.

Tambin se usa para indicar la longitud de un desplazamiento.


En este caso el inmediato es de 5 bits.

Permitido slo para operandos fuente.


Immediate addressing
op rs rt Immediate

Notacin: dato (sin prefijo)

21

Introduccin a los microprocesadores MIPS

Direccionamiento pseudodirecto
Campos:
Direccin de 26 bits.

La direccin se desplaza dos bits a la izquierda, y se concatena a los


cuatro primeros bits del contador de programa.

Se utiliza en instrucciones de salto.


Pseudodirect addressing
op Address Memory

PC | Word

Notacin: direccion (sin prefijo)

22
Introduccin a los microprocesadores MIPS

Direccionamiento implcito
Un operando tiene direccionamiento implcito cuando est determinado por el
cdigo de operacin.

En MIPS hay pocos casos.

23

Introduccin a los microprocesadores MIPS

10. Las instrucciones en MIPS


Mquina RISC (computador con repertorio de instrucciones reducido).

Arquitectura de carga / almacenamiento.


Antes de ser utilizado en una instruccin aritmtica, todo dato debe ser cargado
previamente en un registro de propsito general.

Tamao de las instrucciones: 32 bits.

Nmero de operandos: 0, 1, 2 3.
Instrucciones de carga o almacenamiento: 2 operandos, uno en registro y el otro en
memoria (de 8, 16 32 bits).
Instrucciones aritmticas o lgicas: 3 operandos de 32 bits en registros.
Instrucciones aritmticas o lgicas con un inmediato: 3 operandos, dos de 32 bits en
registros, y el tercero inmediato de 16 bits con extensin de signo (ceros o unos).

Mquina virtual: el programador puede utilizar instrucciones y direccionamientos


que no estn incorporados en el hardware: pseudoinstrucciones.
Las pseudoinstrucciones son proporcionadas por el ensamblador, que se encarga de
traducirlas a cdigo mquina. 24
Introduccin a los microprocesadores MIPS

Tipos de instrucciones en MIPS

Instrucciones de transferencia de datos.


Instrucciones aritmticas para enteros.
Instrucciones lgicas.
Instrucciones de activacin condicional.
Instrucciones de rotacin y desplazamiento.
Instrucciones de control de programa.
Instrucciones de control de sistema.

25

Introduccin a los microprocesadores MIPS

Instrucciones de transferencia de datos


Sintaxis T Descripcin
-------------------------- - --------------------------------------
lb rt,desp(rs) I rt = ext_signo(Mem[desp+rs]7..0,32)
lbu rt,desp(rs) I rt = ext_ceros(Mem[desp+rs]7..0,32)
lh rt,desp(rs) I rt = ext_signo(Mem[desp+rs]15..0,32)
lhu rt,desp(rs) I rt = ext_ceros(Mem[desp+rs]15..0,32)
lui rd,inm16 I rd31..16 = inm16; rd15..0 = 0
lw rt,desp(rs) I rt = Mem[desp+rs]
lwcZ rt,desp(rs) I coprocesadorZ(rt) = Mem[desp+rs]
lwl rt,desp(rs) I rt31.16 = Mem[desp+rs]
lwr rt,desp(rs) I rt15..0 = Mem[desp+rs]
sb rt,desp(rs) I Mem[desp+rs] = rt7..0
sh rt,desp(rs) I Mem[desp+rs] = rt15..0
sw rt,desp(rs) I Mem[desp+rs] = rt
swcZ rt,desp(rs) I Mem[desp+rs] = coprocesadorZ(rt)
swl rt,desp(rs) I Mem[desp+rs] = rt31.16
swr rt,desp(rs) I Mem[desp+rs] = rt15..0
mfcZ rt,rd I rd = rt; rd: registro UCP; rt: registro del coprocesador Z
mfhi rd I rd = hi
mflo rd I rd = lo
mtcZ rd,rt I rd = rt; rd: registro UCP; rt: registro del coprocesador Z
mthi rd I hi = rd
mtlo rd I lo = rd

26
Introduccin a los microprocesadores MIPS

Instrucciones aritmticas y de desplazamiento


para enteros e instrucciones lgicas
Sintaxis T Descripcin
-------------------------- - --------------------------------------
add rd,rs,rt I rd = rs+rt
addi rd,rs,inm16 I rd = rs+ext_signo(inm16,32)
addu rd,rs,rt I rd = rs+rt
addiu rd,rs,inm16 I rd = rs+ext_signo(inm16,32)
div rs,rt I lo = rs/rt; hi = rem(rs/rt)
divu rs,rt I lo = rs/rt; hi = rem(rs/rt)
mult rs,rt I hi-lo = rs1*s2
multu rs,rt I hi-lo = rs1*s2
sub rd,rs,rt I rd = rs-rt
subu rd,rs,rt I rd = rs-rt

and rd,rs,rt I rd = rs AND rt


andi rd,rs,inm16 I rd = rs AND ext_ceros(inm16,32)
nor rd,rs,rt I rd = rs NOR rt
or rd,rs,rt I rd = rs OR rt
ori rd,rs,inm16 I rd = rs OR ext_ceros(inm16,32)
xor rd,rs,rt I rd = rs XOR rt
xori rd,rs,inm16 I rd = rs XOR ext_ceros(inm16,32)

sll rd,rt,shamt5 I rd = desp_log(rt,shamt5,izquierda)


sllv rd,rt,rs I rd = desp_log(rt,rs4..0,izquierda)
sra rd,rt,shamt5 I rd = desp_arit(rt,shamt5,derecha)
srav rd,rt,rs I rd = desp_arit(rt,rs4..0,derecha)
srl rd,rt,shamt5 I rd = desp_log(rt,shamt5,derecha)
srlv rd,rt,rs I rd = desp_log(rt,rs4..0,derecha) 27

Introduccin a los microprocesadores MIPS

Instrucciones de activacin condicional, control


de programa y miscelneas
Sintaxis T Descripcin
-------------------------- - --------------------------------------
slt rd,rs,rt I Si rs < rt, rd = 1; si no, rd = 0
slti rd,rs,inm16 I Si rs < ext_signo(inm16,32), rd = 1; si no, rd = 0
sltu rd,rs,rt I Si rs < rt, rd = 1; si no, rd = 0
sltiu rd,rs,inm16 I Si rs < ext_signo(inm16,32), rd = 1; si no, rd = 0

bcZf etiqueta I Si flag(coprocesadorZ) = 0, ramificar a etiqueta


bcZt etiqueta I Si flag(coprocesadorZ) = 1, ramificar a etiqueta
beq rs,rt,etiqueta I Si rs = rt, ramificar a etiqueta
bgez rs,etiqueta I Si rs >= 0, ramificar a etiqueta
bgezal rs,etiqueta I Si rs >= 0, ramificar a etiqueta y enlazar ($ra = PC)
bgtz rs,etiqueta I Si rs > 0, ramificar a etiqueta
blez rs,etiqueta I Si rs <= 0, ramificar a etiqueta
bltz rs,etiqueta I Si rs < 0, ramificar a etiqueta
bltzal rs,etiqueta I Si rs < 0, ramificar a etiqueta y enlazar ($ra = PC)
bne rs,rt,etiqueta I Si rs <> rt, ramificar a etiqueta
j objetivo I PC = PC31..28 || (objetivo << 2)
jal objetivo I ra = PC; PC = PC31..28 || (objetivo << 2)
jalr rs,rd I rd = PC; PC = rs
jr rs I PC = rs

rfe I Restaurar desde excepcin (Restaura el registro Status)


syscall I Llamada a un servicio del sistema ($v0: nmero del servicio)
break codigo20 I Provoca una excepcin (cdigo 1 reservado para el depurador)
nop I No operacin
28
Introduccin a los microprocesadores MIPS

Instrucciones para coma flotante (I)


Sintaxis T Descripcin
-------------------------- - --------------------------------------
mov.d fd,fs I fd = fs; fd y fs: registros de coma flotante de 64 bits
mov.s fd,fs I fd = fs; fd y fs: registros de coma flotante de 32 bits

abs.d fd,fs I fd = abs(fs)


abs.s fd,fs I fd = abs(fs)
add.d fd,fs,ft I fd = fs+ft
add.s fd,fs,ft I fd = fs+ft
div.d fd,fs,ft I fd = fs/ft
div.s fd,fs,ft I fd = fs/ft
mul.d fd,fs,ft I fd = fs*ft
mul.s fd,fs,ft I fd = fs*ft
neg.d fd,fs I fd = -fs
neg.s fd,fs I fd = -fs
sub.d fd,fs,ft I fd = fs-ft
sub.s fd,fs,ft I fd = fs-ft

cvt.d.s fd,fs I fd = convertir(fs); precisin simple a precisin doble


cvt.d.w fd,fs I fd = convertir(fs); entero a precisin doble
cvt.s.d fd,fs I fd = convertir(fs); precisin doble a precisin simple
cvt.s.w fd,fs I fd = convertir(fs); entero a precisin simple
cvt.w.d fd,fs I fd = convertir(fs); precisin doble a entero
cvt.w.s fd,fs I fd = convertir(fs); precisin simple a entero

29

Introduccin a los microprocesadores MIPS

Instrucciones para coma flotante (II)


Sintaxis T Descripcin
-------------------------- - --------------------------------------
c.eq.d fs,ft I Si fs = ft, flag_coprocesador(1) = 1;
si no, flag_coprocesador(1) = 0

c.eq.s fs,ft I Si fs = ft, flag_coprocesador(1) = 1;


si no, flag_coprocesador(1) = 0

c.le.d fs,ft I Si fs <= ft, flag_coprocesador(1) = 1;


si no, flag_coprocesador(1) = 0

c.le.s fs,ft I Si fs <= ft, flag_coprocesador(1) = 1;


si no, flag_coprocesador(1) = 0

c.lt.d fs,ft I Si fs < ft, flag_coprocesador(1) = 1;


si no, flag_coprocesador(1) = 0

c.lt.s fs,ft I Si fs < ft, flag_coprocesador(1) = 1;


si no, flag_coprocesador(1) = 0

30
Introduccin a los microprocesadores MIPS

Formatos de instruccin
MIPS presenta tres formatos bsicos de instruccin:
Registro Registro Registro
Tipo R Cd. Op.
fuente 1 fuente 2 destino
Funct
(shamt: shift amount en
xxxxxx rs rt rd shamt funct
instrucciones de
desplazamiento) 6 5 5 5 5 6
31-26 25-21 20-16 15-11 10-6 5-0

Registro Registro
Tipo I Cd. Op. Desplazamiento
base destino
(carga o almacenamiento, xxxxxx rs rt Offset
ramificacin condicional,
operaciones con inmediatos) 6 5 5 16
31-26 25-21 20-16 15-0

Tipo J Cd. Op. Direccin destino


(salto incondicional) xxxxxx target
6 26
31-26 25-0
31

Potrebbero piacerti anche