MIPS-arkkitehtuuri

MIPS-arkkitehtuuri Esitys
Tyyppi Ohjesarja , tietokonealusta , RISC ISA

MIPS (Englanti: m icroprocessor ilman i nterlocked s ipeline s Tages ) on prosessorin arkkitehtuuri tyyppi RISC (RISC) kehittänyt yritys MIPS Technologies (tuolloin MIPS Computer Systems ), joka perustuu Mountain View vuonna Kaliforniassa .

Tämän arkkitehtuurin mukaisesti valmistettuja prosessoreita on käytetty pääasiassa SGI- järjestelmissä . Niitä löytyy myös useista sisäisistä järjestelmistä , kuten kämmentietokoneista, Cisco- reitittimistä ja videopelikonsoleista ( Nintendo 64 ja Sony PlayStation , PlayStation 2 ja PSP ).

1990-luvun lopulla arvioitiin, että MIPS-arkkitehtuurista johdetut prosessorit käyttivät kolmanneksen tuotetuista RISC- prosessoreista .

Nykyään tämä arkkitehtuuri on edelleen suosittu sulautettujen tietojenkäsittelymarkkinoiden markkinoilla, joilla se kohtaa ARM-arkkitehtuurin kovaa kilpailua .

MIPS: ää esiintyy myös reitittimissä ja NAS: ssa, mutta ne ovat myös yhä harvinaisempia tällä alalla pienitehoisten ARM: n, PowerPC: n ja x86: n kilpailun edessä.

Kaikesta huolimatta MIPS palaa hitaasti korkean suorituskyvyn tietokonemarkkinoilla Kiinan tekemän tutkimuksen ansiosta Loongson- prosessoreilla, joita käytettiin Dawning 5000L- ja 6000-supertietokoneiden luomiseen.

Vuonna 2015 Venäjä ilmoitti aikovansa korvata yhdysvaltalaisten yritysten suunnittelemat prosessorit paikallisilla prosessoreilla kansallisissa tietokonejärjestelmissä. Tämän jälkeen valitaan MIPS-arkkitehtuurin prosessorit, Baikal T1 venäläiseltä T-Platforms- supertietokoneisiin erikoistuneelta yritykseltä . Niiden suunnittelua tukee puolustuskonglomeraatti Rostec ja osarahoittama venäläinen valtionyhtiö Rosnano ( Роснано ).

Arkkitehtuuri

Varhaiset versiot MIPS-arkkitehtuurista olivat 32-bittisiä (sekä rekisteri- että datapolutaso ), mutta myöhemmin ilmestyivät 64-bittiset versiot.

R4000 julkaisi vuonna 1991 olisi ensimmäinen 64-bittinen suoritin. Microsoft tuki sitä Windows NT 3.1: sta Windows NT 4.0: een

On olemassa useita taaksepäin yhteensopivia MIPS- käskyjä : MIPS I, MIPS II, MIPS III, MIPS IV ja MIPS V sekä MIPS32 ja MIPS64. MIPS32 ja MIPS64, jotka perustuvat MIPS II: een ja MIPS V: hen ja jotka otettiin käyttöön standardisoituna käskyjoukkona. Laajennuksia on myös saatavana, kuten: MIPS-3D, SIMD- tyyppinen yksinkertaistettu liukulukuyksikkö (FPU) 3D-peruslaskelmia varten, MDMX, joka vie SIMD-käskyjä entistä pidemmälle ja sallii 64-bittisten liukulukurekistereiden käytön , MIPS16, joka pakkaa komentovirran ohjelmien koon pienentämiseksi (luotu vastauksena ARM- arkkitehtuuriin tuotuun Thumb-koodaukseen ), ja viime aikoina MIPS MT, joka sallii kahden prosessin samanaikaisen käsittelyn yhdellä ytimellä tavalla samanlainen kuin viimeaikaisissa Intel- prosessoreissa esiintyvä Hyper-Threading .

Perusopetussarjat (erityisesti MIPS I) ovat niin yksinkertaisia ​​ja tehokkaita, että suuri osa tietokonearkkitehtuurikursseista, sekä yliopistoissa että teknillisissä kouluissa, keskittyy MIPS-arkkitehtuurin tutkimiseen.

Näytekoodi

Tässä on Eulerin indikaattorien toteutus MIPS-kokoonpanossa:

.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) = "

Rekisterit

Kuvaus yleisistä rekistereistä

Yleisiä rekistereitä on 32.

Rekisteri 0 ($ nolla) on aina nolla.

Rekisterin 1 ($ at) varaa kokoonpanija.

Rekisteriä 2 ja 3 ($ v0 ja $ v1) käytetään toimintojen tulosten tallentamiseen.

Alirutiinin 4 ensimmäistä argumenttia tallennetaan rekistereillä 4 - 7 ($ a0 - $ a3).

Rekisterit 8-15 ($ t0 - t7) ovat väliaikaisia ​​rekistereitä.

Rekisterit 16 - 23 ($ s0 - s7) ovat rekistereitä, jotka tallennetaan ja joita käytetään myöhemmin.

Rekisterit 24 ja 25 ($ t8 ja $ t9) ovat väliaikaisia ​​rekistereitä.

Rekisterit 26 ja 27 ($ k0 ja $ k1) ovat järjestelmän varattuja rekistereitä.

Rekisteri 28 ($ gp) vastaa yleistä osoitinta.

Rekisteri 29 ($ sp) vastaa pinon osoitinta.

Rekisteri 30 ($ fp) vastaa kehysosoitinta.

Rekisteri 31 ($ ra) vastaa palautusosoitetta.


Kuvaus joistakin tietyistä rekistereistä

Erityisrekistereiden joukossa voimme puhua rekistereistä lo(mistä löydämme jako- ja kertolaskujen tulokset) ja hi(mistä löydämme loput jaon aikana).

Siinä tapauksessa, että kertolaskun tulos oli 64 bittiä, ylemmät 32 bittiä tallennettaisiin hija alemmat 32 bittiä tallennettaisiin lo. Voimme noutaa arvot hija loohjeilla mfhija vastaavasti mflo.

Esimerkiksi jakoille voimme antaa seuraavan esimerkin:

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)

Ja kertolaskuina voimme antaa seuraavan esimerkin:

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

Katso myös

Aiheeseen liittyvät artikkelit

Ulkoiset linkit

Simulaattorit
  • (in) MARS  : Java-kielellä kirjoitettu MIPS-simulaattori
  • (en) SPIM  : MIPS R2000- ja MIPS R3000 -prosessorisimulaattori (MIPS I -käskysarja )
  • (en) KOYOTE  : yksinkertaistettu RISC-prosessorin visuaalinen simulaattori (perustuu MIPS R2000: een)

Viitteet

  1. (in) "  Venäjä haluaa korvata yhdysvaltalaiset sirut paikallisilla prosessoreilla  " ,19. kesäkuuta 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  ” .