Arhitectură MIPS
Microprocessor without Interlocked Pipeline Stage (MIPS) este o arhitectură de procesor care utilizează setul de instrucțiuni RISC simplificată și foarte scalabilă dezvoltată de MIPS Computer Systems în 1985. Procesoarele MIPS au o linie de instrucțiuni în 5 etape pentru a executa mai multe instrucțiuni în același timp. Ideea de bază este de a executa instrucțiuni în linia de instrucțiuni, fără pauze. Pe instrucțiuni executate trebuie să fie necesară doar o frecvență de ceas.
Procesoarele cu această arhitectură sunt utilizate în sisteme înglobate, smartphone, tablete, routere, gateway, stații de lucru, console de jocuri video cum ar fi Sony PlayStation și Nintendo 64, supercalculatoare (NEC Cenju-4), autovehicule (Tesla Model S), inteligență artificială, internetul obiectelor. [1]
În 1992, MIPS Computer Systems a fost preluat de Silicon Graphics, sub numele de MIPS Technologies. Aceasta a fost achiziționată la 17 decembrie 2012, de către Imagination Technologies, continuând să dezvolte arhitectura MIPS.[2]
Primul procesor MIPS R2000 pe 32-bit, a fost dezvoltat în 1984, elementele de bază fiind deja create în1981 la Universitatea Stanford. Acesta era un procesor underpipelined bazat pe arhitectura setului de instrucțiuni RISC și cu un sistem de codare fix. În 1988, a fost introdusă o versiune îmbunătățită, R2000A la 12,5 și 16,67 MHz din IC-urile R2000A și R2010A. A fost utilizat pe scară largă în sisteme înglobate, cum ar fi controlere de imprimantă. R2000 a fost urmat de R3000, utilizând un design general similar al sistemului, cu implementare mai rapidă a cipurilor.
Versiuni MIPS CPU
[modificare | modificare sursă]Există mai multe versiuni de microprocesoare MIPS: MIPS I, II, III și IV, precum și versiuni de MIPS32/64. Versiunile MIPS V H1 Beast și H2 Captain au fost doar planificate. Primele arhitecturi MIPS I și MIPS II erau pe 32 de biți. Începând cu aprilie 2018, versiunea actuală este MIPS64 vers. 6 cu microprocesorul I7200. [3][4]
- MIPS I
- R2000 (1985): 8,3…16,7 MHz
- R2000A (1988): 12,5…16,7 MHz
- R3000 (1988): 20…33 MHz
- R3000A (1989): 25…40 MHz
- MIPS II
- R6000
- MIPS III
- R4000 (1991): 100 MHz
- R4400 (1992): 150…250 MHz
- R4200 (1993): 80 MHz
- R4600 (1994): 133 MHz
- R4650 (1994): 133...180 MHz
- R4700 (1996): 100...200 MHz
- MIPS IV
- R8000 (1994): 75…90 MHz
- R10000 (1995): 150…270 MHz
- R5000 (1996): 150…200 MHz
- R12000 (1998): 300…400 MHz
- R12000A (2000): 180...400 MHz
- R7000 (2000): 250…600 MHz
- R14000 (2001): 500…600 MHz
- R14000A (2002): 130...600 MHz
- R16000 (2003): 700 MHz
- R16000A (2004): 800…1000 MHz
- MIPS32
- 4K (1999): 167 MHz
- 24K (2003): 400 MHz, 750 MHz, 1468 MHz
- 34K (2006): 500 MHz, 1454 MHz
- 74K (2007): 1110 MHz
- 1004K (2008): 1100 MHz
- M14K (2009): 200 MHz
- 1074K (2010): 1500 MHz
- MIPS64
- 5K (1999)
- 20K (2000)
- Warrior IP Cores : serie de microprocesoare produse de Imagination Technologies din octombrie 2013, bazate pe MIPS32 release 5 și MIPS64 release 6. Acestea au fost produse în trei clase de performanță și caracteristici:
- Warrior M-class (M5100, M5150 și seria microAptiv M6200 și M6250)
- Warrior I-class ( I6400, I7200, I16500, I16500-F, I17200)
- Warrior P-class (P5600, P6600).
Caracteristici
[modificare | modificare sursă]Registre
[modificare | modificare sursă]MIPS I are 32 de registre fiecare putând înmagazina un număr de 32 de biți (un cuvânt):
- Registrul 0 ($ zero) este întotdeauna zero.
- Înregistrarea 1 ($ at) este rezervată asamblorului.
- Registrele 2 și 3 ($ v0 și $ v1) sunt utilizate pentru a stoca rezultatele funcțiilor.
- Registrele de la 4 la 7 ($ a0 la $ a3) sunt utilizate pentru a stoca primele 4 argumente ale subrutinei 3.
- Registrele de la 8 la 15 ($ t0 la t7) sunt registre temporare.
- Registrele de la 16 la 23 ($ s0 la s7) sunt registre salvate și utilizate ulterior.
- Registrele 24 și 25 ($ t8 și $ t9) sunt registre temporare.
- Registrele 26 și 27 ($ k0 și $ k1) sunt registre rezervate sistemului.
- Registrul 28 ($ gp) corespunde indicatorului global.
- Registrul 29 ($ sp) corespunde indicatorului stivei.
- Registrul 30 ($ fp) corespunde indicatorului cadru.
- Registrul 31 ($ ra) corespunde adresei de returnare.
Instrucțiuni
[modificare | modificare sursă]Există trei tipuri de formate de instrucțiuni MIPS: R, I și J. Fiecare instrucțiune începe cu un cod opțional de 6 biți:
- Formatul R (registru): corespunde instrucțiunilor aritmetice și logice având ca operanzi trei registre, un câmp de montare cu schimbare și un câmp funcțional.
- op: codul instrucțiunii (opcode), 6 biți
- rs: primul operand sursă, 5 biți
- rt: al doilea operand sursă, 5 biți
- rd: operandul destinație, 5 biți
- shamt: shift amount, 5 biți
- funct: funcția operației (selectează varianta specifică de operație pentru un anumit opcode), 6 biți.
- Formatul I (instrucțiune): dispune doar de patru câmpuri, două registre și o valoare imediată de 16 biți. Este folosit de două categorii de instrucțiuni: instrucțiunile load-store (de acces la memorie) și instrucțiunile de salt condiționat.
- op: opcode, 6 biți
- rs: primul operand sau registru bază, 5 biți
- rt: al doilea operand sau registru destinație, 5 biți
- adresă: adresă de memorie sau de salt, 16 biți.
- Formatul J (jump): corespunde instrucțiunilor de salt necondiționat (jump) și conține doar două câmpuri.
Nivele
[modificare | modificare sursă]Microprocesoarele MIPS prezintă 5 nivele tipice:
- Nivelul IF (instruction fetch): se calculează adresa instrucțiunii ce trebuie citită din cache-ul de instrucțiuni sau din memoria principală și se aduce instrucțiunea.
- Nivelul ID (instruction decode) - se decodifică instrucțiunea adusă și se citesc operanzii din setul de regiștri generali. În cazul instrucțiunilor de salt, pe parcursul acestei faze se calculează adresa de salt.
- Nivelul ALU (execute address) - se execută operația ALU asupra operanzilor selectați în cazul instrucțiunilor aritmetico-logice; se calculează adresa de acces la memoria de date pentru instrucțiunile LOAD / STORE.
- Nivelul MEM (memory acccess) - se accesează memoria cache de date sau memoria principală, numai pentru instrucțiunile LOAD/STORE. Acest nivel pe funcția de citire poate pune probleme datorate neconcordanței între rata de procesare și timpul de acces la memoria principală.
- Nivelul WB (write back) - se scrie rezultatul ALU sau data citită din memorie (în cazul unei instrucțiuni LOAD) în registrul destinație din setul de regiștri generali al microprocesorului.
nanoMIPS
[modificare | modificare sursă]NanoMIPS este o arhitectură de seturi de instrucțiuni cu lungimi variabile concepută special pentru sisteme înglobate, care oferă performanțe ridicate într-o dimensiune a codului substanțial redusă. nanoMIPS este acceptat în versiunea 6 a arhitecturii MIPS. Este inclusă în MIPS64 vers. 6 și implementată în noua serie de procesoare multi-core multi-thread MIPS I7200. Suportul pentru compilator este inclus în instrumentele de dezvoltare bazate pe MIPS GNU.[7]
microMIPS
[modificare | modificare sursă]Concepută pentru microcontrolere și alte sisteme înglobate cu amprentă mică, microMIPS este o arhitectură de set de instrucțiuni de compresie a codului care oferă performanță pe 32 de biți cu dimensiune de cod pe 16 biți pentru majoritatea instrucțiunilor. Păstrează 98% din performanța MIPS32, reducând în același timp dimensiunea codului cu până la 25%, ceea ce se traduce printr-o reducere semnificativă a costurilor cu siliciu. Datorită accesului redus la memorie și utilizarea eficientă a cache-ului de instrucțiuni, conduce de asemenea la reducerea consumului de energie al sistemului. microMIPS este inclusă în versiunile r3, r5 și r6 ale arhitecturii MIPS și sste implementată în microprocesoarele M14K, M5100 și M6200.[8]
Vezi și
[modificare | modificare sursă]Referințe și note
[modificare | modificare sursă]- ^ Five most iconic devices to use MIPS CPUs Arhivat în , la Wayback Machine. mips.com, Alex Voica, June 2016
- ^ About Arhivat în , la Wayback Machine. mips.com
- ^ MIPS I7200 Multiprocessing System Datasheet s3-eu-west-1.amazonaws.com
- ^ MIPS32 Architecture Arhivat în , la Wayback Machine. mips.com
- ^ Universitatea “TRANSILVANIA” Brașov. Facultatea de Electrotehnică. 2 - Arhitecturi RISC Arhivat în , la Wayback Machine. etc.unitbv.ro
- ^ MIPS Instruction Set Formats: R I J with Tables assemblylanguagetuts.com, Nauman Rehmat
- ^ nanoMIPSTM Architecture Arhivat în , la Wayback Machine. mips.com
- ^ microMIPSTM Architecture Arhivat în , la Wayback Machine. mips.com