معماری میپس
میپس III

میپس III یک توسیع سازگار با گذشته از میپس II است که پشتیبانی از عملیات اعدادصحیح آدرس دهی ۶۴ بیتی حافظه را اضافه کرده‌است. نوع دادهٔ ۶۴ بیتی دوکلمه نامیده می‌شود، و میپس III رجیسترهای عمومی، رجیسترهای HI/LO، شمارندهٔ برنامه را به ۶۴ بیت توسعه داد تا بتواند از آن پشتیبانی کند. دستورهای جدیدی برای بارگذاری و ذخیرهٔ دوکلمه‌ها، انجام جمع، تفریق، ضرب و تقسیم اعداد صحیح و همچنین عملیات‌های شیفت بر روی آن‌ها و انتقال دوکلمه‌ها بین رجیسترهای عمومی و HI/LO اضافه شد. دستورهای موجود که در اصل برای عمل کردن بر روی کلمه‌های ۳۲ بیتی تعریف شده بودند، هرجا نیاز بود بازتعریف شدند تا بتوانند حاصل‌های ۳۲ بیتی را با علامت توسعه دهند و اکثر دستورها بتوانند با کلمه‌ها و دوکلمه‌ها یکسان برخورد کنند. از میان این دستورهای بازتعریف شده می‌توان به بارگزاری کلمه اشاره کرد. در میپس III این دستور کلمه‌ها را با علامت به ۶۴ بیت توسعه می‌دهد. برای کامل کردن بارگزاری کلمه، نسخه ای اضافه شد که با صفر توسعه می‌دهد.
ناتوانی قالب R در مشخص کردن مقدار کامل شیفت برای شیفت‌های ۶۴ بیتی (فیلد ۵ بیتی آن برای مقدار شیفت بسیار کوتاه‌تر از آن است مقدار شیفت برای دوکلمه‌ها را نشان دهد) باعث شد میپس III سه نسخه ۶۴ بیتی از هر دستور شیفت میپس I ارائه دهد. اولین نسخه، نسخهٔ ۶۴ بیتی دستورهای شیفت اصلی است، که برای مشخص کردن مقدار شیفت‌های ۰ تا ۳۱ بیتی استفاده می‌شود. دومین نسخه مشابه اولی است، اما به مقدار فیلد مقدار شیفت ۳۲۱۰ می‌افزاید تا مقدارهای ثابت شیفت ۳۲ تا ۶۴ بیت را بتوان مشخص کرد. نسخهٔ سوم مقدار شیفت را از ۶ بیت مرتبهٔ پایین یک رجیستر عمومی به دست می‌آورد.
میپس III سطوح امتیاز کرنل و کاربر که از قبل موجو بودند یک سطح ناظر افزود. این قابلیت تنها پردازندهٔ کنترل سیستم تعریف شده در پیاده‌سازی (پردازندهٔ کمکی ۰) را تحت تأثیر قرار داد.
| نام دستور | یادآور | قالب | رمزگزاری | رمزگزاری | رمزگزاری | رمزگزاری | رمزگزاری | رمزگزاری |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| شیفت چپ منطقی متغیر دوکلمه | DSLLV | R | 010 | rs | rt | rd | 010 | 2010 |
| شیفت راست منطقی متغیر دوکلمه | DSRLV | R | 010 | rs | rt | rd | 010 | 2210 |
| شیفت راست جبری متغیر دوکلمه | DSRAV | R | 010 | rs | rt | rd | 010 | 2310 |
| ضرب دوکلمه | DMULT | R | 010 | rs | rt | 010 | 010 | 2810 |
| ضرب بدون علامت دوکلمه | DMULTU | R | 010 | rs | rt | 010 | 010 | 2910 |
| تقسیم دوکلمه | DDIV | R | 010 | rs | rt | 010 | 010 | 3010 |
| تقسیم بدون علامت دوکلمه | DDIVU | R | 010 | rs | rt | 010 | 010 | 3110 |
| جمع دوکلمه | DADD | R | 010 | rs | rt | rd | 010 | 4410 |
| جمع بدون علامت دوکلمه | DADDU | R | 010 | rs | rt | rd | 010 | 4510 |
| تفریق دوکلمه | DSUB | R | 010 | rs | rt | rd | 010 | 4610 |
| تفریق بدون علامت دوکلمه | DSUBU | R | 010 | rs | rt | rd | 010 | 4710 |
| شیفت چپ منطقی دوکلمه | DSLL | R | 010 | 010 | rt | rd | sa | 5610 |
| شیفت راست منطقی دوکلمه | DSRL | R | 010 | 010 | rt | rd | sa | 5810 |
| شیفت راست جبری دوکلمه | DSRA | R | 010 | 010 | rt | rd | sa | 5910 |
| شیفت چپ منطقی دوکلمه + ۳۲ | DSLL32 | R | 010 | 010 | rt | rd | sa | 6010 |
| شیفت راست منطقی دوکلمه + ۳۲ | DSRL32 | R | 010 | 010 | rt | rd | sa | 6210 |
| شیفت راست منطقی دوکلمه + ۳۲ | DSRL32 | R | 010 | 010 | rt | rd | sa | 6310 |
| جمع مقدار فوری دوکلمه | DADDI | I | 2410 | rs | rd | مقدار فوری | مقدار فوری | مقدار فوری |
| جمع بدون علامت مقدار فوری دوکلمه | DADDIU | I | 2510 | rs | rd | مقدار فوری | مقدار فوری | مقدار فوری |
| بارگزاری چپ دوکلمه | LDL | I | 2610 | rs | rt | آفست | آفست | آفست |
| بارگزاری راست دوکلمه | LDR | I | 2710 | rs | rt | آفست | آفست | آفست |
| بارگزاری بدون علامت دوکلمه | LWU | I | 3910 | rs | rt | آفست | آفست | آفست |
| ذخیره دوکلمه چپ | SDL | I | 4410 | rs | rt | آفست | آفست | آفست |
| ذخیره دوکلمه راست. | SDR | I | 4510 | rs | rt | آفست | آفست | آفست |
| بارگزاری دوکلمه پیوند خورده | LLD | I | 5210 | rs | rt | آفست | آفست | آفست |
| بارگزاری دوکلمه | LD | I | 5510 | rs | rt | آفست | آفست | آفست |
| ذخیره مشروط دوکلمه | SCD | I | 6010 | rs | rt | آفست | آفست | آفست |
| ذخیره دوکلمه | SD | I | 6310 | rs | rt | آفست | آفست | آفست |
میپس III پشتیبانی از پردازنده کمکی ۳ (CP3) را حذف کرد، و آپ کد آن را برای دستورهای دوکلمهٔ جدید استفاده کرد. پردازنده‌های کمکی باقی مانده دستورهایی برای انتقال دوکلمه‌ها بین رجیسترهای پردازنده کمکی و رجیسترهای عمومی به دست آوردند. رجیسترهای عمومی شناور (FGRs) به ۶۴ بیت توسعه یافتند و دیگر نیازی به دستورهایی برای محدود کردن استفاده از رجیسترها تنها به تعداد زوج وجود نداشت. این با نسخه‌های قبلی این معماری سازگار نبود؛ برای اداره کردن واحد نقطه شناور (FPU) میپس III در یک حالت سازگار با میپس I و II، یک بیت در رجیستر کنترل/وضعیت نقطه شناور استفاده می‌شود. رجیسترهای کنترل نقطه شناور توسعه نیافتند تا سازگاری حفظ شود. تنها دستورهای نقطه شناور اضافه شده دستورهای کپی دوکلمه‌ها بین CPU و FPU، تبدیل اعداد نقطه شناور دقت یگانه و دوگانه به دوکلمه‌های صحیح و برعکس هستند.
| نام دستور | یادآور | قالب | رمزگزاری | رمزگزاری | رمزگزاری | رمزگزاری | رمزگزاری | رمزگزاری |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| انتقال دوکلمه به پردازنده کمکی ۱ | DMFC1 | R | 1710 | 110 | rt | fs | 010 | 010 |
| انتقال دوکلمه به پردازنده کمکی ۱ | DMTC1 | R | 1710 | 510 | rt | fs | 010 | 010 |
| گرد کردن نقطه شناور به طولانی | ROUND.L.S | R | 1710 | 1610 | 010 | fs | fd | ۸ |
| گرد کردن نقطه شناور به طولانی | ROUND.L.D | R | 1710 | 1710 | 010 | fs | fd | 810 |
| کوتاه کردن نقطه شناور به طولانی | TRUNC.L.S | R | 1710 | 1610 | 010 | fs | fd | 910 |
| کوتاه کردن نقطه شناور به طولانی | TRUNC.L.D | R | 1710 | 1710 | 010 | fs | fd | 910 |
| سقف نقطه شناور به طولانی | CEIL.L.S | R | 1710 | 1610 | 010 | fs | fd | 1010 |
| سقف نقطه شناور به طولانی | CEIL.L.D | R | 1710 | 1710 | 010 | fs | fd | 1010 |
| کف نقطه شناور به طولانی | FLOOR.L.S | R | 1710 | 1610 | ۰ | fs | fd | 1110 |
| کف نقطه شناور به طولانی | FLOOR.L.D | R | 1710 | 1710 | 010 | fs | fd | 1110 |
| تبدیل نقطه شناور به یگانه | CVT.S.L | R | 1710 | 1610 | 010 | fs | fd | 3210 |
| تبدیل نقطه شناور به دوگانه | CVT.D.L | R | 1710 | 1710 | 010 | fs | fd | 3310 |
| تبدیل نقطه شناور به طولانی | CVT.L.S | R | 1710 | 1610 | 010 | fs | fd | 3710 |
| Floating Point Convert to Long | CVT.L.D | R | 1710 | 1710 | 010 | fs | fd | 3710 |
ریزپردازندهٔ R4000 شرکت MIPS Computer Systems، (در سال ۱۹۹۱) اولین پیاده‌سازی میپس III بود. این ریزپردازنده برای استفاده در کامپیوترهای شخصی، استگاه کاری، و سرور طراحی شده بود.MIPS Computer Systems به شدت معماری میپس و R4000 را ترویج می‌داد، و کنسرسیوم محیط محاسباتی پیشرفته (ACE) را برای پیشبرد استاندارد محاسبهٔ ریسک پیشرفته (ARC) اش ایجاد کرد، که هدف ان جا انداختن میپس به عنوان پلتفورم غالب برای محاسبات شخصی بود. ARC چندان موفقیتی در کامپیوترهای شخصی پیدا نکرد، اما R4000 (و R4400 مشتق آن) به‌طور گسترده در کامپیوترهای استگاه کاری و سرور استفاده می‌شد، به خصوص توسط بزرگ‌ترین کاربر آن Silicon Graphics. سایر کاربردهای R4000 شامل سیستم‌های جاگذاری شده پیشرفته و سوپر کامپیوترها می‌باشند.
پس از گذر زمان میپس III توسط تعدادی ریزپردازندهٔ جاگذاری شده پیاده‌سازی شد. ریزپردازندهٔ R4600 شرکت Quantum Effect Design (سال ۱۹۹۳) و مشتقات آن به‌طور گسترده در سیستم‌های جاگذاری شدهٔ پیشرفته و ایستگاه‌های کاری ابتدایی و سرورها استفاده می‌شدند. ریزپردازندهٔ R4200 شرکت MIPS Technologies (سال ۱۹۹۴) برای سیستم‌های جاگذاری شده، لپ تاپ‌ها و کامپیوترهای شخصی طراحی شد. یک مشتق آن، R4300i، ساخته شده توسط NEC Electronics، در کنسول بازی نینتندو ۶۴ استفاده شد. نینتندو ۶۴ در کنار پلی استیشن از بزرگ‌ترین استفاده‌کننده‌های پردازنده‌های معماری میپس در میانهٔ دهه ۱۹۹۰ بودند.