MIPS (architektúra)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. január 2-án felülvizsgált verziótól ; az ellenőrzések 5 szerkesztést igényelnek .
MIPS
Fejlesztő MIPS Technologies Inc.
Bit mélység 64 (32→64)
Bemutatták 1985
Építészet RISC
Típusú lajstrom-nyilvántartás
SK kódolás rögzített
Átmenet végrehajtása két regiszterhez képest
Byte sorrend Bi-endian (nagy→bi)
Kiterjesztések MDMX, MIPS-3D, MIPS16e, MIPS MT
Regiszterek
Általános rendeltetésű 31 (R0=0)
Igazi 32 (dupla esetén a processzor 32 bites verzióiban regiszterpárokat használnak)
 Médiafájlok a Wikimedia Commons oldalon

A MIPS (a megfelelő Stanford University projekt nevének rövidítése .  Microprocessor without Interlocked Pipeline Stages [1] ) a MIPS Computer Systems (jelenleg Wave Computing [2] ) által a RISC processzortervezésnek megfelelően kifejlesztett utasításokból és mikroprocesszor-architektúrákból álló rendszer. koncepció (azaz egyszerűsített utasításkészlettel rendelkező processzorokhoz). A korai processzormodellek 32 bites gépi szóval rendelkeztek , később megjelentek a 64 bites verziók. Számos processzormódosítás létezik, köztük a MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS32 és MIPS64, amelyek közül a MIPS32 (32 bites megvalósításhoz) és a MIPS64 (64 bites megvalósításhoz) érvényes. A MIPS32 és a MIPS64 vezérlőregiszter-készletet és utasításkészletet is meghatároz.

Számos utasításkészlet létezik: MIPS32, MIPS64, microMIPS és nanoMIPS. Ezenkívül további utasításkészletek és processzormodellek is elérhetők, például a MIPS-3D, amely SIMD utasításkészletet tartalmaz a lebegőpontos számok feldolgozásához, egyszerű 3D -s problémák megoldására, MDMX (MaDMaX) - még szélesebb lehetőségekkel - SIMD utasításkészlet és 64 bites lebegőpontos regiszterek használata az egész számokkal való munkavégzéshez, a MIPS16e, amely tömöríti az utasításfolyamot a programok által elfoglalt memória mennyiségének csökkentése érdekében, és a MIPS MT, amely többszálas feldolgozási módot biztosít.

A MIPS-architektúrát gyakran tanulmányozzák a „Számítógépes architektúra” kurzusprogramban egyetemeken és műszaki líceumokban. Ezek a processzorok jelentősen befolyásolták a későbbi RISC architektúrákat, különösen az Alpha -t .

Jelenleg a MIPS különféle megvalósításait főként beágyazott rendszerekben használják, például okostelefonokban , útválasztókban , átjárókban , és a 2010-es évekig olyan játékkonzolokban, mint a Sony PlayStation 2 és a Sony PlayStation Portable . 2006 végéig SGI számítógépekben is használták őket . Az 1980-as és 1990-es évek végére ezt az architektúrát számos vállalat széles körben használta, köztük a Digital Equipment Corporation , a NEC , a Pyramid Technology, a Siemens Nixdorf és a Tandem Computers . Az 1990-es évek közepétől a végéig a piacon minden harmadik mikroprocesszor MIPS processzor volt.

Történelem

A RISC alapítója

1981-ben a Stanford Egyetem munkatársa, John L. Hennessy csapata elkezdett dolgozni a MIPS nevű projekten. A fő ötlet a processzor teljesítményének növelése volt egy kiterjesztett folyamat segítségével . A csővezeték alaptechnológiaként való használatának koncepciója már jóval korábban ismert volt (például az IBM 801 -ben ), de nem használta ki a benne rejlő lehetőségeket. A CPU számos speciális alegységet tartalmaz, például utasításdekódereket, egész számmal rendelkező ALU -t (aritmetikai logikai egység), betöltési/tároló egységeket (memóriakezelés), stb. A hagyományos, nem optimalizált megvalósításban a program egyetlen utasításának (majdnem mindig) befejeződött, mielőtt egy másik elkezdődik; míg egy csővezetékes architektúrában a szekvenciális utasítások párhuzamosan is végrehajthatók. Például, ha egy matematikai utasítást beírunk egy lebegőpontos blokkba, a memóriabetöltés/tárolás blokk egyidejűleg meghívhatja a következő utasítást.

A csővezeték használatának egyik fő akadálya az volt, hogy egyes utasítások, például az osztás végrehajtása sokkal tovább tart, és ennek eredményeként a CPU-nak várnia kell, mielőtt a következő utasítást továbbadja a folyamatnak. Az egyetlen megoldás erre a problémára az, hogy egy sor zárolást használ, amely lehetővé teszi a folyamat egyes szakaszai számára, hogy jelezzék, hogy foglaltak, és ebben az esetben felfüggeszti a parancsokat a szálban. A Hennessy csoport ezeket a zárakat óriási teljesítménykorlátnak tekintette, mivel minden CPU-modulhoz hozzá kellett férni, ami több időt vesz igénybe és korlátozza az órajelet. A MIPS tervezésének fő szempontja az volt, hogy az egyes utasítások minden részfázisát, beleértve a gyorsítótárat is, egy ciklusba illessze, így elkerülhető a zárolás, és csak egy ciklus juthat át a folyamatba.

Bár egy ilyen megvalósítás kiküszöbölne néhány nagyon hasznos műveletet, mint például a szorzás és az osztás, nyilvánvaló, hogy a rendszer általános teljesítménye jelentősen javulna, mivel a chipek magasabb órajelen működnének. A nagy sebesség elérése zárral nehéz lenne, mivel a zárak beállításához szükséges idő arányos az órajel frekvenciájával, ami viszont a kristály méretétől függ. Emiatt vált vitatott kérdéssé a fent említett műveletek kizárása.

Egy másik különbség a MIPS architektúra és a versengő Berkeley architektúrák között az, hogy a Berkeley- RISC képes kezelni a szubrutinhívásokat. Egy ilyen általános feladat teljesítményének növelésére a Berkeley-RISC egy regiszter ablaknak nevezett technikát használt , amely azonban korlátozta a többszintű hívások maximális mélységét. Minden szubrutinhíváshoz saját regiszterkészletre volt szükség, ami szükségessé tette azok számának növelését. Míg ennek a mechanizmusnak a hardveres megvalósítása további helyet foglalt el a CPU chipben. Hennessy azonban úgy vélte, hogy egy „alaposabb” fordító szabad regisztereket találhat a paraméterek átadásához a függvénynek, és a regiszterek számának növelése nemcsak ezt a feladatot egyszerűsíti, hanem az összes művelet teljesítményét is növeli. Ezért úgy döntöttek, hogy elhagyják ezt a technológiát a MIPS-ben.

A MIPS architektúra bizonyos szempontból a RISC -re a legjellemzőbb . A bitek mentése érdekében az utasításkódban a RISC csökkentette a kódolandó utasítások számát. A MIPS-ben a szó 32 bitjéből csak 6-ot használnak a főkódhoz, a többi pedig egyetlen 26 bites ugráscímet vagy legfeljebb 5 mezőt tartalmazhat, amelyek 1-től 3-ig terjedő regiszter + regisztereltolási hossz között állíthatók be. . Számos más formátum létezik, például amikor 2 regisztert közvetlenül egy dedikált 16 bites mező állít be, stb. Ez az elosztás lehetővé tette a processzor számára, hogy egy gépi ciklusban töltse be a szükséges utasításokat és adatokat, míg a régebbi architektúrákban (amelyek nem RISC -ek voltak ), például, mint például a MOS Technology 6502, külön ciklusokra volt szükség a fő kód és az adatok betöltéséhez.

Ez volt a RISC által kínált egyik fő teljesítménynövekedés. Más architektúrák azonban más eszközökkel (például CPU-sorok) hasonló sebességet értek el.

Első hardveres implementáció

1984-ben Hennessy, aki meg volt győződve tervezésének kereskedelmi keresletéről, otthagyta a Stanfordot, és megalapította a MIPS Computer Systems céget. 1985-ben adták ki a MIPS mikroprocesszor első kereskedelmi megvalósítását, az R2000-et, amelyet 1988-ban véglegesítettek és R3000-nek hívtak. Ezek a 32 bites processzorok képezték a cég termékvonalának alapját az 1980-as években, és elsősorban az SG sorozatú munkaállomásokon használták őket. Az új kereskedelmi projektek nem voltak összhangban a Stanford-kutatással, mivel szinte minden zárolást hardverben hajtottak végre, a szorzási és osztási műveleteket pedig maradéktalanul végrehajtották.

1991-ben mutatták be először 64 bites MIPS mikroprocesszorként – az R4000 modellt. Az R4000 kiterjesztett TLB -vel rendelkezik, amelyben a bejegyzés nem csak a virtuális címet, hanem a virtuális címtér azonosítóját is tartalmazza. Egy ilyen puffer kiküszöböli a mikrokernel fő teljesítményproblémáit, ami meglehetősen lassú a versengő architektúrákban ( Pentium , PowerPC , Alpha ), mivel gyakori környezetváltáskor ki kell öblíteni a TLB-t.

A MIPS-nek azonban pénzügyi nehézségei voltak a processzorok piacra vitelével. A projekt annyira fontos volt az SGI számára (a MIPS akkoriban a kevés nagy vásárlók egyike), hogy 1992-ben az SGI megvásárolta a cég jogait azzal a garanciával, hogy a mikroprocesszorok kialakítása nem változik. Leányvállalattá válása után a MIPS Computer Systems a MIPS Technologies nevet kapta.

Licensed Architecture

1990 elején a MIPS megkezdte terveinek licencelését harmadik felek számára. Az ötlet szerencsés volt a kernel egyszerűsége miatt, amely számos olyan alkalmazást talált, ahol korábban sokkal kevésbé hatékony CISC architektúrákat használtak , ugyanannyi és azonos árú áramkörrel (ez a két kritérium szorosan összefügg: a CPU ára, általában az áramkörök és érintkezők számától függ). A Sun Microsystems hasonló kísérletet tett SPARC magok licencelésére , de a Sun nem volt ilyen szerencsés. Az 1990-es évek végére a MIPS a beágyazott processzorok legfontosabb vállalatává vált, és 1997-ben 48 millió MIPS-alapú processzorszállítmány tette lehetővé, hogy a RISC architektúrák felváltsák a népszerű 68k-s processzorcsaládot. A MIPS annyira népszerű volt, hogy 1998-ban az SGI átruházta az eszközök egy részét a MIPS Technologies-ra. A mai napig a MIPS bevételének fele fejlesztési licencelésből származik, a másik fele pedig a harmadik felek által gyártott magok fejlesztésére vonatkozó szerződésekből származik.

1999-ben a MIPS két fő konstrukció köré formálta engedélyezési rendszerét – a 32 bites MIPS32 (a MIPS II-re épül a MIPS III, a MIPS IV és a MIPS V néhány további funkciójával) és a 64 bites MIPS64 (a MIPS V-n alapuló) köré. A MIPS64-et mind a NEC , mind a Toshiba és a SiByte (később a Broadcom felvásárolta) licencelte a megjelenése után. Hamarosan csatlakozott hozzájuk a Philips , az LSI Logic és az IDT. A siker sikert követett, és ma a MIPS processzorok az egyik legkeresettebb termék a számítógépes típusú eszközök (PDA-k, set-top boxok stb.) piacán, más fejlesztők mellett, akik hiába próbálják kiszorítani őket.

Néhány évvel azután, hogy a MIPS architektúra licencbe vétele után egyre több új processzorfejlesztő céget vonzott. Az első ilyen cég a Quantum Effect Devices volt (lásd a következő részt). A MIPS R4300i-t összeállító fejlesztőcsapat megalapította a SandCraftot, amely az új R5432 processzort biztosította a NEC-nek, majd valamivel később lemodellezte az R71000-et, az egyik első egyedi processzort a beágyazott piac számára. A DEC StrongARM alapító csapata végül két új MIPS-alapú processzorcégre szakadt: a SiByte-re, amely az SB-1250-et, az egyik első nagy teljesítményű MIPS-en ( SOC ) és Alchemy Semiconductoron (később az AMD által felvásárolt) alapuló chiprendszert készítette. , amely az Au-1000 SOC-t gyártotta alacsony fogyasztású alkalmazásokhoz. A Lexra MIPS-szerű architektúrát használt, hozzáadva a DSP-t az audiochip-piachoz, és a multi-streaming támogatást a hálózati piacon. Mivel a Lexra nem vásárolt licencet a MIPS-hez, hamarosan perek törtek ki a két cég között. Az elsőt gyorsan beváltották, miután a Lexra megígérte, hogy nem reklámozza a processzorait a MIPS-hez hasonlóként. A második folyamat (a 4814976 számú MIPS szabadalomról a nem igazított memória-hozzáférési utasítás feldolgozására) elhúzódóbb volt, és negatívan érintette mindkét vállalat üzletét, és a befejezése után a MIPS Technologies ingyenes licencet adott ki a Lexrának, és jelentős pénzbeli ellentételezést fizetett.

E fejlesztések nyomán két olyan cég lépett a piacra, amelyek többmagos, MIPS architektúrát használó eszközök készítésére szakosodtak. A Raza Microelectronics Corporation kivásárolta a gyártósort a kevésbé sikeres SandCrafttól, majd nyolcmagos eszközöket kezdett gyártani a távközlési és hálózati piac számára. A Cavium Networks, amely eredetileg a processzorvédelem beszállítója, szintén nyolc, majd később 32 magos architektúrákat kezdett gyártani ugyanezen piacokon. Mindkét cég maga tervezte a magokat, és csak a terveket engedélyezte, ahelyett, hogy kész MIPS processzorterveket vásároltak volna.

A PC-piac elvesztése

A MIPS mikroprocesszorokat használó munkaállomásokat gyártó gyártók közé tartozik az SGI , a MIPS Computer Systems, Inc., a Whitechapel Workstations, az Olivetti, a Siemens-Nixdorf, az Acer, a Digital Equipment Corporation , a NEC és a DeskStation. A MIPS architektúrára portolt operációs rendszerek közé tartozik az SGI IRIX , a Microsoft Windows NT (4.0-s verzióig) , a Windows CE , Linux , UNIX ( System V és BSD ), SINIX, QNX és a cég saját operációs rendszereRISC OS

Az 1990-es évek elején azt hitték, hogy a MIPS más nagy teljesítményű RISC processzorokkal együtt hamarosan megelőzi az Intel IA32 architektúráját . Ezt elősegítette a Windows NT for Alpha , MIPS és PowerPC első két verziójának a Microsoft általi támogatása , valamint kisebb mértékben a Clipper és SPARC architektúrák. Amint azonban az Intel kiadta a Pentium CPU-család legújabb verzióit, a Microsoft Windows NT v4.0 leállt az Alpha és az Intel kivételével. Miután az SGI úgy döntött, hogy az Itanium és az IA32 architektúrára vált, a MIPS processzorok szinte teljesen megszűntek a személyi számítógépekben.

Embedded Market

Az 1990-es években a MIPS architektúrát széles körben alkalmazták a beágyazott piacon : hálózatok, távközlés, videojátékok, játékkonzolok, nyomtatók, digitális set-top boxok, digitális TV-k, xDSL- és kábelmodemek, valamint PDA-k esetében.

A beágyazott MIPS architektúrák alacsony energiafogyasztása és hőmérsékleti jellemzői, valamint a belső funkciók széles skálája teszi ezt a mikroprocesszort univerzálissá sok eszközhöz.

Szintetizálható magok a beágyazott piac számára

Az elmúlt években a MIPS különböző generációiban használt technológiák többségét IP-magként (építőelemként) javasolták a beágyazott processzorok megvalósításához. Ezen túlmenően mindkét kerneltípus javasolt – 32 és 64 bites, 4K és 6K néven ismert. Az ilyen magok kombinálhatók más építőelemekkel, például FPU -kkal, SIMD - rendszerekkel , különféle I/O-eszközökkel stb.

Az egykor kereskedelmileg sikeres MIPS magok mára fogyasztói és ipari alkalmazásokra találtak. Ezek a magok az új Cisco , Linksys , ZyXEL és MikroTik útválasztókban , kábel- és ADSL -modemekben, intelligens kártyákban , lézernyomtató mechanizmusokban, digitális set-top boxokban, robotokban, PDA-kban, Sony PlayStation 2-ben és Sony PlayStation Portable-ben találhatók. A mobiltelefon- és PDA-alkalmazásokban azonban a MIPS-nek nem sikerült elmozdítania az ott szilárdan kialakult versengő ARM -architektúrát .

A MIPS-alapú processzorok a következők: IDT RC32438; ATI Hilleon; Alchemy Au1000, 1100, 1200 ; Broadcom Sentry5; RMI XLR7xx, Cavium Octeon CN30xx, CN31xx, CN36xx, CN38xx és CN5xxx; Infineon Technologies EasyPort, Amazon, Duna, ADM5120, WildPass, INCA-IP, INCA-IP2; Mikrochip technológia PIC32 ; NEC EMMA és EMMA2, NEC VR4181A, VR4121, VR4122, VR4181A, VR5432, VR5500; Oak Technologies Generation; PMC-Sierra RM11200; QuickLogic QuickMIPS ESP; Toshiba Donau, Toshiba TMPR492x, TX4925, TX9956, TX7901; KOMDIV-32 , KOMDIV-64 ; Többmagos .

MIPS szuperszámítógépek

A MIPS architektúra egyik legérdekesebb alkalmazása többprocesszoros számítástechnikai szuperszámítógépekben való felhasználása. Az 1990-es évek elején a Silicon Graphics ( SGI ) üzleti tevékenységét a grafikus termináloktól a nagy teljesítményű számítástechnikai piacra helyezte. A vállalat szerverrendszerekbe való korai betöréseinek sikere (nevezetesen az R4400, R8000 és R10000 alapú Challenge sorozat) arra ösztönözte az SGI-t, hogy egy sokkal erősebb rendszert hozzanak létre. Az R10000 használata lehetővé tette a vállalat számára az Origin 2000 rendszer megtervezését, amely végül 1024 CPU-ra bővíthető saját cc-NUMA interconnect (NUMAlink) segítségével. Később az Origin 2000 egy új rendszert szült - az Origin 3000-et, amely ugyanazzal a maximum 1024 CPU-val jelent meg, de a fejlesztés során R14000 és R16000 chipeket használtak 700 MHz-ig. 2005-ben azonban, amikor az SGI stratégiai döntést hozott az Intel IA-64 architektúrára való átállásról, a MIPS-alapú szuperszámítógépeket leállították.

2007-ben a SiCortex Corporation bemutatott egy új, MIPS architektúrán alapuló, többprocesszoros személyi szuperszámítógépet. Fejlesztése a MIPS64-en és a Kautz gráf topológiát használó nagy teljesítményű összekapcsoláson alapult .  Ez a rendszer rendkívül hatékony és számítástechnikailag nagy teljesítményű. Egyedülálló jellemzője a hat MIPS64 magot, memóriavezérlő kapcsolót, DMA rendszerközi kommunikációt, 1 Gb LAN-t és PCI Express vezérlőket integráló többmagos feldolgozó csomópont. És mindez egyetlen chipen, amely 10 watt teljesítményt fogyaszt, de másodpercenként maximum 6 milliárd lebegőpontos műveletet hajt végre. Egy ilyen szuperszámítógép legerősebb konfigurációja az SC5832-es verzió, amely 972 csomópontból (összesen 5832 MIPS64 magból) áll, és másodpercenként 8,2 billió lebegőpontos műveletet hajt végre.

Loongson visszatér a személyre szabáshoz

Loongson a MIPS szabadalom megkerülésének reményében kiadta architektúráját, amely teljesen hasonló volt a MIPS Technologies fejlesztéséhez, és Linux által támogatott . Mivel a Loongson processzorok gyártása olcsóbb volt, a MIPS újjáéledhetett a személyi számítógépek piacán, szemben Loongsonnal. (Később Loongson licencet vásárolt a MIPS-hez - lásd a fő cikket)

A MIPS-alapú processzorokat az iUnika, a Bestlink, a Lemote és a Golden Delicious Computers netbookjai is használják.

MIPS IV

MIPS IV  – az architektúra negyedik generációja, a MIPS III kiterjesztett változata, és kompatibilis az összes létező MIPS modellel. A MIPS IV első megvalósítását 1994-ben mutatták be R8000 néven . A MIPS IV tartalma:

MIPS V

A MIPS V-t, az architektúra ötödik változatát 1996. október 21-én mutatták be az 1996-os Microprocessor Forumon . Ezt a modellt a 3D grafikus alkalmazások teljesítményének javítására tervezték . Az 1990-es évek közepén a legtöbb nem beágyazott MIPS mikroprocesszor az SGI grafikus terminálja volt . A MIPS V fejlesztése kiegészült az MDMX (MIPS Digital Media Extensions) egészszámú multimédiás bővítményekkel, amelyeket a MIPS V-vel egy napon vezettek be.

A MIPS V megvalósításait soha nem hajtották végre. 1997-ben az SGI bemutatta a "H1" ("Beast") és a "H2" ("Capitan") elnevezésű mikroprocesszorokat, amelyeket 1999-ben kellett volna gyártani. De hamarosan egyesítették őket, és végül 1998-ban ezeket a projekteket törölték.

A MIPS V hozzáadott egy új adattípust, a PS-t (pair-single), amely két dupla pontosságú (32 bites) lebegőpontos szám, amelyeket egy 64 bites lebegőpontos regiszterben tárolnak. Az ezzel az adattípussal SIMD módban történő munkavégzéshez az aritmetika különféle változatait, a lebegőpontos számokkal végzett összehasonlító műveleteket, valamint egy feltételes ugrási utasítást adtunk hozzá. Új utasítások vannak a PS-adatok betöltésére, újrakonfigurálására és konvertálására. Ez az első olyan architektúra, amely a rendelkezésre álló erőforrásokkal képes lebegőpontos feldolgozást megvalósítani SIMD módban.

MIPS processzorcsalád

Az első kereskedelmi forgalomban kapható MIPS mikroprocesszor az R2000 volt, amelyet 1985-ben vezettek be. Megvalósította a szorzás és osztás műveleteit, amelyeket több ciklusban hajtottak végre. A szorzó és osztás eszköz nem volt szorosan integrálva a processzormagba, bár ugyanazon a lapkán található; emiatt az utasításrendszer kibővült a szorzás és osztás eredményeinek általános célú regiszterekbe történő betöltésére vonatkozó utasításokkal, ezek az utasítások blokkolták a csővezetéket.

Az R2000 mikroprocesszor big-endian és little-endian módban is betölthető volt, 32 db 32 bites általános célú regisztert tartalmazott. Az AMD 29000 és Alpha processzorokhoz hasonlóan az R2000 mikroprocesszornak sem volt külön feltételjelző regisztere, mivel a fejlesztők azt potenciális szűk keresztmetszetnek tartották. A programszámláló nem érhető el közvetlenül.

Az R2000 mikroprocesszor legfeljebb négy társprocesszor csatlakoztatását támogatta, amelyek közül az egyik beépített és kivételkezelést, valamint memóriakezelést (MMU) biztosít. Szükség esetén az R2010 chipet, egy aritmetikai koprocesszort egy másik koprocesszorként lehetett csatlakoztatni, amely harminckét 32 bites regisztert tartalmazott, amelyek tizenhat 64 bites dupla pontosságú regiszterként használhatók. A következő a családban az R3000 volt , amely 1988-ban jelent meg. 64 KB-os adatgyorsítótárat tartalmazott (R2000 - 32 KB). Ezenkívül az R3000 gyorsítótár koherenciát biztosított többprocesszoros konfigurációkban. Annak ellenére, hogy az R3000 többprocesszoros támogatásának számos hiányossága van, számos működőképes többprocesszoros rendszer készült az R3000 alapján. Ami az R2000-et illeti, az R3000-hez egy aritmetikai társprocesszort hoztak létre egy különálló VLSI: R3010 formájában. Az R3000 mikroprocesszor volt az első kereskedelmileg sikeres MIPS processzor, több mint egymillió processzorral. Az R3000 40 MHz-en futó gyorsított változata, az R3000A 32 VUP-t (VAX Unit of Performance) ért el. Az R3000A továbbfejlesztése, a 33,8688 MHz-en működő R3051 mikroprocesszor a Sony PlayStation játékkonzolban került felhasználásra. Más gyártók is bevezették az R3000A-val kompatibilis processzorokat: a Performance Semiconductor fejlesztette ki az R3400-at, míg az IDT az R3500-at, mindkettő integrált R3010 matematikai társprocesszorral. A Toshiba R3900 volt az első olyan rendszer egy chipen, amely a MIPS architektúrát használta; ezt a chipet egy Windows CE-t futtató laptopban használták. Kifejlesztették az R3000 sugárzástűrő változatát , amely integrált R3010 -gyel rendelkezik űrhajózási alkalmazásokhoz, és a Mongoose-V nevet kapta .

Az 1991-ben megjelent R4000 sorozat a MIPS processzorokat 64 bitesre bővítette. (A MIPS Technology volt az első cég, amely 64 bites architektúrájú processzorokat adott ki) Az R4000 1,3 millió tranzisztorból áll, beépített adat- és utasítás-gyorsítótárral (mindkettő 8 KB-os). Ebben a processzorban az 50 MHz-es külső órajel megduplázódik, a belső órajel pedig 100 MHz. Az R4400 processzor az R4000-re épül, 2,2 millió tranzisztorból áll, beépített adatgyorsítótárral és utasítás-gyorsítótárral (mindkettő 16 KB-os), belső órajele pedig 150 MHz. Ezen processzorok utasításkészlete (a MIPS II specifikáció) 64 bites lebegőpontos betöltési és írási utasításokkal, egyszeres és dupla pontosságú négyzetgyök utasításokkal, feltételes megszakítási utasításokkal és a többprocesszoros konfigurációk támogatásához szükséges atomműveletekkel bővült. Az R4000 és R4400 processzorok 64 bites adatbuszokkal és 64 bites regiszterekkel rendelkeznek.

A MIPS, amely ma az SGI MTI nevű részlege, kifejlesztette az olcsó R4200-as processzorokat, amelyek a jövőbeni (még olcsóbb) R4300i alapjául szolgáltak. Ennek a processzornak a származékát, a NEC VR4300-at a Nintendo 64 játékkonzolokban használták.

A Quantum Effect Devices (QED), a MIPS fejlesztői által alapított független cég az R4600 Orion, R4700 Orion, R4650 és R5000 processzorsorozatot fejlesztette ki. Ha az R4000 növelte az órajelet, de feláldozott a cache memória mennyiségével, akkor a QED nagy figyelmet fordított a cache memória kapacitására (amely mindössze 2 ciklus alatt érhető el), és a kristályfelület hatékony kihasználására. Az R4600 és R4700 processzorokat az SGI Indy munkaállomások olcsó változataiban, valamint a korai (MIPS-en alapuló) Cisco útválasztókban, például a 36x0 és 7x00 sorozatokban használták. Az R4650 mikroprocesszort a WebTV set-top boxokban (jelenleg Microsoft TV) használták. Az R5000 FPU-ban a lebegőpontos (egyszeri pontosságú) ütemezés rugalmasabb volt, mint az R4000-ben, és ennek eredményeként az R5000 alapú SGI Indys munkaállomások jobb grafikus teljesítményt nyújtottak, mint az azonos órajellel és grafikus hardverrel rendelkező R4400. Az R5000 és a régi grafikus kártya kombinálása utáni fejlődés hangsúlyozására az SGI új nevet adott neki. Kicsit később a QED kifejlesztette az RM7000 és RM9000 processzorcsaládot a hálózati és lézernyomtatók piacára. 2000 augusztusában a QED-t felvásárolta a félvezetőgyártó PMC-Sierra, és ez utóbbi továbbra is a MIPS architektúrákba fektetett be. Az RM7000 processzor 256 KB chipen belüli L2 gyorsítótárat és egy vezérlőt tartalmazott a további L3 gyorsítótárhoz. Létrehozták az RM9xx0 processzorokat - SOC-eszközök családját, amelyek olyan perifériás komponenseket tartalmaznak (az északi hídon), mint: memóriavezérlő, PCI-vezérlő, Ethernet-vezérlő, valamint gyors I / O eszközök (például nagy teljesítményű teljesítménybusz, mint például a HyperTransport).

Az 1994-ben bemutatott R8000 volt az első MIPS szuperskaláris architektúra, amely ciklusonként 2 egész számot (vagy lebegőpontos) és 2 memóriaelérési utasítást tudott adni. Ez a kialakítás 6 sémát használt: egy eszköz egész számú utasításokhoz (16 KB az utasításokhoz és 16 KB az adatgyorsítótárhoz), lebegőpontos utasításokhoz, három másodlagos RAM gyorsítótár-leíró (kettő a másodlagos gyorsítótár-hozzáféréshez + egy a buszkövetéshez), valamint egy ASIC gyorsítótár-vezérlő. Az architektúra két teljesen csővezetékes szorzás-összeadás (kettős pontosságú) egységgel rendelkezik, amelyek 4 MB-os chipen kívüli másodlagos gyorsítótárba képesek adatfolyamot továbbítani. Az 1990-es évek közepén az R8000 processzorok elindították a POWER Challenge SGI szervereket, majd később elérhetővé váltak a POWER Indigo2 munkaállomásokon. Bár teljesítménye ennek az FPU-nak volt a legalkalmasabb a kutatók számára, korlátozott egészszámú teljesítménye és magas ára nem vonzotta a legtöbb felhasználót, így az R8000 csak egy évig volt a piacon, és még most is alig található.

1995-ben megjelent az R10000 [3] . Ezt a processzort egychipes kivitelben kínálták, magasabb órajelen futott, mint az R8000, és nagy (32 KB) elsődleges adat- és utasítás-gyorsítótárat is tartalmazott. Szuperskaláris is volt, de ez a nagy újítás hibás volt. De még egy egyszerűbb FPU-val is, a jelentősen megnövekedett egészszámú teljesítmény, az alacsonyabb ár és a nagyobb tárolósűrűség miatt az R10000 a legtöbb felhasználó által preferált választás.

Minden későbbi tervezés az R10000 magon alapult . Az R12000 0,25 mikronos gyártási eljárást alkalmazott, hogy kisebbre szabja a chipet és magasabb órajelet érjen el. A felülvizsgált R14000 magasabb órajellel rendelkezett, amellett, hogy támogatja a DDR SRAM-ot a chipen kívüli gyorsítótárhoz. Ezt követően megjelent az R16000 és az R16000A, amelyeknek az órajel frekvenciáját is megnövelték; további L1 gyorsítótárat építettek beléjük, és a gyártásuk kisebb szerszámokat igényelt, mint korábban.

A MIPS család további tagjai közé tartozik az R6000, a Bipolar Integrated Technology ESL implementációja. Az R6000 a MIPS II processzorgenerációhoz tartozik. TLB-je és gyorsítótár-eszköze jelentősen eltér a család többi tagjától. Az R6000 nem váltotta be az ígért előnyöket, és bár a Control Data számítógépek számára némileg hasznosnak találták, gyorsan eltűnt a mainstream piacról.

MIPS mikroprocesszorok
Modell Frekvencia (MHz) Év Fejlesztési technológia (µm) Tranzisztorok (millió) Kristályméret (mm²) Csapok száma Teljesítmény, W) Feszültség (V) Adatgyorsítótár (KB) Utasítás gyorsítótár (KB) 2. szintű gyorsítótár 3. szintű gyorsítótár
R2000 8-16.67 1985 2.0 0.11 ? ? ? ? 32 64 NEM NEM
R3000 12-40 1988 1.2 0.11 66.12 145 négy ? 64 64 0-256 KB külső NEM
R4000 100 1991 0.8 1.35 213 179 tizenöt 5 nyolc nyolc 1 MB külső NEM
R4400 100-250 1992 0.6 2.3 186 179 tizenöt 5 16 16 1-4 MB külső NEM
4600 RUB 100-133 1994 0,64 2.2 77 179 4.6 5 16 16 512 KB külső NEM
4700 RUB 133 1996 ? ? ? 179 ? ? 16 16 Külső NEM
R5000 150-200 1996 0,35 3.7 84 223 tíz 3.3 32 32 1 MB külső NEM
R8000 75-90 1994 0.7 2.6 299 591+591 harminc 3.3 16 16 4 MB külső NEM
R10000 150-250 1996 0,35, 0,25 6.7 299 599 harminc 3.3 32 32 512 KB – 16 MB külső NEM
R12000 270-400 1998 0,25, 0,18 6.9 204 600 húsz négy 32 32 512 KB – 16 MB külső NEM
7000 RM 250-600 1998 0,25, 0,18, 0,13 tizennyolc 91 304 10, 6, 3 3,3, 2,5, 1,5 16 16 256 KB belső 1 MB külső
R14000 500-600 2001 0.13 7.2 204 527 17 ? 32 32 512 KB – 16 MB külső NEM
R16000 700-1000 2002 0.11 ? ? ? húsz ? 64 64 512 KB – 16 MB külső NEM
R24K 750+ 2003 65 nm ? 0,83 ? ? ? 64 64 4-16 MB külső NEM

MIPS I utasításformátum

Az utasítások három típusra oszthatók: R, I és J. Mindegyik utasítás 6 bites kóddal kezdődik. A kódon kívül az R-típusú utasítások három regisztert, egy regisztereltolási méretű területet és egy funkcióterületet határoznak meg; Az I-típusú utasítások két regisztert és egy azonnali értéket határoznak meg; A J-típusú utasítások egy műveleti kódból és egy 26 bites elágazási címből állnak.

Az alábbi táblázat a három utasításformátum kernelarchitektúrában való használatát mutatja be:

Típusú −31− formátum (bitekben) −0−
R kód (6) rs(5) rt(5) rd(5) álság (5) funkció (6)
én kód (6) rs(5) rt(5) közvetlen (16)
J kód (6) cím (26)

Összeszerelési nyelv MIPS

Ezek az assembly nyelvi utasítások közvetlen hardveres implementációval rendelkeznek, szemben a pszeudoutasításokkal, amelyeket az összeállítás előtt valódi összetett utasításokká fordítanak le.

Egész műveletek

A MIPS 32 regiszterrel rendelkezik az egész műveletekhez. A számtani számítások elvégzéséhez az adatoknak regiszterekben kell lenniük. A $0 regiszter mindig a 0-t tárolja, a $1 regiszter pedig összeszerelésre van fenntartva (álutasítások és nagy konstansok tárolására). Az alábbi táblázat azt mutatja, hogy mely bitek felelnek meg az utasítás mely részeinek. A kötőjel (-) semleges állapotot jelöl.

Kategória Név Utasítás szintaxisa Jelentése Formátum/Kód/Funkció Megjegyzések/kódolás
Számtan Hozzáadás add hozzá $d,$s,$t $d = $s + $t R 0 20 16 Két regisztert ad hozzá, túlcsorduláskor megszakítja
000000ss sssttttt ddddd --- --100000
Hozzáadás aláírás nélkül add hozzá $d,$s,$t $d = $s + $t R 0 21 16 Mint fent, de figyelmen kívül hagyja a túlcsordulást
000000ss sssttttt ddddd --- --100001
Kivonás $d,$s,$t $d = $s − $t R 0 22 16 Két regisztert kivon, túlcsordulási megszakítást hajt végre
000000ss sssttttt ddddd --- --100010
előjel nélküli kivonás subu $d,$s,$t $d = $s − $t R 0 23 16 Mint fent, de figyelmen kívül hagyja a túlcsordulást
000000ss sssttttt ddddd000 00100011
Azonnali hozzáadása add hozzá $t,$s,C $t = $s + C (jellel) én 8 16 - Előjeles konstansok hozzáadásához (egy regiszter másikba másolásához is: addi $1, $2, 0), túlcsordulási megszakítást hajt végre
001000ss sssttttt CCCCCCCC CCCCCCCC
Azonnali aláírás nélküli hozzáadása addiu $t,$s,C $t = $s + C (jellel) én 9 16 - mint fent, de figyelmen kívül hagyja a túlcsordulást, a C aláírt marad
001001ss sssttttt CCCCCCCC CCCCCCCC
Szorozni mult $s,$t LO = (($s * $t) << 32) >> 32;
HI = ($s * $t) >> 32;
R 0 18 16 Megszoroz két regisztert, és a 64 bites eredményt két speciális memóriamezőbe írja, a LO és a HI. Hasonlóképpen a művelet eredményét a következő formában írhatjuk fel: (int HI,int LO) = (64 bites) $s * $t. Az LO és HI regiszterek eléréséhez lásd mfhi és mflo.
Feloszt div $s, $t LO = $s / $t HI = $s % $t R 0 1A16_ _ Az egyik regisztert elosztja a másikkal, és a 32 bites eredményt LO-ba, a maradékot pedig HI-be írja [4] .
Osztás aláírás nélkül két $s, $t LO = $s / $t HI = $s % $t R 0 1B 16 Az egyik regisztert elosztja a másikkal, és a 32 bites eredményt az LO-ba, a maradékot pedig a HI-be írja.
Adatátvitel Dupla szó betöltése ld$t,C($s) $t = memória[$s + C] én 23 16 - dupla szót tölt be: MEM[$s+C] és a következő 7 bájtot a $t-be és a következő regiszterbe.
szó betöltése lw $t,C($s) $t = memória[$s + C] én 23 16 - betölti a szót innen: MEM[$s+C] és a következő 3 bájtot.
Félszó betöltése h $t,C($s) $t = Memória[$s + C] (jelzett) én 21 16 - félszót tölt be innen: MEM[$s+C] és a következő bájt. A jelet a tok szélességéig kiterjesztik.
Félszó betöltése aláírás nélkül lhu $t,C($s) $t = Memória[$s + C] (előjel nélküli) én 25 16 - Mint fent, de jelkiterjesztés nélkül.
bájt betöltése lb $t,C($s) $t = Memória[$s + C] (jelzett) én 20 16 - bájtot tölt be innen: MEM[$s+C].
A betöltési bájt aláíratlan lbu $t,C($s) $t = Memória[$s + C] (előjel nélküli) én 24 16 - Mint fent, de jelkiterjesztés nélkül.
dupla szó tárolása sd $t,C($s) Memória[$s + C] = $t én - két szótípust tárol a $t-től és a következő regisztertől: MEM[$s+C] és a következő 7 bájt. Az operandusok sorrendje zavaró lehet.
bolti szó sw $t,C($s) Memória[$s + C] = $t én 2B16_ _ - tárolja a szót: MEM[$s+C] és a következő 3 bájtot. Az operandusok sorrendje zavaró lehet.
Tárolja a felét sh $t,C($s) Memória[$s + C] = $t én 29 16 - elmenti a regiszter első felét (félszót) ide: MEM[$s+C] és a következő bájtot.
Tárolási bájt sb $t,C($s) Memória[$s + C] = $t én 28 16 - egy regiszter (byte) első negyedét menti a következőbe: MEM[$s+C].
Azonnali felső terhelés lui $t,C $t = C << 16 én F 16 - 16 bites operandust tölt be a megadott regiszter magasabb 16 bitjébe. A konstans maximális értéke 2 16 −1
Mozgás a magasból mfhi$d $d = HI R 0 10 16 A HI értéket egy regiszterbe helyezi. Ne használja a szorzás és osztás utasításokat az mfhi utasításban (ez a művelet nincs meghatározva a MIPS folyamat miatt).
Mozgás alacsonyról mflo $d $d = LO R 0 12 16 Az LO értéket egy regiszterbe helyezi. Ne használjon szorzás és osztás utasításokat egy mflo utasításon belül (ez a művelet nincs meghatározva a MIPS folyamat miatt).
Áthelyezés a vezérlőregiszterből mfcZ $t, $s $t = Társfeldolgozó[Z].ControlRegister[$s] R 0 Áthelyez egy 4 bájtos értéket a Z-vezérlő regiszter társprocesszorából egy általános célú regiszterbe. Jel kiterjesztés.
Lépjen a Vezérlőnyilvántartásba mtcZ $t, $s Coprocessor[Z].ControlRegister[$s] = $t R 0 Áthelyez egy 4 bájtos értéket az általános célú regiszterből a Z-vezérlőregiszter társprocesszorába. Jel kiterjesztés.
logikus És és $d,$s,$t $d = $s & $t R 0 24 16 bitenkénti kötőszó
000000ss sssttttt ddddd --- --100100
És azonnal andi $t,$s,C $t = $s & C én C 16 - 001100ss sssttttt CCCCCCCC CCCCCCCC
Vagy vagy $d,$s,$t $d = $s | $t R 0 25 16 Bitenkénti diszjunkció
Vagy azonnali ori $t,$s,C $t = $s | C én D16 _ -
Exkluzív ill xor $d,$s,$t $d = $s ^ $t R 0 26 16
Sem sem $d,$s,$t $d = ~ ($s | $t) R 0 27 16 Bitenként sem
Állítsa be kevesebb mint slt $d,$s,$t $d = ($s < $t) R 0 2A 16 Ellenőrzi, hogy az egyik regiszter kisebb-e, mint a másik.
Kevesebb, mint azonnali indítás slti $t,$s,C $t = ($s < C) én A 16 - Ellenőrzi, hogy egy regiszter kisebb-e egy konstansnál.
biteltolás Eltolás balra logikus sll $t,$s,C $t = $s << C R 0 0 C bitet balra tol (két hatványával szoroz )
Logikai eltolás jobbra srl $t,$s,C $t = $s >> C R 0 2 16 C bitet jobbra tol (kettő hatványával oszt ). Vegye figyelembe, hogy ez az utasítás csak akkor működik, mint a kettős komplementer osztás, ha az érték pozitív.
Váltás jobbra aritmetika sra $t,$s,C R 0 3 16 eltolja a C bitet - (osztja a kettős komplement bináris kódot)
Feltételes elágazás Elágazás egyenlő beq $s,$t,C ha ($s == $t) lépjen PC+4+4 °C-ra én 4 16 - A megadott címen lévő utasításra ugrik, ha a két regiszter egyenlő.
000100ss sssttttt CCCCCCCC CCCCCCCC
Az ág nem egyenlő bne $s,$t,C ha ($s != $t) megy PC+4+4 °C én 5 16 - A megadott címen lévő utasításra ugrik, ha a két regiszter nem egyenlő.
Feltétel nélküli ugrás Ugrás j C PC = PC+4[31:28] . C*4 J 2 16 - Feltétel nélküli ugrást hajt végre a megadott címen lévő utasításra.
ugróregiszter jr$s $s címre megy R 0 8 16 A megadott regiszterben szereplő címre ugrik.
ugorj és linkeld jal C 31 USD = PC + 8; PC = PC+4[31:28] . C*4 J 3 16 - Eljárásként - egy szubrutin hívására szolgál, regiszter $31 kap és visszaad egy címet; az alprogram hozama 31 dollárt tesz ki. A visszatérési cím PC + 8 lesz, nem PC + 4, a késleltetési rés (delay slot) használata miatt: az architektúrában minden elágazó utasítást (az új MIPS32 / MIPS64 utasítások 2014-es bevezetése előtt) mindig megelőz az azt követő utasítás végrehajtása, és csak ezután a tényleges átmenet. Ez lehetővé tette a csővezeték egyenletesebb betöltését - míg az átmeneti utasítás az átmeneti címen lekérte az utasítást, a processzor nem állt tétlenül, hanem végrehajtotta az azt követő utasítást, ami azonban az olvasási és helyes megértési nehézségekkel jár. assembler kódot, és megköveteli, hogy a fordítók figyelembe vegyék.

Megjegyzés: A MIPS összeállítási nyelvi kódban az elágazási utasítások eltolása a kód más részein található jelölésekkel ábrázolható.

Megjegyzés: Nincs megfelelő "regiszterbe másolás" (azonnali betöltés) parancs; ezt megtehetjük az addi (azonnali hozzáadása) vagy az ori (vagy azonnali) függvényekkel a $0 regiszterrel. Például mind az addi $1, $0, 100 és az ori $1, $0, 100 mind a $1 regisztert tölti be 100 értékkel.

Műveletek lebegőpontos számokkal

A MIPS-nek 32 lebegőpontos regisztere van. A regiszterek 2-vel vannak összekötve a dupla pontosságú számítások érdekében. A páratlan regiszterek nem használhatók számtani vagy elágazási célokra, csak részben jelezhetnek kettős pontosságot egy regiszterpárban.

Kategória Név Utasítás szintaxisa Jelentése Formátum/Kód/Funkció Megjegyzések/kódolás
Számtan FP add single add.s $x,$y,$z $x = $y + $z Lebegőpontos összeadás (egyszeri pontosság)
FP kivonás egyes al.s $x,$y,$z $x = $y - $z Lebegőpontos kivonás (egyszeres pontosság)
FP szorzás egyszer mul.s $x,$y,$z $x = $y * $z Lebegőpontos szorzás (egyszeri pontosság)
FP oszt egy div.s $x,$y,$z $x = $y / $z Lebegőpontos osztás (egyszeri pontosság)
FP add dupláját add.d $x,$y,$z $x = $y + $z Lebegőpontos összeadás (dupla pontosság)
FP kivonás duplája sub.d $x,$y,$z $x = $y - $z Lebegőpontos kivonás (dupla pontosság)
FP szorozni kétszer mul.d $x,$y,$z $x = $y * $z Lebegőpontos szorzás (dupla pontosság)
FP oszd meg kétszer div.d $x,$y,$z $x = $y / $z Lebegőpontos osztás (kettős pontosság)
Adatátvitel Szó társprocesszor betöltése lwcZ $x,CONST($y) Coprocessor[Z].DataRegister[$x] = Memória[$y + CONST] én 4 bájt típusú szót tölt be: MEM[$2+CONST] a társprocesszor adatregiszterébe. Jel kiterjesztés.
Tárolja a szövegtárs koprocesszort swcZ $x,CONST($y) Memória[$y + CONST] = Társprocesszor[Z]. Adatregiszter[$x] én 4 bájtot ír a társprocesszor adatregiszteréből a MEM[$2+CONST]-ba. Jel kiterjesztés.
összerakós játékaik FP összehasonlítás egyetlen (eq, ne, lt, le, gt, ge) c.lt.s $f2,$f4 if ($f2 < $f4) cond=1; else feltétel=0 A lebegőpontosnál kisebb utasításokhoz képest. egyetlen pontosság.
FP összehasonlítás duplája (eq, ne, lt, le, gt, ge) c.lt.d $f2,$f4 if ($f2 < $f4) cond=1; else feltétel=0 A lebegőpontosnál kisebb utasításokhoz képest. Dupla pontosság.
elágazó elágazás az FP-n igaz bc1t 100 ha (feltétel == 1) lépjen a PC+4+100-ra ha a formátum FP, akkor egy elágazás történik.
elágazás az FP-n false bc1f 100 ha (feltétel == 0) lépjen a PC+4+100-ra ha a formátum nem FP, akkor létrejön egy elágazás.

Álutasítások

Ezeket az utasításokat a MIPS assembly nyelve elfogadja, de nem valósak. Az assembler lefordítja őket tényleges utasítássorozatokká.

Név Utasítás szintaxisa Fordítás normál utasításra jelentése
Cím betöltése la $1, Címkecím lui $1, LabelAddr[31:16]; ori $1,$1, LabelAddr[15:0] $1 = Címjelölés
Azonnali betöltés li$1, AZONNAL[31:0] lui $1, IMMED[31:16]; ori $1, $1, IMMED[15:0] $1 = 32 bites közvetlen érték
Elágazás, ha nagyobb, mint bgt $rs,$rt,címke slt $at,$rt,$rs; bne $at,$nulla,Címke if(R[rs]>R[rt]) PC=Címke
Elágazás, ha kisebb, mint blt $rs,$rt,Címke slt $at,$rs,$rt; bne $at,$nulla,Címke if(R[rs]<R[rt]) PC=Címke
Elágazás, ha nagyobb vagy egyenlő bge stb. if(R[rs]>=R[rt]) PC=Címke
Elágazás, ha kisebb vagy egyenlő ble if(R[rs]<=R[rt]) PC=Címke
Elágazás, ha nagyobb, mint az előjel nélküli bgtu if(R[rs]=>R[rt]) PC=Címke
Elágazás, ha nagyobb nullánál bgtz if(R[rs]>0) PC=Címke
Csak az első 32 bitet szorozza és adja vissza mul $1, $2, $3 mult $2, $3; 1 dollár 1 dollár = 2 dollár * 3 dollár

Számos további fontos utasítás

A fordítóregiszter használata

A hardver architektúra a következő kritériumokat határozza meg:

Ezek az egyetlen korlátozások, amelyeket a hardver architektúra szab az általános célú regiszterek használatára.

A különféle MIPS-eszközök speciális hívási konvenciókat alkalmaznak, amelyek korlátozzák a regiszterek használatát. A hívási megállapodásokat a szoftvercsomag teljes mértékben támogatja, de a hardver nem követeli meg.

Regiszterek
Név Szám Alkalmazás kell foglalni?
nulla dollár 0 USD mindig 0-t tárol N/A
$at 1 dollár ideiglenes nyilvántartás az assembly nyelvhez NEM
$v0-$v1 2-3 dollár függvény és kifejezés értékek NEM
$a0–$a3 4-7 dollár függvény argumentumait NEM
$t0—$t7 8-15 dollár ideiglenes NEM
$s0–$s7 16–23 dollár tárolt ideiglenes értékeket IGEN
$t8—$t9 24–25 dollár ideiglenes NEM
$k0—$k1 26–27 dollár az operációs rendszer kernel számára fenntartva NEM
$gp 28 dollár globális mutató IGEN
$sp 29 dollár veremmutató IGEN
$fp 30 dollár keretmutató IGEN
$ra 31 dollár visszaszállítási cím N/A

A védett regiszterek (megállapodás szerint) nem módosíthatók rendszer- vagy eljárás- (függvény)hívásokkal. Például a $s-registereket a veremben kell tárolni az őket használó eljárásnak megfelelően; A konstansokat a $sp és $fp regiszterekre növeljük, majd az eljárás végén a regisztereket ismét csökkentjük. Az ellenkező példa a $ra regiszter, amely automatikusan megváltozik, ha bármely függvény hívja. A $t-regisztereket a programnak el kell mentenie, mielőtt bármilyen eljárást meghívna (ha a programnak szüksége van a hívás után kapott adatokra).

Emulátorok

Az Open Virtual Platformok között nem kereskedelmi használatra is elérhető egy ingyenes OVP-sim emulátor, amely processzor- és platformmodellek könyvtára, valamint olyan API-k, amelyek segítségével a felhasználó saját modelljeit tervezheti. A Model Library egy C nyelven írt nyílt forrás, amely 4K, 24K és 34K MIPS magokat tartalmaz. Ezeket a modelleket az Imperas hozta létre és tartja karban, amely a MIPS Technologies-szel együttműködve teszteli az emulátort, és MIPS-Verified-ként jelöli meg. A MIPS-en alapuló mintaplatformok magukban foglalják magát a hardvert és a nem módosított bináris Linux-leképezések betöltésére szolgáló platformokat. Ezek az emulátor platformok hatékonyak a tanuláshoz, és szintén elérhetőek, ingyenesek és könnyen használhatók. Az Imperas által kifejlesztett és karbantartott OVPsim nagy sebességgel fut (több száz millió utasítás másodpercenként), és alkalmas többmagos architektúrák leírására.

Van egy szabadon elérhető MIPS32 emulátor (a korábbi verziók csak az R2000/R3000-et emulálhatták) SPIM néven oktatási célra. Az EduMIPS64 egy többplatformos grafikus MIPS64 processzoremulátor, Java / Swing nyelven. Számos MIPS64 ISA-t támogat, és lehetővé teszi a felhasználó számára, hogy vizuálisan lássa, mi történik a folyamatban, amikor a CPU egy assembly nyelvi programot futtat. A projekt szigorúan oktatási célokat szolgál, és széles körben használják egyes számítógépes építészeti kurzusokon szerte a világon.

A MIPS processzorok másik GUI emulátora a MARS, amelyet szintén oktatási célokra fejlesztettek ki, és különösen hatékony a Hennessy Computer Organization and Design könyvével együtt .

Az ingyenes emulátorok fejlettebb verziói a Gxemul (korábbi nevén mips64emul projektek), valamint a QEMU projektek. Emulálják a MIPS III és MIPS IV mikroprocesszorok különféle modelljeit (az ezeket használó számítógépes rendszerek kiegészítéseként).

Kereskedelmi emulátortervek elsősorban a MIPS processzorok beágyazott használatához érhetők el, mint például a Virtutech Simics (MIPS 4Kc és 5Kc, PMC RM9000, QED RM7000), a VaST Systems (R3000, R4000) és a CoWare (MIPS4KE, MIPS24K, MIPSKMIPS34K és MIPSKMIPS34K).

A MIPS architektúrán alapuló processzorok listája cégek szerint

Érdekes tények

Lásd még

Jegyzetek

  1. A MIPS-architektúra evolúciója és legkorszerűbb állapota – Elektronikai idő . Letöltve: 2019. március 26. Az eredetiből archiválva : 2019. március 27.
  2. Az AI Pioneer Wave Computing felvásárolja a MIPS technológiákat . Letöltve: 2019. március 26. Az eredetiből archiválva : 2019. március 27.
  3. V. Avakov, MIPS R10000 mikroprocesszor archiválva : 2018. szeptember 25. a Wayback Machine - Open Systems-ben. DBMS 1995 06. sz
  4. MIPS R3000 utasításkészlet összefoglalója (nem elérhető hivatkozás) . Letöltve: 2010. június 1. Archiválva az eredetiből: 2018. június 28. 
  5. Loongson cpu_CPU & Motherboard_江苏龙芯梦兰科技股份有限公司 Archiválva : 2010. május 16.
  6. Digitális médiaprocesszor (Realtek) . Letöltve: 2011. december 21. Az eredetiből archiválva : 2012. január 1..
  7. A Secure Media Processor™ áttekintése Archiválva : 2011. december 19.
  8. A Wave Computing azonnali hatállyal, nulla  figyelmeztetéssel zárja MIPS nyílt kezdeményezését . Hackster.io (2019. november 7.). Letöltve: 2019. december 7. Az eredetiből archiválva : 2021. március 7.

Irodalom

Linkek