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.
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.
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.
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 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.
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.
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 .
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 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 – 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:
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.
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.
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 |
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) |
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.
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.
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. |
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 |
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.
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).
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).
Mikrokontrollerek | ||||||||
---|---|---|---|---|---|---|---|---|
Építészet |
| |||||||
Gyártók |
| |||||||
Alkatrészek | ||||||||
Periféria | ||||||||
Interfészek | ||||||||
OS | ||||||||
Programozás |
|
RISC technológiákon alapuló processzorarchitektúrák | |
---|---|