Vous êtes sur la page 1sur 13

MIPS(procesador)

DeWikipedia,laenciclopedialibre

ConelnombredeMIPS(siglasdeMicroprocessorwithoutInterlockedPipelineStages)se
conoce a toda una familia de microprocesadores de arquitectura RISC desarrollados por
MIPSTechnologies.

Los diseos del MIPS son utilizados en la lnea de productos informticos de SGI en
muchos sistemas embebidos en dispositivos para Windows CE routers Cisco y
videoconsolas como la Nintendo 64 o las Sony PlayStation, PlayStation 2 y PlayStation
Portable.Msrecientemente,laNASAusunodeellosenlasondaNewHorizons1

Las primeras arquitecturas MIPS fueron fsfs en 32 bits (generalmente rutas de datos y
registros de 32 bits de ancho), si bien versiones posteriores fueron implementadas en 64
bits. Existen cinco revisiones compatibles hacia atrs del conjunto de instrucciones del
MIPS,llamadas MIPSI,MIPSII, MIPSIII, MIPSIVy MIPS32/64.Enlaltimadeellas,la
UnmicroprocesadorMIPSR4400
MIPS32/64Release2,sedefineamayoresunconjuntodecontrolderegistros.Asmismo
fabricadoporToshiba
estn disponibles varias "extensiones", tales como la MIPS3D, consistente en un simple
conjunto de instrucciones SIMD en coma flotante dedicadas a tareas 3D comunes, la
MDMX(MaDMaX)compuestaporunconjuntomsextensodeinstruccionesSIMDenterasqueutilizanlosregistrosdecomaflotantede
64 bits, la MIPS16 que aade compresin al flujo de instrucciones para hacer que los programas ocupen menos espacio
(presuntamentecomorespuestaalatecnologadecompresinThumbdelaarquitecturaARM) o la reciente MIPSMT que aade
funcionalidadesmultithreadingsimilaresalatecnologaHyperThreadingdelosprocesadoresIntelPentium4.

Debido a que los diseadores crearon un conjunto de instrucciones tan claro, los cursos sobre arquitecturadecomputadores en
universidadesyescuelastcnicasamenudosebasanenlaarquitecturaMIPS.EldiseodelafamiliadeCPU'sMIPSinfluirade
maneraimportanteenotrasarquitecturasRISCposteriorescomolosDECAlpha.

ndice
1 Historia
2 FamiliadeCPU's
3 Aplicaciones
4 Otrosmodelosyplanesfuturos
4.1 Loongson
5 Ncleos
6 Programacinyemulacin
7 ResumendeljuegodeinstruccionesdelR3000
7.1 Instruccionesreales
7.2 Otrasinstrucciones
7.2.1 Instruccioneslgicascomunesbitabit
7.2.2 Instruccionesdetransferenciadememoriaaregistro
7.2.3 Instruccionesdetransferenciaderegistroamemoria
7.2.4 Instruccionesdemovimientoderegistroaregistro
7.3 Otrasinstruccionesimportantes
8 ReferenciadeinstruccionesyregistrosdelMIPSR4000
9 Referencias
10 Lecturasposteriores
11 Vasetambin
12 Enlacesexternos

Historia
En1981,unequipolideradoporJohnL.HennessyenlaUniversidaddeStanfordcomenzatrabajarenloqueseconvertiraenel
primerprocesadorMIPS.Laideabsicaeramejorardrsticamenteelrendimientomedianteelusodelasegmentacin,unatcnica
queyaeraentoncesmuyconocidaperotambindifcildeimplementar.Sufuncionamientopuederesumirseenquelaejecucinde
unainstruccinesdivididaenvariasetapas,comenzandola"etapa1"deunainstruccinantesdequehayafinalizadolaejecucin
delainstruccinanterior.Encontraste,losdiseostradicionalesesperabanlafinalizacinporcompletodeunainstruccinantesde
pasar a la siguiente, de modo que grandes reas de la CPU permanecan inactivas mientras el proceso continuaba. Adems, la
frecuencia de reloj de toda la CPU vena dictada por la latencia del ciclo completo, en lugar de por el llamado camino crtico,
latenciadelaetapadesegmentacinquemstardaencompletarse.

Otradelasgrandesbarrerasasuperarporlasegmentacineralanecesidaddeintroducirbloqueosparapoderasegurarsedequelas
instruccionesquenecesitanvariosciclosderelojparacompletarsedejandecargardatosdesdelosregistrosdesegmentacin.Estos
bloqueospuedendurarcantidadesdetiempoconsiderables,ysuponanunagranbarreraamejorasdevelocidadposteriores.Por
ello, uno de los principales aspectos del diseo del MIPS fue el marcarse como objetivo que todas las subfases (incluyendo el
accesoamemoria)detodaslasinstruccionestardasenunnicocicloencompletarse,dejandoasdesernecesarioslosbloqueos,y
permitiendounrendimientodeunsolociclo.

Aunque esta idea de diseo elimin numerosas instrucciones tiles, destacando el hecho de que la multiplicacin y la divisin
necesitaranvariasinstrucciones,enconjuntosesabaqueelrendimientogeneraldelsistemaseradrsticamentemejoradoalpoder
funcionarloschipsafrecuenciasmuchomayores.Esteascensodelavelocidadseradifcilconlaintervencindelosbloqueos,
pueseltiemponecesarioesfuncindeltamaodelchipydelafrecuenciadereloj:aadirelhardwarenecesarioparaevitarlos
reduciranotablementelavelocidaddelsistema.

La eliminacin de estas instrucciones se convirti en un tema polmico. Muchos observadores afirmaron que ese diseo (y los
procesadores RISC en general) nunca superara sus ambiciosas expectativas ("Si uno sencillamente sustituye la instruccin
compleja de multiplicacin por una simple serie de sumas, dnde se produce el incremento de velocidad?"). Este anlisis tan
simplistaignorabaelhechodequelavelocidaddeldiseoresidaenlasegmentacin,noenlasinstrucciones.

En1984Hennessyseconvencidelfuturopotencialcomercialdeldiseo,dejandoStanfordparaformarMIPSComputerSystems.
Laempresapresentsuprimerdiseo,elR2000,en1985,siendomejoradoconelR3000de1988.EstasCPU'sde32bitsfueronla
basedelacompaadurantelos80,yfueronempleadasprincipalmenteenalgunasseriesdeworkstationsdeSGI.Estosdiseos
comercialessediferenciarondelosdeinvestigacinacadmicadeStanfordenaspectoscomolaimplementacindelamayorade
losbloqueosconhardwareyelproporcionarinstruccionescompletasparalamultiplicacinyladivisin,entreotros.

En 1991 MIPS present su primer procesador de 64 bits, el R4000. Sin embargo, MIPS tuvo dificultades financieras en su
lanzamientoalmercado.EldiseoeratanimportanteparaSGI,entoncesunodelospocosgrandesclientesdeMIPS,queen1992
comprsinreceloalgunolacompaaparaevitarqueseperdieraeldiseo.ComosubsidiariadeSGI,lacompaapasallamarse
MIPSTechnologies.

Aprincipiosdelos90MIPScomenzaotorgarlicenciasdesusdiseosaterceros.Estoprobconjustoxitolasimplicidaddel
ncleo, algo que le permita ser empleado en numerosas aplicaciones que anteriormente utilizaban diseos CISC mucho menos
capacesydeprecioynmerodepuertassimilares(comentarqueambasmagnitudesestnestrechamenterelacionadaselpreciode
una CPU est generalmente relacionado con el nmero de puertas y pins externos). Sun Microsystems intent subirse al carro
otorgandolicenciasdesuncleoSPARC,peronillegarozarelxitodelMIPS.Afinalesdelos90MIPStenauncaballode
batallaenlosprocesadoresintegrados,yen1997fueentregadoelprocesadorMIPS48millones,convirtindoseenlaprimeraCPU
RISCendesbancaralafamosafamilia68kdeMotorola.LafamiliaMIPStuvotantoxitoqueSGIrelanzaMIPSTechnologies
en1998.MsdelamitaddelosingresosdeMIPSactualmenteprocedendelasconcesionesdelicencias,mientrasquegranparte
delrestoprocededecontratosdediseodencleosparaserfabricadosporterceros.

En1999MIPSconsolidsusistemadelicenciasalrededordedosdiseosbsicos,elMIPS32de32bitsyelMIPS64de64bits.
NEC, Toshiba y SiByte (posteriormente adquirida por Broadcom) obtuvieron licencias para el MIPS64 tan pronto como este
procesador fue anunciado a estas empresas les siguieron otras como Philips, LSI Logic e IDT. Los xitos se sucedieron, y
actualmente los ncleos MIPS son uno de los pesos pesados del mercado de dispositivos como los computadoras de mano o
decodificadores y sintonizadoras de TV. Un indicio de su xito es el hecho de que Freescale (filial de Motorola) utilice
procesadoresMIPSensusaparatos,enlugardeotrospropiosbasadosenelPowerPC.

Desde que la arquitectura MIPS es licenciable, ha atrado a numerosas compaas jvenes a lo largo de los aos. Una de las
primerasnuevascompaasendisearprocesadoresMIPSfueQuantumEffectDevices.ElequipodediseodeMIPSencargado
del R4300 fund SandCraft, que dise el R5432 para NEC y posteriormente el SR7100, uno de los primeros procesadores
basadosenejecucinfueradeordenparasistemasembebidos.ElequipooriginaldediseodelDECStrongARM finalmente se
dividiendoscompaasMIPS:SiByte,fabricantedelSB1250,unodelosprimerossistemasdechipnicodealtorendimiento
basadosenelMIPSyAlchemySemiconductor(mstardecompradaporAMD),quefabricabaelsistemadechipnicoAu1000
paraaplicacionespocoexigentes.LexrautilizarquitecturapseudoMIPSyaadiextensionesDSPparaelmercadodeloschips
deaudioysoportemultithreadingparaelmercadoderedes.DebidoaqueLexranoeraconcesionariadeningunalicenciaMIPS,
dospleitosfueronabiertosentreambasempresas.ElprimeroseresolvirpidamentealprometerLexranoseguiranunciandosus
procesadores como MIPScompatibles. El segundo fue largo y da los intereses de ambas compaas, terminando con la
concesinporpartedeMIPSdeunalicenciagratuitaaLexra,ascomoelpagodeunagrancantidaddedinero.

FamiliadeCPU's
El primer modelo de CPU comercial de MIPS, el R2000, fue anunciado en
1985. Aada instrucciones multiciclo para la multiplicacin y la divisin en
una unidad independiente integrada en el procesador. Asimismo se aadieron
instrucciones para enviar los resultados de esta unidad al ncleo las cuales
necesitabanbloqueos.

El R2000 poda ser iniciado tanto en formato bigendian como littleendian.


Tena 32 registros de propsito general de 32 bits, pero no contaba con un
registro de estado, lo que supona un considerable cuello de botella. Este
problemalocompartaconelAMD29000yelDECAlpha. Al contrario que
otrosregistros,elcontadordeprogramanoesdirectamenteaccesible.
EsquemadelasegmentacindelMIPS.
El R2000 adems soportaba hasta cuatro coprocesadores, uno de los cuales
estaba integrado en la CPU principal para el manejo de excepciones e
interrupciones, mientras que los otros tres estaban destinados a otros usos. Una opcin era aadir la unidad de punto flotante
R2010,quecontabacon32registrosde32bitsquepodanserempleadoscomotalesparamanejarnmerosensimpleprecisino
biencomo16registrosde64bitsendobleprecisin.

ElR3000sucederaalR2000en1988,aadiendounacachde32kB(prontoaumentadaa64kB)parainstruccionesydatos,junto
conelsoportede"coherenciacach"paraelusomultiprocesador.MientrashubodefectosenelsoportemultiprocesadordelR3000,
MIPSselassiguiarreglandoparaqueformasepartedevariosdiseosexitososdemultiprocesador.ElR3000tambinincluauna
unidaddemanejodememoria(MMU)integrada,caractersticacomnentrelosprocesadoresdelmomento.ElR3000fueelprimer
diseoexitosodeMIPSenelmercado,yfinalmentefueronfabricadasmsde1millndeunidades.ElR3000A,utilizadoenla
extremadamente exitosa Sony PlayStation, fue una versin acelerada hasta los 40 MHz. Al igual que el R2000, el R3000 fue
emparejadoconlaFPUR3010.PacemipsfabricelR3400eIDTelR3500,siendoambosmodelosprocesadoresR3000sconla
FPUR3010enunnicochip.ElToshibaR3900fueelprimersistemadechipnicoparalosprimerosordenadoresdemanocon
WindowsCE.

EnlaserieR4000,presentadaen1991,seextendieljuegodeinstruccionesdelMIPSparaconstituirunaautnticaarquitecturade
64bitsysemovilaFPUalmismocircuitoparacrearunsistemadechipnico,operandoaunavelocidadderelojradicalmente
superior(inicialmente100MHz).Sinembargo,parapoderalcanzartalfrecuencialascachsfueronreducidasa8kBcadauna,
siendonecesariostresciclosderelojparaaccederaellas.Lasaltasfrecuenciasdetrabajofueronalcanzadasgraciasalatcnicade
segmentacin profunda (llamada entonces supersegmentacin). Tras el R4000 naci un gran nmero de versiones mejoradas,
incluyendolaR4400 de 1993 con cachs de 16 kB, operaciones de 64 bits sin apenas errores y un controlador para otra cach
externa(L2)de1MB.

MIPS,actualmenteunadivisindeSGIllamadaMTI,diselaversindebajocosteR4200,yposteriormentelaanmsbarata
R4300,consistenteenunR4200conbusexternode32bits.LaNintendo64usaunaCPUNECVR4300basadaenelMIPSde
bajocosteR4300i.2

QuantumEffectDevices(QED),unacompaaapartefundadaporantiguosingenierosdeMIPS,disearonelR4600"Orion",el
R4700"Orion",elR4650yelR5000.MientrasqueelR4000aumentlafrecuenciaacambiodereducircapacidaddecach,los
diseosdeQEDdestacaronporlasgrandescachsaccesiblesenslodosciclosderelojyporelusoeficientedelreadesilicio.
LosR4600yR4700fueronutilizadosenlasversionesdebajocostedelasestacionesdetrabajoSGIIndyascomoenlosprimeros
routersCiscobasadosenelMIPS,aquellosdelasseries36x0y7x00.ElR4650fueempleadoenlosaparatosoriginalesdeWebTV
(ahoraMicrosoftTV).LaFPUR5000trabajabadeformamseficienteyflexibleconnmerosensimpleprecisinquelaR4000,y
como resultado, con similar hardware grfico, las SGI Indy que montaban la FPU R5000 ofrecan mucho mejor rendimiento
grficoquelasquecontabanconlaR4400.SGIrebautizalasviejastarjetasgrficasqueincorporaronlaR5000pararemarcarla
mejora. QED posteriormente dise las familias RM7000 y RM9000 para sistemas embebidos como redes e impresoras lser.
QEDfueadquiridaporelfabricantedesemiconductoresPMCSierraenagostode2000,siendostalaltimacompaaeninvertir
enlaarquitecturaMIPS.

ElR8000(1994)fueelprimerdiseoMIPSsuperescalar,capazdeejecutardosoperacionesdeALUyotrasdosdememoriaen
cadaciclodereloj.Eldiseoseplasmenseischips:unaunidadentera(condoscachsde16KB,unaparainstruccionesyotra
L1dedatos),unaunidaddepuntoflotante,tresRAMdecachsecundariatotalmentepersonalizables(dosparaaccesosacach
secundariayotraparabus),yuncontroladordecachASIC.Eldiseotenadosunidadessegmentadasdesumamultiplicacinen
doble precisin, las cuales reciban el flujo de datos de la cach secundaria externa de 4 MB. El R8000 fue montado en los
servidoresSGIPowerChallengeamediadosdelos90yposteriormenteenlasestacionesdetrabajoPowerIndigo2.Surendimiento
limitado en operaciones enteras y su elevado coste lo hicieron impopular entre la mayora de los usuarios, si bien el buen
rendimientodesuFPUfueaprovechadoporlosusuarioscientficoselR8000estuvoapenasunaoenelmercado.

En 1995, fue lanzado el R10000. Este procesador era un diseo de chip nico, con mayor velocidad de reloj que el R8000, y
mayorescachsprimariasde32kBparainstruccionesydatos.Eratambinsuperescalar,perosugraninnovacinfueser"outof
order". An con una FPU ms simple, la vasta mejora en las operaciones con enteros, su menor precio y la mayor densidad
hicierondelR10000elpreferidopormuchosclientes.

LosdiseosmsrecientessebasanenelR10000.ElR12000hasidofabricadocontecnologamejoradaparacomprimirelchipy
operaramayorvelocidaddereloj.LarevisinR14000permitamayoresfrecuencias,soporteadicionalparaDDRSRAM en el
chip externo de cach y un FSB de 200 MHz para un mejor transferencia. Las ltimas versiones fueron llamadas R16000 y
R16000A,caracterizndoseporunamayorvelocidaddereloj,cachL1adicionalychipsdemenortamaoencomparacinconlos
anteriores.

EspecificacionesdelmicroprocesadorMIPS
Modelo Frecuencia Ao Proceso Transistores Tamaodelchip Pins Potencia Voltaje Dcache Icache Scache
[MHz] [m] [millones] [mm] E/S [W] [k] [k] [k]
R2000 816.7 1985 2.0 0.11 32 64 none
R3000 1240 1988 1.2 0.11 66.12 145 4 64 64 none
R4000 100 1991 0.8 1.35 213 179 15 5 8 8 1024
R4400 100250 1992 0.6 2.3 186 179 15 5 16 16 1024
R4600 100133 1994 0.64 2.2 77 179 4.6 5 16 16 512
R5000 150200 1996 0.35 3.7 84 223 10 3.3 32 32 1024
R8000 7590 1994 0.5 2.6 299 591 30 3.3 16 16 1024
R10000 150250 1995 0.35 6.8 299 599 30 3.3 32 32 512
R12000 270400 1998 0.180.25 6.9 204 600 20 4 32 32 1024
R14000 500600 2001 0.13 7.2 204 527 17 32 32 2048
R16000 700800 2002 0.11 20 64 64 4096

Note:Estasespecificacioneshacenreferenciaalasconfiguracionesmscomunes.Existenvariaciones,sobretodoenlascachsde
nivel2.

Aplicaciones
EntrelosfabricantesdeestacionesdetrabajobasadasenprocesadoresMIPSdestacanSGI,MIPSComputerSystems,Inc.,Olivetti,
SiemensNixdorf, Acer, Digital Equipment Corporation, NEC y DeskStation. Varios sistemas operativos fueron portados a la
arquitectura,ejemplosdeellosonelSGIIRIX,MicrosoftWindowsNT(aunqueelsoporteparaMIPSfinalizconellanzamiento
deWindowsNT4.0)yWindowsCE,Linux,BSD,UNIXSystemV,SINIX,MIPSComputerSystemsRISC/os,entreotros.

Sinembargo,elusodelMIPScomoprocesadorprincipaldeestacionesdetrabajohacado,ySGIhaanunciadosusplanesdecesar
eldesarrollodeiteracionesdealtorendimientodelaarquitecturaMIPSenfavordeprocesadoresbasadosenlatecnologaIntel
IA64(vaselaseccin"Otrosmodelosyplanesfuturos").
Porotraparte,elusodemicroprocesadoresMIPSensistemasembebidosesprobablequesemantengagraciasalbajoconsumode
energa y caractersticas trmicas de las implementaciones integradas, as como a la gran disponibilidad de herramientas de
desarrolloydeexpertosconocedoresdelaarquitectura.

Otrosmodelosyplanesfuturos
OtromiembrodelafamiliaMIPSeselR6000,unaimplementacinECLdelaarquitecturaMIPSfabricadaporBipolarIntegrated
Technology. El R6000 introdujo el juego de instrucciones MIPSII. Su arquitectura TLB y de cach son diferentes del resto de
miembros de la familia MIPS. El R6000 no proporcion los resultados esperados, y aunque fue empleado en algunas mquinas
ControlData,rpidamentedesaparecidelmercadodelosmainstream.ElPMCSierraRM7000 fue una versin del R5000 con
unacachintegradadenivel2de256kByuncontroladorparaunacachopcionaldetercernivel.Diseadoenunprincipiopara
sistemas embebidos como los procesadores grficos SGI y varias soluciones de redes de Cisco. El nombre R9000 nunca fue
utilizado.

SGIintentunavezmigrardelaplataformaMIPSalaIntelItanium,habiendoterminadosudesarrolloconelR10000.Losgrandes
retrasosenlapresentacindelItaniumhicieronqueelnmerodeprocesadoresbasadosenMIPSinstaladoscontinucreciendo.En
1999quedclaroqueelprocesodedesarrollohabasidocerradodemasiadopronto,yresultadodeellosonlasversionesR14000y
R16000.SGItantelaposibilidaddeaadirunaFPUmscomplejaalestilodeladelR8000enlasltimasiteraciones,ascomola
delanzarunprocesadordedoblencleo,perolosproblemasfinancierosdelaempresayelusooficialysoportadodelaemulacin
QuickTransitparaejecutarbinariosIRIXsobreAltixprovocaronelcesedefinitivodeldesarrollodehardwareIRIX/MIPS.

Loongson
LoongsonesunafamiliademicroprocesadoresdiseadosporlaAcademiaChinadeCiencias.Lamicroarquitecturainternadelos
microprocesadoresLoongson fue diseado de forma independiente por los chinos.Lasprimerasimplementacionesdelafamilia
careca de cuatro instrucciones, patentadas por MIPS Technologies. En junio de 2009, ICT obtuvo licencias MIPS32 y MIPS64
directamentedeMIPSTechnologies.

Apartirde2006,unaseriedeempresasempezaronacomercializarunaseriedehardwareconelprocesadorLoongson,incluyendo
nettopsynetbooksconunbajoconsumo.345

Ncleos
EnlosltimosaosgranpartedelatecnologaempleadaenlasdistintasgeneracionesMIPShasidoofrecidacomodiseosde"IP
cores" (bloques de construccin) para sistemas embebidos. Se ofertan los ncleos bsicos de 32 y 64 bits, conocidos
respectivamentecomo4Ky5Krespectivamente,yconlicenciasMIPS32yMIPS64.Estosncleospuedensercombinadoscon
unidadesaadidastalescomoFPUs,sistemasSIMD,dispositivosdeE/S,etc.

Los ncleos MIPS han sido comercialmente exitosos, siendo empleados actualmente en muchas aplicaciones industriales y de
consumo.PuedenencontrarseenlosmsmodernosroutersCisco,TPLinkyLinksys,cablemdems y mdems ADSL,tarjetas
inteligentes,controladorasdeimpresoraslser,decodificadoresdeTV,robots,ordenadoresdemano,SonyPlayStation2 y Sony
PlayStationPortable.

EnmvilesyPDA's,sinembargo,elncleoMIPSfueincapazdedesbancarasucompetidordearquitecturaARM.

Programacinyemulacin
Existe un simulador MIPS R2000/R3000 totalmente libre llamado SPIM compatible con varios sistemas operativos
(especficamenteUnixoGNU/LinuxMacOSXMSWindows95,98,NT,2000,XPyDOS)ideadoparaelaprendizajedela
programacinenensambladorMIPSydelosconceptosgeneralesdelensambladorRISC:http://www.cs.wisc.edu/~larus/spim.html

UnemuladorMIPSmscompletopertenecealproyectoGXemul(anteriormenteconocidocomoProyectomips64emul),elcualno
slo emula las diferentes versiones de los microprocesadores MIPS III y superiores (desde el R4000 al R10000), sino tambin
sistemas enteros que utilicen esos procesadores. Por ejemplo, GXemul puede emular tanto una DECstation con un procesador
MIPSR4400(yarrancarenUltrix)comounSGIO2conCPUMIPSR10000(sibienlacapacidaddecorrerIrixeslimitada),entre
otros,ascomotambindiferentesframebuffersycontroladorasSCSI.
ElsoftwareQEMUescapazdeemulartambin,entremuchasotras,laarquitecturaMIPSyMIPSel,ascomoejecutarGNU/Linux
enlamquinaemulada.

Ejemplosdellamadasalsistema(usadasenSPIM)
Cdigo
Servicio Entrada Salida Notas
trampa
print_int $v0=1 $a0=enteroaimprimir imprimea0enlasalidaestndar
$a0= direccin del primer imprimeunacadenadecaractererenlasalida
print_string $v0=4
carcter estndar
$a0= nmero necesario de Reservamemoriadela
sbrk $v0=9 $v0=direccindememoriareservada
bytes pila

ResumendeljuegodeinstruccionesdelR3000
Lasinstruccionessedividenentrestipos:R,IyJ.Todaslasinstruccionesempiezanconuncdigodeoperacinde6bits.Adems
delcdigodeoperacin,enlasinstruccionestipoRseespecificantresregistros,uncampodetamaodedesplazamiento('shamt')
yotroparaelcdigodefuncinLastipoIespecificandosregistrosyunvalorinmediatode16bitsenlastipoJalcdigode
operacinlesiguen26bitsdedireccindestinodesalto.67

Nombredelosregistros,nmero,usoyconvencionesdellamada:

Registros
Nombre Nmero Uso Preservadoenllamada
$zero $0 constanteentera0 s
$at $1 temporaldelensamblador no
$v0$v1 $2$3 Valoresderetornodefuncionesyevaluacindeexpresiones no
$a0$a3 $4$7 Argumentosdefunciones no
$t0$t7 $8$15 Temporales no
$s0$s7 $16$23 Temporalessalvados s
$t8$t9 $24$25 Temporales no
$k0$k1 $26$27 ReservadosparaelncleodelSO no
$gp $28 punteroglobal s
$sp $29 punterodepila s
$fp $30 punterode"frame" s
$ra $31 direccinderetorno no

Losregistrospreservadosduranteunallamadasonaquellosque(porconvenio)nosernmodificadosporunallamadadesistemao
aunprocedimientoofuncin.Porejemplo,losregistros$sdebenseralmacenadosenlapilaporelprocedimientoquelosnecesita,
siendosiempreincrementadosenconstantes$spy$fp,paraserdespusdecrementadosunavezfinalizadoelprocedimiento(se
marcacomodisponiblelamemoriareservada).Porelcontrario,$raesmodificadoautomticamentetrasunallamadaaunafuncin
normal(cualquieraqueutilicelainstruccinjal),ylosregistros$tdebensersalvadosporelprogramaantesdellamaracualquier
funcin(porsielprogramanecesitalosvalorescontenidosendichosregistrostraslaejecucindelasubrutina).

Instruccionesreales
Existenunaseriedeinstruccionesqueposeenimplementacinhardwaredirecta,enoposicinalaspseudoinstruccionesqueson
traducidasavariasinstruccionesrealesantesdeserensambladas.

Lossiguientessonlostresposiblesformatosdeinstruccin:
Tipo 31Formato(bits)0
R codop(6) rs(5) rt(5) rd(5) shamt(5) codfunc(6)
I codop(6) rs(5) rt(5) inmediato/desplazamiento(16)
J codop(6) direccin(26)

CONSTdenotaunaconstante("inmediata").
Apartirdeahora,losnmerosderegistrossonsimplesejemplos,pudiendoserempleadosotrosensulugar.
Todaslasinstruccionesquesiguensonnativas.
Loscdigosdeoperacinyfuncinsedanenhexadecimal.
Sintaxisdela
Categora Nombre Significado Formato/codop/codfunc Notas
instruccin
suma dos
Suma add$1,$2,$3 $1=$2+$3(consigno) R 0
registros
Sumasinsigno addu$1,$2,$3 $1=$2+$3(sinsigno) R 0
resta dos
Resta sub$1,$2,$3 $1=$2$3(consigno) R 0
registros
empleado para
sumar
constantes (y
addi tambin para
Sumainmediata $1=$2+CONST(consigno) I
$1,$2,CONST copiar de un
registro a otro
"addi $1, $2,
0")
Suma inmediata addiu
$1=$2+CONST(sinsigno) I
sinsigno $1,$2,CONST
Multiplica dos
registros y
guarda el
Aritmticas resultado de 64
bits en dos
puntos
especialesdela
LO=(($1*$2)<<32)>>32 memoria LO
Multiplicacin mult$1,$2 R 0
HI=($1*$2)>>32 y HI. De forma
alternativa, uno
puededecirque
el resultado de
esta operacin
es: (int HI,int
LO) = (64 bits)
$1*$2.
Divide dos
registros y
guarda el
Divisin div$1,$2 LO=$1/$2HI=$1%$2 R resultadoentero
de 32 bits en
LO y el resto
enHI.6
Transferencia Carga la
dedatos Carga de direccin de
la$1,Etiqueta $1=Direccindememoria I
direccin memoria de
unaetiqueta.
Carga la
palabra
almacenada
lw
Cargadepalabra $1=Memoria[$s2+CONST] I desde
$1,CONST($2)
($s2+CONST)
en adelante (3
bytesms).
Carga de media lh $1=Memoria[$s2+CONST] I Carga la media
palabra $1,CONST($2) palabra
almacenada
desde
($s2+CONST)
en adelante (1
bytems).
Carga el byte
lb
Cargadebyte $1=Memoria[$s2+CONST] I almacenado en
$1,CONST($2)
($s2+CONST).
Almacena una
palabra en
($s2+CONST)
y los siguientes
Almacenamiento sw
Memoria[$s2+CONST]=$1 I 3 bytes. El
depalabra $1,CONST($2)
orden de los
operandos es
unagranfuente
deconfusiones.
Almacena la
primera mitad
de un registro
Almacenamiento sh (media palabra)
Memoria[$s2+CONST]=$1 I
demediapalabra $1,CONST($2) en
($s2+CONST)
y el byte
siguiente.
Almacena el
Almacenamiento sb primer byte de
Memoria[$s2+CONST]=$1 I
debyte $1,CONST($2) un registro en
($s2+CONST).
Carga un
operando
inmediato de
16 bits en los
Carga del
16 bits del
inmediato lui$1,CONST $1=CONST<<16 I
registro
superior especificado.El
valor mximo
de la constante
es2161
Mueveunvalor
de HI al
registro. No se
debe emplear
una instruccin
de
multiplicacin
Mover desde odivisinentre
mfhi$1 $1=HI R
"high" dos
instrucciones
mfhi (esta
accin no est
definida debido
a la
segmentacin
delMIPS).
Mover desde mflo$1 $1=LO R 0 Mueveunvalor
"low" de LO al
registro. No se
debe emplear
una instruccin
de
multiplicacin
odivisinentre
dos
instrucciones
mflo (esta
accin no est
definida debido
a la
segmentacin
delMIPS)
And and$1,$2,$3 $1=$2&$3 R Andbitabit
And con andi
$1=$2&CONST I
inmediato $1,$2,CONST
Or or$1,$2,$3 $1=$2|$3 R Orbitabit
Or con ori
$1=$2|CONST I
inmediato $1,$2,CONST
Orexclusivo xor$1,$2,$3 $1=$2^$3 R
Lgicas Nor nor$1,$2,$3 $1=~($2|$3) R Norbitabit
Comprueba si
Inicializar si un registro es
slt$1,$2,$3 $1=($2<$3) R
menorque menor que el
otro.
Comprueba si
Inicializar si
slti un registro es
menor que con $1=($2<CONST) I
$1,$2,CONST menor que una
inmediato
constante.
Desplazamiento Desplaza el
debits registro
Desplazamiento CONST bits a
sll
lgico a la $1=$2<<CONST R
$1,$2,CONST la izquierda (lo
izquierda
multiplica por
)
Desplaza el
registro
CONST bits a
la derecha
rellenado con
ceros (divide
Desplazamiento entre ).
srl Ntesequeesta
lgico a la $1=$2>>CONST R
$1,$2,CONST instruccinslo
derecha
funciona como
divisin de un
nmero en
complemento a
2 si dicho
nmero es
positivo.
Desplazamiento sra R Desplaza el
aritmtico a la $1,$2,CONST registro
derecha CONST bits
rellenando con
el bit de signo
correspondiente
(divide un
nmero en
complemento a
2entre
)
Salta a la
instruccin
situada en la
beq if ($1 == $2) go to
Saltosiigual I direccin
$1,$2,CONST PC+4+CONST
especificada si
ambos registros
Saltos soniguales.
condicionales Salta a la
instruccin
situada en la
bne
Saltosinoigual if($1!=$2)gotoPC+4+CONST I direccin
$1,$2,CONST
especificada si
ambos registros
nosoniguales.
Salta de forma
incondicional a
la instruccin
Salto jCONST gotoaddressCONST J
almacenada en
la direccin
especificada.
Salta a la
direccin
Saltoaregistro jr$1 gotoaddress$1 R almacenada en
Salto
el registro
incondicional
especificado.
Utilizadaenlas
llamadas a
subrutinas.
Guarda en $31
Saltoyenlace jalCONST $31=PC+4gotoCONST J
la direccin de
retorno, a la
que se vuelve
conjr$31

NOTA:Enlasinstruccionesdesaltosybifurcaciones,CONSTpuedesustituirseporunaetiquetaexistenteencualquierpartedel
cdigo.

Laspseudoinstruccionessontraducidasenvariasinstruccionesrealesantesdeserensambladas.

Nombre Sintaxisdelainstruccin Traduccinainstruccionesreales Significado


Saltarsimayorque bgt$rs,$rt,Label slt$at,$rt,$rsbne$at,$zero,Label if(R[rs]>R[rt])PC=Label
Saltarsimenorque blt$rs,$rt,Label slt$at,$rs,$rtbne$at,$zero,Label if(R[rs]<R[rt])PC=Label
Saltarsimayoroigualque bge$rs,$rt,Label slt$at,$rs,$rtbeq$at,$zero,Label if(R[rs]>=R[rt])PC=Label
Saltarsimenoroigualque ble$rs,$rt,Label slt$at,$rt,$rsbeq$at,$zero,Label if(R[rs]<=R[rt])PC=Label
Saltarsiigualque beq$rs,$rt,Label beq$rs,$rt,Label if(R[rs]==R[rt])PC=Label
Saltarsiigualacero beqz$rs,Label beq$rs,$zero,Label if(R[rs]==0)PC=Label
Saltarsimayorque(sinsigno) bgtu$rs,$rt,Label sltu$at,$rt,$rsbne$at,$zero,Label if(R[rs]>R[rt])PC=Label
Saltarsimayorquecero bgtz$rs,Label slt$at,$zero,$rsbne$at,$zero,Label if(R[rs]>0)PC=Label

Otrasinstrucciones
Estasinstruccionespodranclasificarsetantoentrelas"reales"comoentrelas"pseudoinstrucciones".
Instruccioneslgicascomunesbitabit
addiu$1,$2,100 $1=$2+100(sumasinsignoconinmediato)
addu$1,$2,$3 $1=$2+$3(sumasinsigno)
div$1,$2 HI=$1%$2LO=$1/$2
subu$1,$2,$3 $1=$2$3(restasinsigno)

Instruccionesdetransferenciadememoriaaregistro
lbu$1,100($2) Cargaunbytesinsigno
lhu$1,100($2) Cargamediapalabrasinsigno
lwcz$1,100($2) Cargaunapalabraalcoprocesador"z"("z"eselnmerodelcoprocesador)

Vasequenoexistelainstruccin"cargadelinmediatoinferior",yaqueestetrabajopuederealizarsemedianteunaaddi(sumacon
inmediato)ounaori(orconinmediato)conelregistro$0(cuyovalorsiempreescero).Porejemplo,tantoaddi$1,$0,100como
ori$1,$0,100carganelnmerodecimal100enelregistro$1.

Instruccionesdetransferenciaderegistroamemoria
swcz$1,100($2) Almacenaunapalabradesdeelcoprocesador"z"("z"eselnmerodelcoprocesador).

Instruccionesdemovimientoderegistroaregistro
Mueve un valor del registro $1 del coprocesador al registro $1 del procesador principal ("z" es el nmero del
mfcz$1,$c1
coprocesador)
Mueve un valor del registro $1 del procesador principal al registro $1 del coprocesador ("z" es el nmero del
mtcz$1,$c1
coprocesador)
mov.d Mueve un valor en doble precisin del registro $3 de la FPU al registro de punto flotante $1 del procesador
$fp1,$fp3 principal
mov.s Mueve un valor en simple precisin del registro $3 de la FPU al registro de punto flotante $1 del procesador
$fp1,$fp3 principal

(losvaloresendobleprecisinusandosregistrosadyacentesdelaFPU)

Unaoperacinconconstantesconsignodifieredeunasinsignoenquenolanzaexcepciones.Larestadeunaconstantepuedeser
realizadacomolasumadesunegacin.

Otrasinstruccionesimportantes
nop(nooperation)(decdigomquina0x00000000einterpretadaporlaCPUcomosll$0,$0,0)
break(finalizaelprograma,seempleaentiempodedepuracin)
syscall(llamadasalsistema)
algunasinstruccionesrelacionadasconlaFPU
instruccionesvirtuales,descompuestasporelensambladoreninstruccionesnativas

ReferenciadeinstruccionesyregistrosdelMIPSR4000
EstaeslalistadereferenciadeinstruccionesyregistrosdelMIPSR4000,con32registrosde32bits.Esteprocesadorseencuentra
especficamenteenlaconsolaPlayStationPortabledeSonyComputerEntertaiment

*Instrucciones

addadduaddiaddiuandandidivumultmultudivnorororisllsllvsrasravsrlsrlvsubsubuxorxorilhillosltsltusltisltiubeq
bgtzblezbnejjaljalrjrlalilblbulhlhulwsbshswmfhimflomthimtlotrape

*Registros

$at$v0$v1$a0$a1$a2$a3$t0$t1$t2$t3$t4$t5$t6$t7$s0$s1$s2$s3$s4$s5$s6$s7$t8$t9$k0$k1$gp$sp$fp$ra
Referencias
1.http://www.sumagamer.com/noticias/newhorizonsmismoprocesadorplaystation/
2.NECofrecedosmicroprocesadoresRISCde64bitsdebajocosto(eningls)(http://www.nec.co.jp/press/en/9801/2002.html)
3.[1](http://www.meneame.net/story/lemoteyeeloongportatilbioscontroladoressolibres)
4.[2](http://www.vivalinux.com.ar/hardware/lemoteyeeloong8089)
5.http://web.archive.org/web/http://www.loongson.cn/EN/
6.ResumendeljuegodeinstruccionesdelMIPSR3000(eningls)(http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html)
7.ReferenciadeinstruccionesMIPS(http://www.xs4all.nl/~vhouten/mipsel/r3000isa.html)

Lecturasposteriores
Patterson y Hennessy: Estructura y diseo de computadores. Interficie circuitera/programacin. Editorial Revert.
ISBN8429126198

Vasetambin
Loongson,microprocesadorconunconjuntodeinstruccionesMIPS64desarrolladoporlaAcademiaChinadelasCiencias.

Enlacesexternos
WikilibrosalbergaunlibroomanualsobreMIPSAssembly.
MIPSTechnologies(http://web.archive.org/web/http://mips.com)
MIPSTechnologiesDevelopers(http://web.archive.org/web/http://developer.mips.com)
Patterson&HennessyApndiceA(PDF)(http://www.cs.wisc.edu/~larus/HP_AppA.pdf)
ResumendellenguajeensambladorMIPS(http://logos.cs.uic.edu/366/notes/MIPS%20Quick%20Tutorial.htm)
ReferenciaMIPS(http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html)
Imgenes y descripciones del procesador MIPS en cpucollection.de (http://www.cpucollection.de/?tn=1&l0=cl&l1=MIP
S%20Rx000)
IntroduccinalensambladorMIPS(http://web.archive.org/web/http://chortle.ccsu.edu/AssemblyTutorial/TutorialContents.ht
ml)
OperadoresdedesplazamientodebitsenelMIPS(http://www.cs.umd.edu/class/spring2003/cmsc311/Notes/Mips/bitshift.ht
ml)

Obtenidodehttps://es.wikipedia.org/w/index.php?title=MIPS_(procesador)&oldid=89178421

Categoras: Microprocesadores MicroprocesadoresMIPS Arquitectura64bits

Estapginafuemodificadaporltimavezel15feb2016alas22:15.
EltextoestdisponiblebajolaLicenciaCreativeCommonsAtribucinCompartirIgual3.0puedenaplicarseclusulas
adicionales.Alusarestesitio,ustedaceptanuestrostrminosdeusoynuestrapolticadeprivacidad.
WikipediaesunamarcaregistradadelaFundacinWikimedia,Inc.,unaorganizacinsinnimodelucro.