MIPS arxitekturasi - MIPS architecture

MIPS
DizaynerMIPS Technologies, Tasavvur texnologiyalari
Bitlar64-bit (32 → 64)
Tanishtirdi1985; 35 yil oldin (1985)
VersiyaMIPS32 / 64 6-nashr (2014)
DizaynRISC
TuriRo'yxatdan o'tish-ro'yxatdan o'tish
KodlashRuxsat etilgan
DallanishTaqqoslang va tarmoqlang
EndiannessBi
Sahifa hajmi4 KB
KengaytmalarMDMX, MIPS-3D
OchiqQisman. The R12000 protsessor bozorda 20 yildan ortiq vaqt davomida ishlamoqda va shuning uchun patent talablari berilishi mumkin emas. Shuning uchun R12000 va undan yuqori protsessorlar to'liq ochiq.
Ro'yxatdan o'tish kitoblari
Umumiy maqsad32
Suzuvchi nuqta32

MIPS (Bir-biriga bog'langan quvurli bosqichlarsiz mikroprotsessor)[1] a qisqartirilgan ko'rsatmalar to'plami kompyuter (RISC) ko'rsatmalar to'plami arxitekturasi (ISA)[2]:A-1[3]:19 hozirda MIPS Computer Systems tomonidan ishlab chiqilgan MIPS Technologies, Qo'shma Shtatlarda joylashgan.

MIPSning bir nechta versiyalari mavjud: jumladan I, II, III, IV va V MIPS; shuningdek MIPS32 / 64 ning beshta chiqarilishi (mos ravishda 32 va 64 bitli dasturlar uchun). Dastlabki MIPS me'morchiligi faqat 32-bitli edi; Keyinchalik 64-bitli versiyalar ishlab chiqildi. 2017 yil aprel oyidan boshlab MIPS ning amaldagi versiyasi MIPS32 / 64 Reliz 6.[4][5] MIPS32 / 64 birinchi navbatda MIPS I-V dan foydalanuvchi rejimi arxitekturasidan tashqari imtiyozli yadro rejimini belgilaydigan System Control Coprocessor bilan ajralib turadi.

MIPS arxitekturasida bir nechta ixtiyoriy kengaytmalar mavjud. MIPS-3D bu oddiy to'plam suzuvchi nuqta SIMD ko'rsatmalari umumiy 3D vazifalariga bag'ishlangan,[6] MDMX (MaDMaX), bu yanada kengroq tamsayı SIMD 64-bitli suzuvchi nuqta registrlari yordamida ko'rsatmalar to'plami, qo'shimchalar MIPS16e ko'rsatmalar oqimiga siqish dasturlarni kamroq joy egallashi uchun,[7] va qo'shib qo'yadigan MIPS MT ko'p ishlov berish qobiliyat.[8]

Kompyuter arxitekturasi universitetlar va texnik maktablardagi kurslar ko'pincha MIPS arxitekturasini o'rganadi.[9] Arxitektura keyinchalik RISC arxitekturalariga katta ta'sir ko'rsatdi Alfa.

Tarix

MIPS arxitekturasining birinchi versiyasi tomonidan ishlab chiqilgan MIPS kompyuter tizimlari uning uchun R2000 mikroprotsessor, birinchi MIPS dasturi. Ikkala MIPS va R2000 1985 yilda birgalikda taqdim etilgan.[iqtibos kerak ] MIPS II joriy etilganda, MIPS nomi o'zgartirildi MIPS I uni yangi versiyasidan farqlash uchun.[3]:32

MIPS kompyuter tizimlari ' R6000 mikroprotsessor (1989) birinchi MIPS II dasturidir.[3]:8 Serverlar uchun mo'ljallangan R6000 ishlab chiqarilgan va sotilgan Bipolyar integral texnologiya, ammo savdo muvaffaqiyatsizlikka uchradi. 1990-yillarning o'rtalarida ko'plab 32-bitli MIPS protsessorlari uchun o'rnatilgan tizimlar MIPS II dasturlari edi, chunki 1991 yilda 64-bitli MIPS III me'morchiligining kiritilishi 1999 yilda MIPS32 paydo bo'lgunga qadar MIPS II ni 32-bitli MIPS me'morchiligi sifatida qoldirdi.[3]:19

MIPS kompyuter tizimlari ' R4000 mikroprotsessor (1991) birinchi MIPS III dasturidir. U shaxsiy, ish stantsiyasi va server kompyuterlarida foydalanish uchun mo'ljallangan. MIPS Computer Systems kompaniyasi MIPS arxitekturasini va R4000 ni agressiv ravishda qo'llab-quvvatladi Murakkab hisoblash muhiti (ACE) konsortsiumi o'zining oldinga siljishi uchun Murakkab RISC Computing (ARC) standarti, bu MIPSni shaxsiy shaxsiy hisoblash platformasi sifatida o'rnatishga qaratilgan. ARC shaxsiy kompyuterlarda ozgina muvaffaqiyatga erishdi, ammo R4000 (va R4400 lotin) ish stantsiyalari va server kompyuterlarida, ayniqsa uning eng katta foydalanuvchisi tomonidan keng qo'llanilgan, Silikon grafikalar. R4000-ning boshqa ishlatilishida yuqori darajali o'rnatilgan tizimlar va superkompyuterlar mavjud. MIPS III nihoyat bir qator ko'milgan mikroprotsessorlar tomonidan amalga oshirildi. Kvant effektini loyihalash "s R4600 (1993) va uning hosilalari yuqori darajadagi ko'milgan tizimlarda va past darajadagi ish stantsiyalari va serverlarida keng qo'llanilgan. MIPS Technologies ' R4200 (1994), o'rnatilgan tizimlar, noutbuklar va shaxsiy kompyuterlar uchun mo'ljallangan. R4300i lotin, tomonidan ishlab chiqarilgan NEC Electronics, ishlatilgan Nintendo 64 o'yin konsoli. Nintendo 64, bilan birga O'yinlar markazi, 1990-yillarning o'rtalarida MIPS arxitektura protsessorlarining eng yuqori hajmli foydalanuvchilari qatoriga kirgan.

Birinchi MIPS IV dasturi MIPS Technologies edi R8000 mikroprotsessor chipseti (1994). R8000 dizayni Silicon Graphics, Inc kompaniyasida boshlangan va u faqat yuqori darajadagi ish stantsiyalarida va katta suzuvchi nuqtali ish yuklarida yuqori ishlash muhim bo'lgan ilmiy va texnik qo'llanmalar uchun serverlarda ishlatilgan. Keyinchalik amalga oshirish MIPS Technologies edi R10000 (1996) va kvant effektli qurilmalar R5000 (1996) va RM7000 (1998). NEC Electronics va Toshiba tomonidan ishlab chiqarilgan va sotilgan R10000 va uning hosilalari NEC, Pyramid Technology, Silicon Graphics, Inc. va Tandem Computers (boshqalar qatorida) ish stantsiyalarida, serverlarda va superkompyuterlarda ishlatilgan. R5000 va R7000 yuqori darajadagi o'rnatilgan tizimlarda, shaxsiy kompyuterlarda va past darajadagi ish stantsiyalari va serverlarida foydalanishni topdi. Toshiba'dan R5000 ning hosilasi R5900, Sony Computer Entertainment-da ishlatilgan Tuyg'u mexanizmi, bu uning quvvatiga ega PlayStation 2 o'yin konsoli.

1996 yil 21 oktyabrda Mikroprotsessor Forumida 1996 yil bilan birga e'lon qilingan MIPS raqamli media kengaytmalari (MDMX) kengaytmasi, MIPS V 3D grafika transformatsiyasining ishlashini yaxshilash uchun ishlab chiqilgan.[10] 1990-yillarning o'rtalarida O'rnatilmagan MIPS mikroprotsessorlarining asosiy ishlatilishi SGI-ning grafik ish stantsiyalari edi. MIPS V faqat butun sonli MDMX kengaytmasi bilan to'ldirilib, 3D grafik dasturlarning ishlashini yaxshilash uchun to'liq tizimni taqdim etdi.[11] MIPS V dasturlari hech qachon kiritilmagan. 1997 yil 12 mayda SGI "H1" ("Beast") va "H2" ("Capitan") mikroprotsessorlarini e'lon qildi. Birinchisi, birinchi MIPS V dasturi bo'lishi kerak edi va 1999 yilning birinchi yarmida joriy qilinishi kerak edi.[12] Keyinchalik "H1" va "H2" loyihalari birlashtirildi va oxir-oqibat 1998 yilda bekor qilindi. MIPS V dasturlari amalga oshirilmagan bo'lsa-da, MIPS64 Release 1 (1999) MIPS V ga asoslangan va uning barcha xususiyatlarini ixtiyoriy Koprosessor sifatida saqlab qolgan. Paired-Single deb nomlangan 1 (FPU) xususiyati.

MIPS Technologies ishlatilmaganda Silikon grafikalar 1998 yilda u ichki bozorga e'tiborini qaratdi. MIPS V ga qadar har bir ketma-ket versiya oldingi versiyaning qat'iy ustuvorligi edi, ammo bu xususiyat muammoga aylandi,[iqtibos kerak ] va arxitektura ta'rifi 32 va 64 bitli arxitekturani aniqlash uchun o'zgartirildi: MIPS32 va MIPS64. Ikkalasi ham 1999 yilda taqdim etilgan.[13] MIPS32 MIPS II, MIPS III, MIPS IV va MIPS V ba'zi qo'shimcha funktsiyalariga asoslangan; MIPS64 MIPS V asosida yaratilgan.[13] NEC, Toshiba va SiByte (keyinchalik tomonidan sotib olingan Broadcom ) har biri e'lon qilinishi bilanoq MIPS64 uchun litsenziyalarni olgan. Flibs, LSI Logic, IDT, Raza Microelectronics, Inc., Kavium, Loongson texnologiyasi va Yarimo'tkazgich shundan beri ularga qo'shilishdi. MIPS32 / MIPS64 5-versiyasi 2012 yil 6-dekabrda e'lon qilindi.[14] Chiqarish 4 o'tkazib yuborildi, chunki to'rtinchi raqam sifatida qabul qilinadi omadsiz ko'plab Osiyo madaniyatlarida.[15]

2018 yil dekabr oyida MIPS arxitekturasining yangi egasi bo'lgan Wave Computing MIPS ISA MIPS Open tashabbusi deb nomlangan dasturda ochiq manbalar bilan ta'minlanishini e'lon qildi.[16] Dastur 32-bitli va 64-bitli dizaynlarning eng so'nggi versiyalariga kirish huquqini ochish, ularni litsenziyalash va royalti to'lovisiz taqdim etish hamda ishtirokchilarga mavjud MIPS patentlariga litsenziyalar berish uchun mo'ljallangan edi.[17][18][19]

2019 yil mart oyida arxitekturaning bitta versiyasi royalti bo'lmagan litsenziya asosida taqdim etildi,[20] ammo o'sha yili dastur yana yopildi.[21]

Dizayn

MIPS - to'rttagacha qo'llab-quvvatlaydigan modulli arxitektura koprotsessorlar (CP0 / 1/2/3). MIPS terminologiyasida CP0 - bu tizimni boshqarish koprotsessori (I-V MIPSda belgilangan protsessorning muhim qismi), CP1 ixtiyoriy hisoblanadi. suzuvchi nuqta birligi (FPU) va CP2 / 3 ixtiyoriy dastur tomonidan belgilangan koprotsessorlardir (MIPS III CP3-ni olib tashlagan va boshqa maqsadlar uchun opkodlarini qayta ishlatgan). Masalan, O'yinlar markazi video o'yin konsoli, CP2 bu Geometriyani o'zgartirish mexanizmi (GTE), bu geometriyani 3D kompyuter grafikasida qayta ishlashni tezlashtiradi.

Versiyalar

MIPS I

MIPS - bu arxitekturasini yuklash / saqlash (a nomi bilan ham tanilgan registr-registr arxitekturasi); tashqari yuklash / saqlash bo'yicha ko'rsatmalar kirish uchun ishlatiladi xotira, barcha ko'rsatmalar registrlarda ishlaydi.

Ro'yxatdan o'tish kitoblari

MIPS I-da o'ttiz ikkita 32-bitli umumiy foydalanish registri (GPR) mavjud. Ro'yxatdan o'tish $ 0 nolga bog'langan va unga yozilgan yozuv bekor qilinadi. Ro'yxatdan o'tish $ 31 - bu havola registri. Boshqa ko'rsatmalardan asenkron ravishda ishlaydigan butun sonni ko'paytirish va bo'lish ko'rsatmalari uchun 32 bitli registrlar jufti, Salom va LO, taqdim etiladi. Umumiy maqsadlar uchun registrlar va HI / LO registrlari o'rtasida ma'lumotlarni nusxalash bo'yicha kichik ko'rsatmalar to'plami mavjud.

Dastur hisoblagichida 32 bit mavjud. Ikkita past tartibli bit har doim nolni o'z ichiga oladi, chunki MIPS I ko'rsatmalari 32 bit uzunlikda va tabiiy so'z chegaralariga to'g'ri keladi.

Ko'rsatmalar formatlari

Ko'rsatmalar uch turga bo'linadi: R, I va J. Har bir ko'rsatma 6-bitli opkod bilan boshlanadi. Opcode-dan tashqari, R-tipli ko'rsatmalar uchta registrni, smena miqdori maydonini va funktsiya maydonini belgilaydi; I-tipli ko'rsatmalar ikkita registrni va 16-bitli darhol qiymatni belgilaydi; J-tipli ko'rsatmalar opkodga 26-bitli o'tish maqsadiga amal qiladi.[2]:A-174

Quyida asosiy ko'rsatmalar to'plami uchun foydalaniladigan uchta format mavjud:

Turi-31- format (bit) -0-
Ropkod (6)rs (5)rt (5)rd (5)shamt (5)funktsiya (6)
Menopkod (6)rs (5)rt (5)darhol (16)
Jopkod (6)manzil (26)

CPU ko'rsatmalari

MIPS I-da 8 bitli baytlarni, 16 bitli yarim so'zlarni va 32 bitli so'zlarni yuklaydigan va saqlaydigan ko'rsatmalar mavjud. Faqat bitta manzil rejimi qo'llab-quvvatlanadi: taglik + siljish. MIPS I 32-bitli arxitektura bo'lganligi sababli, 32 bitdan kam miqdorlarni yuklash uchun ma'lumotlar bazasi imzolangan yoki nolga 32 bitgacha kengaytirilishi kerak. "Imzosiz" qo'shimchasini yuklash bo'yicha ko'rsatmalar nol kengaytmani bajaradi; aks holda belgini kengaytirish amalga oshiriladi. Yuklash bo'yicha ko'rsatmalar bazani GPR (rs) tarkibidan oladi va natijani boshqa GPR (rt) ga yozadi. Saqlash bo'yicha ko'rsatmalar bazani GPR (rs) tarkibidan oladi va boshqa GPR (rt) dan ma'lumotlarni saqlaydi. Yuklash va saqlash bo'yicha barcha ko'rsatmalar xotira manzilini hisob-kitob bilan kengaytirilgan 16-bitli zudlik bilan bazani yig'ish orqali hisoblab chiqadi. MIPS I barcha xotira ruxsatlarini tabiiy so'z chegaralariga moslashtirishni talab qiladi, aks holda istisno signal beriladi. Xotiraga samarali ravishda tekislanmagan kirishni qo'llab-quvvatlash uchun "chap" yoki "o'ng" qo'shimchalarini yuklash / saqlash bo'yicha ko'rsatmalar mavjud. Barcha yuk ko'rsatmalariga a amal qilinadi yukni kechiktirish uyasi. Yukni kechiktirish uyasidagi ko'rsatma yuk ko'rsatmasi tomonidan yuklangan ma'lumotdan foydalana olmaydi. Yukni kechiktirish uyasi yukga bog'liq bo'lmagan ko'rsatma bilan to'ldirilishi mumkin; agar bunday ko'rsatma topilmasa, nop o'rnini bosadi.

MIPS I-da qo'shish va ayirishni bajarish bo'yicha ko'rsatmalar mavjud. Ushbu ko'rsatmalar operandlarini ikkita GPR (rs va rt) dan oladi va natijani uchinchi GPR (rd) ga yozadi. Shu bilan bir qatorda, qo'shilish operandlardan birini 16-bitli zudlik bilan (32-bitgacha uzaytirilgan) manbadan olishi mumkin. Qo'shish va olib tashlash bo'yicha ko'rsatmalar ikkita variantga ega: sukut bo'yicha, agar natija to'lib toshsa, istisno signallanadi; "imzosiz" qo'shimchasi bilan ko'rsatmalar istisnoga ishora qilmaydi. To'ldirishni tekshirish natijani 32-bitlik ikkitasini to'ldiruvchi tamsayı sifatida izohlaydi. MIPS menda ko'rsatmalar mavjud bittadan mantiqiy AND, OR, XOR va NOR. Ushbu ko'rsatmalar o'z operandlarini ikkita GPR-dan oladi va natijani uchinchi GPRga yozadi. AND, OR yoki XOR yo'riqnomalari alternativa sifatida operandlardan birini 16 bitli zudlik bilan manbadan olishlari mumkin (u 32 bitgacha nolga uzaytiriladi). O'rnatilgan munosabat ko'rsatmalar belgilangan registrda rost yoki yolg'on bo'lsa, bitta yoki nolni belgilangan registrga yozadi. Ushbu ko'rsatmalar o'z operandlarini ikkita GPR yoki bitta GPR va 16 bitli zudlik bilan (bu belgi bilan 32 bitgacha kengaytirilgan) oladi va natijani uchinchi GPRga yozadi. Odatiy bo'lib, operandlar imzolangan tamsayılar sifatida talqin qilinadi. Ushbu ko'rsatmalarning "imzosiz" bilan qo'shilgan variantlari operandlarni belgisiz butun son sifatida talqin qiladi (hattoki operandni belgi bilan kengaytirilgan 16-bitli manbadan).

Yuklab olish uchun darhol yuqoridagi ko'rsatma 16 bitli zudlik bilan yuqori darajadagi 16 bitli GPRga ko'chiradi. U 32 bitli zudlik bilan registrga yuklash uchun Or Immediate buyrug'i bilan birgalikda ishlatiladi.

MIPS I chap va o'ng mantiqiy siljish va o'ng arifmetik siljishlarni bajarish bo'yicha ko'rsatmalarga ega. Operand GPR (rt) dan olinadi va natijasi boshqa GPR (rd) ga yoziladi. Shift masofasi GPR (rs) yoki 5-bitli "siljish miqdori" ("sa" maydoni) dan olinadi.

MIPS I-da imzolangan va imzosiz butun sonni ko'paytirish va bo'lish bo'yicha ko'rsatmalar mavjud. Ushbu ko'rsatmalar o'zlarining operandlarini ikkita GPR-lardan oladi va natijalarini HI va LO deb nomlangan 32-bitli registrlarga yozadi, chunki ular boshqa CPU ko'rsatmalaridan alohida (va bir vaqtda) bajarishi mumkin. Ko'paytirish uchun 64 bitli mahsulotning yuqori va past darajadagi yarmlari HI va LO ga yoziladi (mos ravishda). Bo'linish uchun qism LOga, qolgan qismi HIga yoziladi. Natijalarga kirish uchun HI yoki LO tarkibini GPRga ko'chirish uchun ikkita ko'rsatma (HI dan ko'chirish va LO dan ko'chirish) beriladi. Ushbu ko'rsatmalar bir-biriga bog'langan: HI va LO o'qishlari HI va LO ga yozadigan tugallanmagan arifmetik ko'rsatmalardan o'tmaydi. Boshqa bir juft ko'rsatma (Move to HI or Move to LO) GPR tarkibini HI va LO ga ko'chiradi. Ushbu ko'rsatmalar HI va LO ni istisno holatidan keyin asl holatini tiklash uchun ishlatiladi. HI yoki LO o'qigan ko'rsatmalar HI yoki LO ga yozilmaydigan ikkita ko'rsatma bilan ajratilishi kerak.

Barcha MIPS I boshqariladigan oqim ko'rsatmalariga a filialni kechiktirish uyasi. Filialni kechiktirish uyasi foydali ishni bajaradigan ko'rsatma bilan to'ldirilmasa, nop o'rnini bosadi. MIPS I filiali ko'rsatmalari GPR (rs) tarkibini nolga yoki boshqa GPR (rt) ga imzo qo'yilgan tamsayılar bilan taqqoslaydi va agar ko'rsatilgan shart to'g'ri bo'lsa, filial. Boshqarish hisoblangan manzilga uzatiladi, 16 bitli ofsetni ikki bit qoldirgan, 18 bitli natijani belgi bilan uzaytirgan va 32 bitli kengaytirilgan natijani dastur hisoblagichining yig'indisiga qo'shgan (ko'rsatma manzili) va 810. O'tishlarning ikkita versiyasi mavjud: mutlaq va registr-bilvosita. Mutlaq sakrashlar ("O'tish" va "O'tish va bog'lanish") manzil boshqaruvini 26 bitli instr_index-ni ikki bitga siljitish va 28-bitli natijani manzilning to'rtta yuqori tartibli bitlari bilan birlashtirish orqali o'tkaziladi. filialni kechiktirish uyasida ko'rsatma. Bilvosita sakrash registrlari boshqaruvni GPR (rs) dan olingan manzil bo'yicha ko'rsatmalarga o'tkazadi. GPR-dan olingan manzil so'z bilan moslashtirilgan bo'lishi kerak, aks holda filialning kechikish uyasi ko'rsatmasi bajarilgandan keyin istisno bildiriladi. Qaytish manzilini GPR 31-ga bog'laydigan ("O'tish va bog'lanishni ro'yxatdan o'tkazish" bundan mustasno) bog'laydigan filial va sakrash ko'rsatmalari. "O'tish va bog'lanish registri" ko'rsatmasi qaytish manzilini har qanday yoziladigan GPR-ga saqlashga imkon beradi.

MIPS I dasturida istisnoga ishora qilish uchun ikkita ko'rsatma mavjud: Tizim chaqiruvi va Breakpoint. Tizim qo'ng'irog'i foydalanuvchi rejimining dasturiy ta'minoti tomonidan yadro qo'ng'iroqlarini amalga oshirish uchun ishlatiladi; va Breakpoint boshqaruvni yadro istisno ishlovchisi orqali tuzatuvchiga o'tkazish uchun ishlatiladi. Ikkala yo'riqnomada ham 20 bitli kod maydoni mavjud bo'lib, unda istisno ishlovchilariga tegishli ish muhitiga oid ma'lumotlar bo'lishi mumkin.

MIPS-da 32 ta suzuvchi nuqta registrlari mavjud. Ikki aniqlikdagi raqamlar uchun ikkita registrlar bog'langan. Toq raqamli registrlarni arifmetikada yoki dallanmada ishlatib bo'lmaydi, xuddi er-xotin aniqlikdagi registrlar juftligining bir qismi sifatida, natijada aksariyat ko'rsatmalar uchun 16 ta foydalaniladigan registrlar (harakat / nusxalar va yuklar / do'konlarga ta'sir ko'rsatilmagan).

Bitta aniqlik .s qo'shimchasi bilan belgilanadi, ikkilik aniqlik .d qo'shimchasi bilan belgilanadi.

MIPS II

MIPS II yukni kechiktirish uyasini olib tashladi[3]:41 va bir nechta ko'rsatmalar to'plamini qo'shdi. Umumiy xotirani ko'p ishlov berish uchun Umumiy xotirani sinxronlashtiring, Bog'langan so'zni yuklangva Shartli so'zni saqlang ko'rsatmalar qo'shildi. Shartni tuzatish bo'yicha ko'rsatmalar to'plami qo'shildi. Ushbu ko'rsatmalar, agar baholangan shart to'g'ri bo'lsa, istisnoga olib keldi. Mavjud barcha filiallarga ko'rsatmalar berildi ehtimol filial faqat filial olinadigan bo'lsa, filialni kechiktirish uyasida ko'rsatmani bajargan versiyalar.[3]:40 Ushbu ko'rsatmalar filialning kechikish uyasini to'ldirish uchun foydali ko'rsatmalarga ruxsat berish orqali ba'zi holatlarda ishlashni yaxshilaydi.[3]:212 COP1-3 uchun ikki so'z bilan yuklash va saqlash bo'yicha ko'rsatmalar qo'shildi. Xotiraga kirish bo'yicha boshqa ko'rsatmalarga muvofiq, ushbu yuklar va do'konlar qo'sh so'zni tabiiy ravishda moslashtirishni talab qildi.

Suzuvchi nuqta koprotsessori uchun ko'rsatmalar to'plamiga qo'shimcha ravishda bir nechta ko'rsatmalar qo'shilgan. IEEE 754-ga mos keladigan suzuvchi nuqtali kvadrat ildiz buyrug'i qo'shildi. U bitta va ikkita aniq operandalarni qo'llab-quvvatladi. Bir va ikki aniqlikdagi suzuvchi nuqta raqamlarini 32 bitli so'zlarga aylantirgan ko'rsatmalar to'plami qo'shildi. Ular IEEE yaxlitlash rejimini suzuvchi nuqta nazorati va holatlar registri o'rniga ko'rsatma bilan belgilashga imkon berish orqali mavjud konversiya ko'rsatmalarini to'ldirdilar.

MIPS III

MIPS III - bu a orqaga qarab mos keladi qo'llab-quvvatlagan MIPS II kengaytmasi 64-bit xotira adreslash va butun sonli amallar. Ma'lumotlarning 64 bitli turi ikki so'zli so'z deb nomlanadi va MIPS III uni qo'llab-quvvatlash uchun umumiy maqsadli registrlar, HI / LO registrlari va dastur hisoblagichini 64 bitgacha kengaytirdi. Ikkita so'zlarni yuklash va saqlash, ularga butun sonni qo'shish, ayirish, ko'paytirish, bo'lish va almashtirish operatsiyalarini bajarish hamda GPR va HI / LO registrlari o'rtasida ikki so'zni ko'chirish bo'yicha yangi ko'rsatmalar qo'shildi. Dastlab 32-bitli so'zlar bilan ishlash uchun belgilangan ko'rsatmalar, agar kerak bo'lsa, 32-bitli natijalarni imzolash-kengaytirish uchun so'zlar va juft so'zlarni ko'pgina ko'rsatmalarga bir xil ishlov berishga ruxsat berish uchun qayta belgilandi. Qayta belgilangan ushbu ko'rsatmalar orasida So'zni yuklang. MIPS III-da u so'zlarni 64 bitgacha kengaytiradi. To'ldirish uchun So'zni yuklang, nolga cho'ziladigan versiya qo'shildi.

R buyrug'i formatining 64-bitli siljishlar uchun to'liq siljish masofasini belgilashga qodir emasligi (uning 5-bitli siljish miqdori sohasi ikki so'z uchun siljish masofasini belgilash uchun juda tor) MIPS III-dan har bir MIPS I smenaning uchta 64-bitli versiyasini taqdim etishni talab qildi. ko'rsatma. Birinchi versiya 0-31 bitlik doimiy siljish masofasini belgilash uchun ishlatiladigan dastlabki siljish ko'rsatmalarining 64-bitli versiyasidir. Ikkinchi versiya birinchisiga o'xshash, ammo 32 ni qo'shadi10 siljish maydonining qiymati, shunda doimiy siljish masofalari 32-64 bitni ko'rsatishi mumkin. Uchinchi versiya GPRning past darajadagi oltita bitidan siljish masofasini oladi.

MIPS III a qo'shdi nazoratchi mavjud yadro va foydalanuvchi imtiyozlari darajalari orasidagi imtiyoz darajasi. Ushbu xususiyat faqat dastur tomonidan belgilangan tizimni boshqarish protsessoriga ta'sir ko'rsatdi (Coprocessor 0).

MIPS III Coprocessor 3 (CP3) ni qo'llab-quvvatlash ko'rsatmalarini olib tashladi va yangi kodli ko'rsatmalar uchun opkodlarini qayta ishlatdi. Qolgan koprotsessorlar koprosessor registrlari va GPRlar orasida ikki so'zlarni ko'chirish bo'yicha ko'rsatmalarga ega bo'lishdi. Suzuvchi umumiy registrlar (FGR) 64 bitgacha uzaytirildi va faqat juft raqamli registrdan foydalanish bo'yicha ko'rsatmalarga qo'yilgan talab bekor qilindi. Bu arxitekturaning oldingi versiyalari bilan mos kelmaydi; suzuvchi nuqta nazorati / holat registridagi bit MIPS III suzuvchi nuqta birligini (FPU) MIPS I va II mos keladigan rejimda ishlatish uchun ishlatiladi. Suzuvchi nuqtani boshqarish registrlari muvofiqligi uchun kengaytirilmagan. Faqatgina suzuvchi nuqta bo'yicha ko'rsatmalar CPU va FPU o'rtasida ikkita so'zni nusxalash uchun bitta va ikki aniqlikdagi suzuvchi nuqta raqamlarini ikki so'zli tamsayılarga va aksincha aylantirishga qo'shildi.

MIPS IV

MIPS IV - arxitekturaning to'rtinchi versiyasi. Bu MIPS III ning yuqori to'plamidir va MIPSning barcha mavjud versiyalari bilan mos keladi. MIPS IV asosan suzuvchi nuqta (FP) ish faoliyatini yaxshilash uchun ishlab chiqilgan. Operandlarga kirishni yaxshilash uchun indekslangan manzil rejimi FP yuklari va do'konlari uchun (tayanch + indeks, ikkalasi ham GPR-lardan olingan), shuningdek xotirani oldindan yuklashni amalga oshirish va kesh ko'rsatmalarini ko'rsatish bo'yicha prefetch ko'rsatmalari qo'shildi (ular baza + ofset va tayanch + indeks manzillash rejimlarini qo'llab-quvvatladilar).

MIPS IV ko'rsatmalar darajasidagi parallellikni yaxshilash uchun bir nechta xususiyatlarni qo'shdi. Bitta shartli bit tufayli yuzaga kelgan to'siqni engillashtirish uchun suzuvchi nuqta nazorati va holat registriga yettita shart kod biti qo'shilib, jami sakkiztaga etdi. FP taqqoslash va filial ko'rsatmalari qayta aniqlandi, shunda ular qaysi bit bitilganligini yoki o'qilishini aniqladilar (mos ravishda); va oldingi FP taqqoslashi bilan yozilgan shart bitini o'qigan FP filiali orasidagi kechikish uyasi olib tashlandi. Qo'llab-quvvatlash qisman predikatsiya ham GPR, ham FPR uchun shartli ko'chirish ko'rsatmasi shaklida qo'shilgan; va amalga oshirish IEEE 754 tuzoqlari uchun aniq yoki noaniq istisnolardan birini tanlashi mumkin.

MIPS IV bitta va ikkita aniqlikdagi FPNlar uchun bir nechta yangi FP arifmetik ko'rsatmalarini qo'shdi: birlashtirilgan-ko'paytiriladigan qo'shish yoki ayirish, o'zaro va o'zaro kvadrat ildiz. FP qo'shilgan yoki chiqaradigan ko'rsatmalar IEEE 754 aniqlik talablaridan (mos ravishda) oshib ketishi yoki qondirilishi uchun bir yoki ikkita yaxlitlashni bajaradi (u belgilangan). FP-ning o'zaro va o'zaro kvadratik ko'rsatmalari IEEE 754 aniqlik talablariga javob bermaydi va kerakli aniqlikdan oxirgi joyning bir yoki ikkita birligi bilan farq qiladigan natijalarni beradi (bu amalga oshirish belgilangan). Ushbu ko'rsatmalar ko'rsatmalarning kechikishi aniqlikdan ko'ra muhimroq bo'lgan dasturlarga xizmat qiladi.

MIPS V

MIPS V mavjud bo'lgan 64-bitli suzuvchi nuqta registrlarida saqlangan ikkita bitta aniqlikdagi (32 bitli) suzuvchi nuqta raqamlaridan tashkil topgan yangi ma'lumotlar turini, Paired Single (PS) ni qo'shdi. Ushbu ma'lumotlar turiga SIMD rejimida ishlash uchun arifmetik, taqqoslash va shartli ko'chirish bo'yicha mavjud suzuvchi ko'rsatmalarning variantlari qo'shildi. PS ma'lumotlarini yuklash, qayta tartibga solish va konvertatsiya qilish bo'yicha yangi ko'rsatmalar qo'shildi.[3]:426–429 Bu suzuvchi nuqta SIMD-ni mavjud resurslar bilan ishlatish bo'yicha birinchi ko'rsatma edi.[11]

MIPS32 / MIPS64

MIPS II-ga asoslangan MIPS32-ning birinchi chiqarilishi shartli harakatlarni qo'shdi, oldindan yuklash bo'yicha ko'rsatmalar va 64-bitli protsessorlarning R4000 va R5000 oilalaridagi boshqa xususiyatlar.[13] MIPS64-ning birinchi versiyasi 32-bitli kodni ishlatish uchun MIPS32 rejimini qo'shadi.[13] MUL va MADD (ko'paytirish-qo'shish ) ko'rsatmalar, ilgari ba'zi dasturlarda mavjud bo'lgan, MIPS32 va MIPS64 spetsifikatsiyalariga xuddi shunday qo'shilgan keshni boshqarish bo'yicha ko'rsatmalar.[13]

2014 yilda MIPS32 / MIPS64 6-versiyasi quyidagilarni qo'shdi:[22]

  • kechikishsiz yangi filiallar oilasi:
    • shartsiz filiallar (BC) va filial-bog'lovchi (BALC) 26-bitli ofset bilan,
    • 21-bitli ofset bilan nol / nol bo'lmagan shartli filial,
    • imzolangan va imzolanmagan shartli filiallarning to'liq to'plami ikkita registrni (masalan, BGTUC) yoki registrni nolga (masalan, BGTZC) taqqoslaydi,
    • registrni nol bilan taqqoslaydigan filial-bog'lanishning to'liq to'plami (masalan, BGTZALC).
  • katta mutloq manzillarni qo'llab-quvvatlash uchun mo'ljallangan kechikish uyasi bo'lmagan indeksga o'tish ko'rsatmalari.
  • 16-bitni yuklash bo'yicha ko'rsatmalar darhol 16, 32 yoki 48-sonli pozitsiyalarda ishlaydi, bu esa katta konstantalarni osonlikcha yaratishga imkon beradi.
  • Shaxsiy kompyuterga nisbatan yuk ko'rsatmalari, shuningdek katta (shaxsiy kompyuterga nisbatan) ofsetlar bilan manzil yaratish.
  • bit-teskari va baytlarni tekislash bo'yicha ko'rsatmalar (ilgari faqat DSP kengaytmasi bilan mavjud).
  • qayta aniqlangan ko'rsatmalarni ko'paytiring va bo'ling, natijada ularning natijalari uchun bitta registrdan foydalaning).
  • haqiqat qiymatlarini ishlab chiqaruvchi ko'rsatmalar endi 0-bitni tozalash / sozlash o'rniga endi barcha nollarni yoki barchasini hosil qiladi,
  • haqiqat qiymatidan foydalanadigan ko'rsatmalar endi 0-bitga qarash o'rniga faqat nollarni yolg'on deb talqin qiladi.

Kamdan kam qo'llaniladigan ko'rsatmalar olib tashlandi:

  • ba'zi bir shartli harakatlar
  • ehtimol filial ko'rsatmalar (oldingi nashrlarda eskirgan).
  • 16-bitli zudlik bilan butun sonni to'ldirish bo'yicha ko'rsatmalar
  • butun sonli akkumulyator ko'rsatmalari (HSP / LO registrlari birgalikda, DSP dasturiga xos kengaytmaga ko'chirilgan)
  • tartibsiz yuk ko'rsatmalari (LWL va LWR), (odatdagi yuklarning va do'konlarning aksariyati noto'g'ri kirishni qo'llab-quvvatlashni talab qiladi, ehtimol tuzoqqa tushirish va yangi yo'riqnoma (BALIGN) qo'shilishi bilan)

Kelgusida kengayish uchun joy bo'shatib, ko'rsatmalarni kodlashni qayta tashkil etdi.

mikroMIPS

MicroMIPS32 / 64 arxitekturalari MIPS16e ASE o'rnini bosuvchi MIPS32 va MIPS64 arxitekturalarining ustuvor to'plamlari (mos ravishda). MIPS16e-ning kamchiliklari shundaki, u 16-bitli ko'rsatmalarning har birini qayta ishlashdan oldin rejimni almashtirishni talab qiladi. microMIPS 16-bitli ko'rsatmalar sifatida kodlangan eng ko'p ishlatiladigan 32-bitli ko'rsatmalarning versiyalarini qo'shadi. Bu dasturlarga rejimlarni almashtirishga hojat qoldirmasdan 16 va 32 bitli ko'rsatmalarni aralashtirishga imkon beradi. microMIPS MIPS32 / 64 Release 3 bilan birgalikda joriy qilingan va MIPS32 / 64 ning keyingi har bir chiqarilishi mos microMIPS32 / 64 versiyasiga ega. Protsessor microMIPS32 / 64 ni yoki ikkalasini microMIPS32 / 64 ni va unga mos keladigan MIPS32 / 64 to'plamini amalga oshirishi mumkin. MIPS32 / 64 Release 6-dan boshlab, MIPS16e-ni qo'llab-quvvatlash tugadi va microMIPS MIPS-da kodni siqishning yagona shakli hisoblanadi.

Ilovaga xos kengaytmalar

MIPS32 va MIPS64 bazaviy arxitekturalari bir nechta ixtiyoriy me'moriy kengaytmalar bilan to'ldirilishi mumkin, ular umumiy deb nomlanadi dasturga oid kengaytmalar (ASE). Ushbu ASE'lar ba'zi ish yuklarining samaradorligi va ish faoliyatini yaxshilaydigan xususiyatlarni taqdim etadi, masalan raqamli signallarni qayta ishlash.

MIPS MCU
Mikrokontroller dasturlari uchun qo'shimcha qurilmalar. MCU ASE (dasturga xos kengaytma) uzilish tekshiruvi yordamini kengaytirish, uzilishning kechikishini kamaytirish va odatda mikrokontroller tizimining konstruktsiyalarida talab qilinadigan I / U periferik boshqarish funktsiyasini kuchaytirish uchun ishlab chiqilgan.
  • Alohida ustuvorlik va vektorlarni yaratish
  • EIC (External Interrupt Controller) rejimida 256 ta uzilishni va sakkizta apparat uzilish pinlarini qo'llab-quvvatlaydi
  • 16-bitli vektor ofset manzilini taqdim etadi
  • Interrupt istisno vektorining oldindan olinishi
  • Automated Interrupt Prologue - uzilishlar bilan ishlash tartibidan oldin tizim holatini saqlash va yangilash uchun qo'shimcha qurilmalarni qo'shadi
  • Avtomatlashtirilgan uzilish epilogi - uzilishdan qaytish uchun avval stakda saqlangan tizim holatini tiklaydi.
  • Interrupt Chaining - dastlabki uzilish tartibidan chiqmasdan kutilayotgan uzilishlar xizmatini qo'llab-quvvatlaydi, bir nechta faol uzilishlarni saqlash va tiklash uchun zarur bo'lgan tsikllarni tejaydi
  • To'satdan vektor manzilini spekulyativ oldindan olishni qo'llab-quvvatlaydi. Xizmatga kirishni quvur liniyasi bilan o'chirish va istisno ustuvorligi bilan bir-biriga bog'lash orqali uzilish xizmatining tsikllari sonini kamaytiradi
  • Odatda tashqi periferik funktsiyalarni nazorat qilish yoki boshqarish uchun ishlatiladigan I / O registridagi bitlarni harakatni xavfsiz bajarilishini ta'minlab, uzilishlarsiz o'zgartirilishini ta'minlaydigan atom bitlari to'plami / aniq ko'rsatmalarini o'z ichiga oladi.
MIPS16
MIPS16 - bu MIPS I dan Vgacha mo'ljallangan dastur uchun maxsus kengaytma LSI Logic va MIPS Technologies, 1996 yil 21-oktabrda LSI Logic TinyRISC protsessori bo'lgan birinchi dastur bilan birgalikda e'lon qilindi.[23] Keyinchalik MIPS16 tomonidan litsenziya olindi NEC Electronics, Flibs yarim o'tkazgichlari va Toshiba (Boshqalar orasida); va MIPS I, II, III me'morchiligiga qo'shimcha sifatida amalga oshirildi. MIPS16 32-bitli ko'rsatmalar o'rniga 16-bitli ko'rsatmalar yordamida dastur hajmini 40% gacha qisqartiradi, shuningdek quvvat samaradorligini, buyruqlar keshini urish tezligini yaxshilaydi va uning ishlash me'yorlariga mos keladi.[24] Uni MIPS Technologies va boshqa provayderlarning apparat va dasturiy ta'minotini ishlab chiqish vositalari qo'llab-quvvatlaydi. MIPS16e MIPS16-ning takomillashtirilgan versiyasi bo'lib, avval MIPS32 va MIPS64 Release 1 tomonidan qo'llab-quvvatlanadi. MIPS16e2 - MIPS32 va MIPS64 tomonidan qo'llab-quvvatlanadigan MIPS16-ning takomillashtirilgan versiyasi (5-nashrgacha). 6-chi versiya uni microMIPS bilan almashtirdi.
MIPS DSP
DSP ASE - bu MIPS32 / MIPS64 Release 2-ning ixtiyoriy kengaytmasi va undan yangi "media" hisob-kitoblarni, xususan audio va videolarni tezlashtirish uchun ishlatilishi mumkin bo'lgan yangi to'plamlar. DSP moduli ko'rsatmalar to'plamini va tamsayı quvur liniyasida joylashgan bo'lib, MIPS protsessor yadrolarida amalga oshirish uchun minimal qo'shimcha mantiqni talab qiladi. ASE-ning 2-tahriri 2006 yilning ikkinchi yarmida kiritilgan. Ushbu tahrir asl ASE-ga qo'shimcha ko'rsatmalar qo'shadi, ammo aks holda u bilan orqaga qarab mos keladi.[25] MIPS me'morchiligining asosiy qismidan farqli o'laroq, bu juda ko'p tartibsiz operatsiyalar to'plami, ularning aksariyati ba'zi bir muhim algoritmlarga mos kelishi uchun tanlangan. Uning asosiy roman xususiyatlari (original MIPS32 bilan solishtirganda):[26]
  • Doygun arifmetikasi (hisoblash toshib ketganda, to'ldirilmagan javobga eng yaqin raqamni keltiring).
  • -1 dan +1 gacha bo'lgan (va "Q31" va "Q15" deb nomlanadi) imzolangan 32 va 16 bitli sobit nuqtali fraksiyalar bo'yicha sobit nuqta arifmetikasi.
  • Mavjud butun sonni ko'paytirish va ko'paytirish-yig'ish bo'yicha ko'rsatmalar, natijada natijalar ikki o'lchovli akkumulyatorga ("salom / lo" deb nomlanadi va MIPS32 protsessorlarida 64 bit) beriladi. DSP ASE yana uchta akkumulyatorni qo'shadi va ko'paytirishning turli xil lazzatlari.
  • SIMD 4 bit imzosiz baytda yoki 32 bitli registrga o'rnatilgan 2 x 16 bitli qiymatlarda ishlaydigan ko'rsatmalar (DSP ASE ning 64 bitli varianti ham katta vektorlarni qo'llab-quvvatlaydi).
  • SIMD operatsiyalari - bu asosiy arifmetik, siljish va ba'zi ko'paytiriladigan turdagi operatsiyalar.
MIPS SIMD arxitekturasi
Multimediyani tezlashtirishga mo'ljallangan ko'rsatmalar to'plami.
  • 16 x 8 bitli, 8 x 16 bitli, 4 x 32 bitli va 2 x 64 bitli vektorli elementlarning 32 ta registri
  • To'liq, sobit va suzuvchi nuqta ma'lumotlari bo'yicha samarali vektorli parallel arifmetik amallar
  • Mutlaq qiymatli operandlar bo'yicha operatsiyalar
  • Dumaloq va to'yinganlik variantlari mavjud
  • To'liq aniqlik ko'paytiriladi va ko'paytiriladi-qo'shiladi
  • Butun sonli, suzuvchi nuqta va sobit nuqtali ma'lumotlar o'rtasidagi konversiyalar
  • Vektor darajasidagi taqqoslash va yo'nalish ko'rsatmalarining shartli bayrog'isiz to'liq to'plami
  • Vektor (1D) va massiv (2D) aralashtirish operatsiyalari
  • Yuklab olish va saqlash bo'yicha ko'rsatmalar endian - mustaqil operatsiya
  • IEEE suzuvchi nuqta arifmetikasi 754-2008 standarti
  • Element aniq suzuvchi nuqta istisno signalizatsiyasi
  • Ko'proq eshik / tranzistorli chiplar uchun oldindan aniqlangan kengaytiriladigan kengaytmalar
  • Umumiy kompilyatorni qo'llab-quvvatlash bilan birgalikda hisoblashni talab qiladigan dasturlarni tezlashtiradi
  • Iste'molchi elektroniği dasturlari yoki maxsus jihozlar bilan ta'minlanmagan funktsiyalar uchun dasturiy ta'minot bilan echim
  • Rivojlanayotgan ma'lumotni qazib olish, xususiyatlarni ajratib olish, tasvir va videoga ishlov berish va inson bilan kompyuterning o'zaro aloqasi
  • Yuqori samarali ilmiy hisoblash
MIPS virtualizatsiyasi
Apparat tomonidan qo'llab-quvvatlanadigan virtualizatsiya texnologiyasi.
MIPS ko'p yo'nalishli
Har bir ko'p tarmoqli MIPS yadrosi bitta quvur liniyasini va boshqa apparat resurslarini birgalikda ishlatadigan ikkita VPE (Virtual Processing Elements) ni qo'llab-quvvatlashi mumkin. Biroq, har bir VPE dasturiy ta'minot tizimida ko'rinib turganidek, protsessor holatining to'liq nusxasini o'z ichiga olganligi sababli, har bir VPE to'liq mustaqil protsessor sifatida ko'rinadi SMP Linux operatsion tizimi. Ko'proq nozik iplarni qayta ishlash dasturlari uchun har bir VPE ikkita VPE bo'yicha ajratilgan to'qqiztagacha TC ni qo'llab-quvvatlashga qodir. TKlar umumiy ijro etuvchi birlikka ega, ammo ularning har biri o'z dasturiy hisoblagichi va asosiy registr fayllariga ega, shunda ularning har biri dasturiy ta'minotdan ish zarrachalarini boshqarishi mumkin. MIPS MT arxitekturasi shuningdek protsessor tsikllarini iplarga taqsimlashga imkon beradi va ixtiyoriy Xizmat Sifati bilan nisbiy ip ustuvorliklarini belgilaydi (QoS ) menejer bloki. Bu avtobus bo'ylab axborot oqimini aniqlaydigan ikkita ustuvorlik mexanizmini yaratishga imkon beradi. Birinchi mexanizm foydalanuvchiga bitta ipni boshqasidan ustun qo'yishga imkon beradi. Ikkinchi mexanizm tsikllarning belgilangan nisbatlarini vaqt o'tishi bilan ma'lum iplarga taqsimlash uchun ishlatiladi. Ikkala mexanizmdan birgalikda foydalanish tarmoqli kengligini iplar to'plamiga samarali taqsimlash va kechikish vaqtini yaxshiroq boshqarish imkonini beradi. Haqiqiy vaqt tizimlarida tizim darajasidagi determinizm juda muhim va QoS bloki tizimning bashorat qilinishini yaxshilashga yordam beradi. Murakkab tizimlarning apparat dizaynerlari MIPS Technologies tomonidan taqdim etilgan standart QoS blokini ularni qo'llash uchun maxsus sozlangan bilan almashtirishi mumkin.
SmartMIPS
SmartMIPS - bu dastur tomonidan ishlab chiqilgan dasturga xos kengaytma (ASE) Gemplus International va MIPS Technologies uchun ishlashni yaxshilash va xotira sarfini kamaytirish aqlli karta dasturiy ta'minot. Uni faqat MIPS32 qo'llab-quvvatlaydi, chunki aqlli kartalar MIPS64 protsessorlarining imkoniyatlarini talab qilmaydi. SmartMIPS-dan bir nechta aqlli kartalar foydalanadi.
MDMX
MIPS-3D

Konventsiyalarni chaqirish

MIPS bir nechta qo'ng'iroq konventsiyalariga ega, ayniqsa 32-bitli platformada.

O32 ABI The uning asl nusxasi sifatida eng ko'p ishlatiladigan ABI Tizim V ABI MIPS uchun.[27][28] U qat'iy ravishda stack-ga asoslangan, faqat $ a0- $ a3 to'rtta registrlari argumentlarni o'tkazish uchun mavjud. Space on the stack is reserved in case the callee needs to save its arguments, but the registers are not stored there by the caller. The return value is stored in register $v0; a second return value may be stored in $v1. Ushbu sekinlik, faqat 16 ta registrga ega bo'lgan qadimiy suzuvchi nuqta modeli bilan bir qatorda, ko'plab boshqa chaqiriq konventsiyalarining tarqalishini rag'batlantirdi. ABI 1990 yilda shakllangan va 1994 yildan beri hech qachon yangilanmagan. U faqat 32 bitli MIPS uchun aniqlangan, ammo GCC O64 deb nomlangan 64-bitli o'zgarishlarni yaratdi.[29]

64-bit uchun Silicon Graphics tomonidan N64 ABI eng ko'p ishlatiladi. Eng muhim yaxshilanish shundaki, endi sakkizta registr argumentlarni o'tkazish uchun mavjud; it also increases the number of floating-point registers to 32. There is also an ILP32 version called N32, which uses 32-bit pointers for smaller code, analogous to the x32 ABI. Ikkalasi ham protsessorning 64-bitli rejimida ishlaydi.[29] The N32 and N64 ABIs pass the first eight arguments to a function in the registers $a0-$a7; subsequent arguments are passed on the stack. The return value (or a pointer to it) is stored in the registers $v0; a second return value may be stored in $v1. In both the N32 and N64 ABIs all registers are considered to be 64-bits wide.

O32-ni 32-bitli ABI bilan almashtirishga harakat qildilar, bu N32-ga ko'proq o'xshaydi. 1995 yilgi konferentsiyada MIPS EABI ishlab chiqildi, buning uchun 32 bitli versiyasi juda o'xshash edi.[30] EABI inspired MIPS Technologies to propose a more radical "NUBI" ABI additionally reuse argument registers for the return value.[31] MIPS EABI is supported by GCC but not LLVM, and neither supports NUBI.

For all of O32 and N32/N64, the return address is stored in a $ra register. This is automatically set with the use of the JAL (jump and link) or JALR (jump and link register) instructions. The function prologue of a (non-leaf) MIPS subroutine pushes the return address (in $ra) to the stack.[32][33]

On both O32 and N32/N64 the stack grows downwards, but the N32/N64 ABIs require 64-bit alignment for all stack entries. The frame pointer ($30) is optional and in practice rarely used except when the stack allocation in a function is determined at runtime, for example, by calling alloca().

For N32 and N64, the return address is typically stored 8 bytes before the stack ko'rsatkichi although this may be optional.

For the N32 and N64 ABIs, a function must preserve the $S0-$s7 registers, the global pointer ($gp or $28), the stack pointer ($sp or $29) and the frame pointer ($30). The O32 ABI is the same except the calling function is required to save the $gp register instead of the called function.

For multi-threaded code, the thread local storage pointer is typically stored in special hardware register $29 and is accessed by using the mfhw (move from hardware) instruction. At least one vendor is known to store this information in the $k0 register which is normally reserved for kernel use, but this is not standard.

The $k0 and $k1 registers ($26–$27) are reserved for kernel use and should not be used by applications since these registers can be changed at any time by the kernel due to interrupts, context switches or other events.

Registers for O32 calling convention
IsmRaqamFoydalanishCallee must preserve?
$zero$0constant 0Yo'q
$at$1assembler temporaryYo'q
$v0–$v1$2–$3values for function returns and expression evaluationYo'q
$a0–$a3$4–$7funktsiya argumentlariYo'q
$t0–$t7$8–$15temporariesYo'q
$s0–$s7$16–$23saved temporariesHa
$t8–$t9$24–$25temporariesYo'q
$k0–$k1$26–$27reserved for OS kernelYo'q
$gp$28global pointerYes (except PIC code)
$sp$29stack ko'rsatkichiHa
$fp$30frame pointerHa
$ ra$31qaytish manziliYo'q
Registers for N32 and N64 calling conventions[34]
IsmRaqamFoydalanishCallee must preserve?
$zero$0constant 0Yo'q
$at$1assembler temporaryYo'q
$v0–$v1$2–$3values for function returns and expression evaluationYo'q
$a0–$a7$4–$11funktsiya argumentlariYo'q
$t4–$t7$12–$15temporariesYo'q
$s0–$s7$16–$23saved temporariesHa
$t8–$t9$24–$25temporariesYo'q
$k0–$k1$26–$27reserved for OS kernelYo'q
$gp$28global pointerHa
$sp$29stack ko'rsatkichiHa
$s8$30frame pointerHa
$ ra$31qaytish manziliYo'q

Registers that are preserved across a call are registers that (by convention) will not be changed by a system call or procedure (function) call. For example, $s-registers must be saved to the stack by a procedure that needs to use them, and $sp and $fp are always incremented by constants, and decremented back after the procedure is done with them (and the memory they point to). By contrast, $ra is changed automatically by any normal function call (ones that use jal), and $t-registers must be saved by the program before any procedure call (if the program needs the values inside them after the call).

The userspace calling convention of position-independent code on Linux additionally requires that when a function is called the $t9 register must contain the address of that function.[35] This convention dates back to the System V ABI supplement for MIPS.[36]

Foydalanadi

MIPS processors are used in o'rnatilgan tizimlar kabi turar-joy shlyuzlari va routerlar. Originally, MIPS was designed for general-purpose computing. During the 1980s and 1990s, MIPS processors for shaxsiy, ish stantsiyasi va server computers were used by many companies such as Raqamli uskunalar korporatsiyasi, MIPS kompyuter tizimlari, NEC, Piramida texnologiyasi, SiCortex, Siemens Nixdorf, Silikon grafikalar va Tandem Computers.

Tarixiy jihatdan, video o'yin konsollari kabi Nintendo 64, Sony O'yinlar markazi, PlayStation 2 va PlayStation Portable used MIPS processors. MIPS processors also used to be popular in superkompyuterlar during the 1990s, but all such systems have dropped off the TOP500 ro'yxat. These uses were complemented by embedded applications at first, but during the 1990s, MIPS became a major presence in the embedded processor market, and by the 2000s, most MIPS processors were for these applications.

In the mid- to late-1990s, it was estimated that one in three RISC microprocessors produced was a MIPS processor.[37]

By the late 2010s, MIPS machines are still commonly used in embedded markets, including automotive, wireless router, LTE modems (mainly via MediaTek ), and microcontrollers (for example the PIC32M ). They have mostly faded out of the personal, server, and application space.

Simulyatorlar

Open Virtual Platforms (OVP)[38] includes the freely available for non-commercial use simulator OVPsim, a library of models of processors, peripherals and platforms, and APIs which enable users to develop their own models. The models in the library are open source, written in C, and include the MIPS 4K, 24K, 34K, 74K, 1004K, 1074K, M14K, microAptiv, interAptiv, proAptiv 32-bit cores and the MIPS 64-bit 5K range of cores. These models are created and maintained by Imperas[39] and in partnership with MIPS Technologies have been tested and assigned the MIPS-Verified mark. Sample MIPS-based platforms include both bare metal environments and platforms for booting unmodified Linux binary images. These platforms–emulators are available as source or binaries and are fast, free for non-commercial usage, and are easy to use. OVPsim tomonidan ishlab chiqilgan va qo'llab-quvvatlangan Imperalar and is very fast (hundreds of million of instructions per second), and built to handle multicore homogeneous and heterogeneous architectures and systems.

There is a freely available MIPS32 simulator (earlier versions simulated only the R2000/R3000) called SPIM for use in education. EduMIPS64[40] is a GPL graphical cross-platform MIPS64 CPU simulator, written in Java/Swing. It supports a wide subset of the MIPS64 ISA and allows the user to graphically see what happens in the pipeline when an assembly program is run by the CPU.

MARS[41] is another GUI-based MIPS emulator designed for use in education, specifically for use with Hennessy's Kompyuterni tashkil etish va dizayn.

WebMIPS[42] is a browser-based MIPS simulator with visual representation of a generic, pipelined processor. This simulator is quite useful for register tracking during step by step execution.

More advanced free emulators are available from the GXemul (formerly known as the mips64emul project) and QEMU loyihalar. These emulate the various MIPS III and IV microprocessors in addition to entire computer systems which use them.

Commercial simulators are available especially for the embedded use of MIPS processors, for example Wind River Simika (MIPS 4Kc and 5Kc, PMC RM9000, QED RM7000, Broadcom/Netlogic ec4400, Cavium Octeon I), Imperalar (all MIPS32 and MIPS64 cores), VaST Systems (R3000, R4000), and CoWare (the MIPS4KE, MIPS24K, MIPS25Kf and MIPS34K).

WepSIM[43] is a browser-based simulator where a subset of MIPS instructions are micro-programmed. This simulator is very useful in order to learn how a CPU works (microprogramming, MIPS routines, traps, interruptions, system calls, etc.).

Shuningdek qarang

Adabiyotlar

  1. ^ Patterson, David (2014). Kompyuterni tashkil etish va dizayn. http://booksite.elsevier.com/9780124077263/downloads/historial%20perspectives/section_4.16.pdf: Elsevier. pp. 4.16–4. ISBN  978-0-12-407726-3.CS1 tarmog'i: joylashuvi (havola)
  2. ^ a b Price, Charles (September 1995). MIPS IV Instruction Set (Revision 3.2), MIPS Technologies, Inc.
  3. ^ a b v d e f g h Sweetman, Dominic (1999). MIPS Run-ga qarang. Morgan Kaufmann Publishers, Inc. ISBN  1-55860-410-3.
  4. ^ "MIPS32 Architecture". MIPS. Olingan 20 mart, 2020.
  5. ^ "MIPS64 Architecture". MIPS. Olingan 20 mart, 2020.
  6. ^ "MIPS-3D ASE". Tasavvur texnologiyalari. Arxivlandi asl nusxasi 2014 yil 3-yanvarda. Olingan 4 yanvar 2014.
  7. ^ "MIPS16e". MIPS. Olingan 20 mart, 2020.
  8. ^ "MIPS Multithreading". MIPS. Olingan 20 mart, 2020.
  9. ^ Kaliforniya universiteti, Devis. "ECS 142 (Compilers) References & Tools page". Arxivlandi from the original on 21 March 2011. Olingan 28 may 2009.
  10. ^ "Silicon Graphics Introduces Enhanced MIPS Architecture to Lead the Interactive Digital Revolution". Silicon Graphics, Inc. 21 October 1996. Archived from asl nusxasi 2012 yil 10-iyulda.
  11. ^ a b Gwennap, Linley (November 18, 1996). "Digital, MIPS Add Multimedia Extensions" (PDF). Mikroprotsessor hisoboti. 10 (15): 24–28. Arxivlandi (PDF) 2011 yil 20 iyuldagi asl nusxasidan.
  12. ^ "Silicon Graphics Previews New High-Performance MIPS Microprocessor Roadmap" (Press release). 1997 yil 12-may.
  13. ^ a b v d e "MIPS Technologies, Inc. Enhances Architecture to Support Growing Need for IP Re-Use and Integration" (Matbuot xabari). Ish simlari. 1999 yil 3-may.
  14. ^ "Latest Release of MIPS Architecture Includes Virtualization and SIMD Key Functionality for Enabling Next Generation of MIPS-Based Products" (Matbuot xabari). MIPS Technologies. 6 dekabr 2012 yil. Arxivlangan asl nusxasi 2012 yil 13 dekabrda.
  15. ^ "MIPS skips Release 4 amid bidding war". EE Times. 2012 yil 10-dekabr. Arxivlandi asl nusxasidan 2014 yil 17 aprelda.
  16. ^ "Wave Computing Extends AI Lead by Targeting Edge of Cloud Through Acquisition of MIPS". 2018 yil 15-iyun.
  17. ^ "Wave Computing® Launches the MIPS Open Initiative To Accelerate Innovation for the Renowned MIPS® Architecture". 2018 yil 17-dekabr.
  18. ^ "MIPS Processor ISA To Be Open-Sourced In 2019 - Phoronix".
  19. ^ Yoshida, Junko (December 17, 2018). "MIPS Goes Open Source". EE Times.
  20. ^ "MIPS R6 Architecture Now Available for Open Use". 2019 yil 28 mart.
  21. ^ "Wave Computing Closes Its MIPS Open Initiative with Immediate Effect, Zero Warning". 2019 yil 15-noyabr.
  22. ^ "MIPS – Market-leading RISC CPU IP processor solutions". imgtec.com. Arxivlandi asl nusxasi 2016 yil 9 martda. Olingan 11 fevral 2016.
  23. ^ "Silicon Graphics Introduces Compact MIPS RISC Microprocessor Code For High Performance at a Low Cost" (Press release). October 21, 1996.
  24. ^ Sweetman, Dominic (2007). MIPS Run-ga qarang (2-nashr). San Francisco, California: Morgan Kaufmann Publishers. 425-427 betlar. ISBN  978-0-12-088421-6.
  25. ^ "Using the GNU Compiler Collection (GCC): MIPS DSP Built-in Functions". gcc.gnu.org. Arxivlandi from the original on 20 April 2017.
  26. ^ "Instruction Set Architecture - LinuxMIPS". www.linux-mips.org. Arxivlandi from the original on 20 April 2017.
  27. ^ Shirin, Dominik. See MIPS Run, 2nd edition. Morgan Kaufmann. ISBN  0-12088-421-6.
  28. ^ "MIPS32 yo'riqnomasi tezkor ma'lumotnomasi".
  29. ^ a b "MIPS ABI tarixi".
  30. ^ Eric Christopher (June 11, 2003). "mips eabi hujjatlari". [email protected] (Pochta ro'yxati). Olingan 19 iyun, 2020.
  31. ^ "NUBI".
  32. ^ Karen Miller. "The MIPS Register Usage Conventions ". 2006.
  33. ^ Hal Perkins. ""MIPS Calling Convention ". 2006.
  34. ^ MIPSpro N32 ABI Handbook (PDF). Silikon grafikalar.
  35. ^ "PIC code – LinuxMIPS". www.linux-mips.org. Olingan 21 sentyabr, 2018.
  36. ^ "System V Application Binary Interface MIPS RISC Processor Supplement, 3rd Edition" (PDF). 3-12 betlar.
  37. ^ Rubio, Victor P. "A FPGA Implementation of a MIPS RISC Processor for Computer Architecture Education" (PDF). Nyu-Meksiko shtati universiteti. Arxivlandi (PDF) asl nusxasidan 2012 yil 15 aprelda. Olingan 22 dekabr 2011.
  38. ^ "OVP: Fast Simulation, Free Open Source Models. Virtual Platforms for software development". Ovpworld.org. Arxivlandi from the original on 8 June 2012. Olingan 30 may 2012.
  39. ^ "Imperalar". Imperalar. 3 mart 2008 yil. Arxivlandi asl nusxasidan 2012 yil 14 iyunda. Olingan 30 may 2012.
  40. ^ "EduMIPS64". Edumips.org. Arxivlandi asl nusxasidan 2012 yil 7 mayda. Olingan 30 may 2012.
  41. ^ "MARS MIPS simulyatori - Missuri shtati universiteti". Courses.missouristate.edu. Arxivlandi asl nusxasidan 2012 yil 2 mayda. Olingan 30 may 2012.
  42. ^ "WebMIPS - MIPS CPU PIPLINED SIMULATION On Line". Arxivlandi asl nusxasi 2012 yil 31 dekabrda. Olingan 13 yanvar 2012. (online demonstration) "Arxivlangan nusxa". Arxivlandi 2011 yil 10 oktyabrda asl nusxadan. Olingan 13 yanvar 2012.CS1 maint: nom sifatida arxivlangan nusxa (havola) (manba)
  43. ^ "WepSim". (Web version with examples). Arxivlandi asl nusxasidan 2017 yil 1 oktyabrda. Olingan 21 oktyabr 2019. "WepSim". (GitHub site with source). Arxivlandi asl nusxasidan 2018 yil 3 yanvarda. Olingan 21 oktyabr 2019.

Qo'shimcha o'qish

Tashqi havolalar