MIPS-arkitektur

MIPS-arkitektur Presentasjon
Type Instruksjonssett , dataplattform , RISC ISA

De MIPS (engelsk: m icroprocessor uten jeg nterlocked p ipeline s tages ) er en prosessorarkitektur typen Reduced Instruction Set Computer (RISC) utviklet av selskapet MIPS Technologies (da kjent som MIPS Computer Systems ), basert i Mountain View i California .

Prosessorer produsert i henhold til denne arkitekturen har hovedsakelig blitt brukt i SGI- systemer . De finnes også i flere innebygde systemer , som håndholdte datamaskiner, Cisco- rutere og videospillkonsoller ( Nintendo 64 og Sony PlayStation , PlayStation 2 og PSP ).

På slutten av 1990-tallet ble det anslått at prosessorer avledet fra MIPS-arkitekturen okkuperte en tredjedel av produserte RISC- prosessorer .

I dag er denne arkitekturen fortsatt populær i det innebygde databehandlingsmarkedet hvor den møter intens konkurranse fra ARM-arkitekturen .

MIPS er også til stede i rutere og NAS, men de blir også stadig sjeldnere på dette feltet i møte med konkurranse fra ARM, PowerPC og x86 med lav effekt.

Til tross for alt, gjør MIPS sakte comeback i det høye ytelsesdatamarkedet takket være forskning som er utført av Kina med Loongson- prosessorer som ble brukt til å lage superdatamaskinen Dawning 5000L og 6000.

I 2015 kunngjorde Russland sin intensjon om å erstatte prosessorer designet av amerikanske selskaper med lokale prosessorer i nasjonale datasystemer. MIPS-arkitekturprosessorer, Baikal T1 fra det russiske selskapet som spesialiserer seg på T-Platforms superdatamaskiner, blir deretter valgt. Designet deres støttes av forsvarskonglomeratet Rostec og samfinansieres av det russiske statseide selskapet Rosnano ( Роснано ).

Arkitektur

Tidlige versjoner av MIPS-arkitekturen var 32-biters (både register- og datasti-nivå ), men senere 64-bitersversjoner dukket opp.

Den R4000 utgitt i 1991 vil være den første 64-bits prosessor. Den ble støttet av Microsoft fra Windows NT 3.1 og opp til Windows NT 4.0

Det er flere sett med MIPS- instruksjoner som er bakoverkompatible : MIPS I, MIPS II, MIPS III, MIPS IV og MIPS V samt MIPS32 og MIPS64. MIPS32 og MIPS64, som er basert på MIPS II og MIPS V, og ble introdusert som standardiserte instruksjonssett. Utvidelser er også tilgjengelige, slik som: MIPS-3D, en forenklet flytpunktsenhet (FPU) av SIMD- typen for grunnleggende 3D-beregninger, MDMX, som skyver bruken av SIMD-instruksjoner videre og tillater bruk av 64-biters flytpunktsregister , MIPS16, som komprimerer instruksjonsstrømmen for å redusere størrelsen på programmer (opprettet som svar på Thumb-koding introdusert i ARM- arkitekturen ), og nylig MIPS MT, som muliggjør behandling av to prosesser samtidig av en enkelt kjerne på en lignende måte til Hyper-Threading til stede i nyere Intel- prosessorer .

De grunnleggende instruksjonssettene (spesielt MIPS I) er så enkle og effektive at et stort antall datamaskinkurs, både på universiteter og tekniske skoler, fokuserer på studiet av MIPS-arkitektur.

Eksempelkode

Her er en implementering av Eulers indikatorer i MIPS-montøren:

.text .globl main main: la $a0, query # Load Address : charge l'adresse de la requête li $v0, 4 # Load Immediate : charge la valeur syscall # appel du système d’exploitation li $v0, 5 # lit l’entrée syscall move $t0, $v0 # stocke la valeur dans une variable temporaire # stocke les valeurs de base dans $t1, $t2 sub $t1, $t0, 1 # $t1 itère de m-1 à 1 li $t2, 0 # $t2 maintient un compteur des premiers entre eux inférieurs à m tot: blez $t1, done #termination condition move $a0, $t0 #Argument passing move $a1, $t1 #Argument passing jal gcd #to GCD function sub $t3, $v0, 1 beqz $t3, inc #checking if gcd is one addi $t1, $t1, -1 #decrementing the iterator b tot inc: addi $t2, $t2, 1 #incrementing the counter addi $t1, $t1, -1 #decrementing the iterator b tot gcd: #recursive definition addi $sp, $sp, -12 sw $a1, 8($sp) sw $a0, 4($sp) sw $ra, 0($sp) move $v0, $a0 beqz $a1, gcd_return #termination condition move $t4, $a0 #computing GCD move $a0, $a1 remu $a1, $t4, $a1 jal gcd lw $a1, 8($sp) lw $a0, 4($sp) gcd_return: lw $ra, 0($sp) addi $sp, $sp, 12 jr $ra done: #print the result #first the message la $a0, result_msg li $v0, 4 syscall #then the value move $a0, $t2 li $v0, 1 syscall #exit li $v0, 10 syscall .data query: .asciiz "Input m = " result_msg: .asciiz "Totient(m) = "

Registrerer

Beskrivelse av generelle registre

Det er 32 generelle registre.

Registrer 0 ($ null) er alltid null.

Register 1 ($ at) er reservert av montøren.

Register 2 og 3 ($ v0 og $ v1) brukes til å lagre funksjonsresultater.

Register 4 til 7 ($ a0 til $ a3) brukes til å lagre de fire første argumentene i subrutinen.

Register 8 til 15 ($ t0 til t7) er midlertidige registre.

Register 16 til 23 ($ s0 til s7) er registre lagret og brukt senere.

Register 24 og 25 ($ t8 og $ t9) er midlertidige registre.

Register 26 og 27 ($ k0 og $ k1) er systemreserverte registre.

Registrer 28 ($ gp) tilsvarer den globale pekeren.

Register 29 ($ sp) tilsvarer stakkpekeren.

Registrer 30 ($ fp) tilsvarer rammepekeren.

Registrer 31 ($ ra) tilsvarer returadressen.


Beskrivelse av noen spesielle registre

Blant spesialregistrene kan vi snakke om registre lo(hvor vi finner resultatene av divisjoner og multiplikasjoner) og hi(hvor vi finner resten under divisjoner).

Hvis resultatet av en multiplikasjon er 64 bits, vil de øvre 32 bitene bli lagret i hiog de nedre 32 bitene vil bli lagret i lo. Vi kan hente verdiene til hiog lomed instruksjonene mfhiog henholdsvis mflo.

For eksempel for divisjoner kan vi gi følgende eksempel:

addi $t3, $0, 37 addi $t4, $0, 2 div $t3, $t4 mflo $t0 #équivaut à 37 / 2 équivaut à 18 (le quotient) mfhi $t1 #équivaut à 37 % 2 équivaut à 1 (le reste)

Og for multiplikasjoner kan vi gi følgende eksempel:

addi $t3, $0, 37 addi $t4, $0, 2 mult $t3, $t4 mflo $t1 #on y trouve le produit mais il faut que le produit soit sur 32 bits

Se også

Relaterte artikler

Eksterne linker

Simulatorer
  • (in) MARS  : MIPS-simulator skrevet på Java-språk
  • (en) SPIM  : MIPS R2000 og MIPS R3000 prosessorsimulator (MIPS I instruksjonssett)
  • (en) KOYOTE  : Forenklet RISC Processor Visual Simulator (Basert på MIPS R2000)

Referanser

  1. (in) "  Russland ønsker å erstatte amerikanske databrikker med lokale prosessorer  " ,19. juni 2015
  2. “  http://logos.cs.uic.edu/366/notes/mips%20quick%20tutorial.htm  ” .
  3. “  http://homepage.divms.uiowa.edu/~ghosh/1-28-10.pdf  ” .
  4. Alexis Nasr, “  http://pageperso.lif.univ-mrs.fr/~alexis.nasr/Ens/Compilation/mips.pdf  ” .