معماری میپس

**میپس** (MIPS) یک خانوادهٔ ریزپردازنده است که نام آن کوتاه‌شدهٔ عبارت «Microprocessor without Interlocked Pipelined Stages» به معنای «ریزپردازنده بدون قفل‌های خطوط لوله» می‌باشد. هدف از این طراحی، ساده‌سازی و سریع‌تر کردن اجرای دستورها در پردازنده است.

در معماری میپس، دستورهای برنامه به چند مرحلهٔ پشت‌سرهم تقسیم می‌شوند؛ مراحلی مانند آوردن دستور از حافظه، تفسیر دستور، انجام محاسبه، دسترسی به حافظه و نوشتن نتیجه. این مراحل به‌صورت خط لوله‌ای (pipeline) انجام می‌شوند، شبیه یک خط تولید که هر بخش آن وظیفه‌ای مشخص دارد. به این ترتیب، چند دستور می‌توانند هم‌زمان در مراحل مختلف خط لوله پیش بروند و پردازنده کارایی بیشتری پیدا می‌کند.

برخلاف برخی معماری‌ها که سخت‌افزار باید برای جلوگیری از تداخل میان دستورها مکث کند یا سرعت را کاهش دهد، در میپس پیچیدگی سخت‌افزار کمتر شده است. مسئولیت هماهنگ‌سازی بیشتر بر عهدهٔ نرم‌افزار و به‌ویژه کامپایلر قرار می‌گیرد. به همین دلیل این معماری به‌طور دقیق و ساده طراحی شده و اجرای دستورها قابل پیش‌بینی است.

میپس در ردهٔ معماری‌های رایانۀ کم‌دستور قرار می‌گیرد. در این نوع معماری، دستورها ساده، کم‌تعداد و تقریباً هم‌اندازه هستند. بیشتر عملیات نیز در رجیسترها انجام می‌شود که از نظر سرعت بسیار سریع‌تر از حافظهٔ اصلی‌اند. این ویژگی‌ها سبب می‌شوند میپس برای دستگاه‌هایی با نیاز به مصرف کم‌انرژی، سرعت بالا و هزینهٔ ساخت پایین مناسب باشد.

این معماری در طیف گسترده‌ای از ابزارها به کار رفته است؛ از دستگاه‌های شبکه مانند روترها و مودم‌ها گرفته تا برخی کنسول‌های بازی و سامانه‌های توکار. به‌طور خلاصه، میپس نمونه‌ای از معماری پردازنده است که با ساده‌سازی و کاهش پیچیدگی سخت‌افزاری، اجرای کارآمد دستورها را ممکن می‌سازد.

## بررسی کلی
**میپس** (به انگلیسی: MIPS مخفف *Microprocessor without Interlocked [[:en:Pipeline_(computing)|Pipelined]] Stages*) یک معماری مجموعه دستورالعمل (ISA) برای رایانه‌های کم‌دستور (RISC)   است که توسط MIPS Technologies (MIPS Computer Systems سابق) توسعه یافته‌است. معماری اولیه میپس ۳۲ بیتی بود، و نسخه‌های ۶۴ بیتی بعداً به آن اضافه شد. نسخه‌های متعددی از میپس وجود دارد از جمله: میپس IV ,III ,II, I و V؛ و همچنین پنج توریع میپس ۶۴/۳۲ (به ترتیب برای پیاده‌سازی ۳۲ و ۶۴ بیتی). از آوریل ۲۰۱۷، آخرین نسخه میپس ۶۴/۳۲ توزیع ۶ است. تفاوت اساسی بین میپس ۶۴/۳۲ و میپس V-I تعریف پردازنده کمکی برای کنترل سیستم در حالت کرنل دارای حق ویژه علاوه بر معماری حالت کاربر است.

چندین افزونه اختیاری نیز موجود است، از جمله میپس سه بعدی که مجموعه ای ساده از دستورت ممیز شناور چند داده است که به وظایف سه بعدی معمول اختصاص دارد، MDMX (یا MadMaX) که یک مجموعهٔ جامع تر چند داده برای اعداد صحیح است و از رجیسترهای ممیز شناور ۶۴ استفاده می‌کند، MIPS16e است که فشرده سازی را به جریان دستورها اضافه می‌کند تا برنامه‌ها از فضای کمتری را اشغال کنند، و میپس MT، که قابلیت چندریسمانی را اضافه می‌کند.

اغلب دوره‌های معماری کامپیوتر در دانشگاه‌ها و مدارس فنی معماری میپس را مطالعه می‌کنند. معماری‌های ریسک جدید تر مانند آلفا تا حد زیادی از این معماری تأثیر پذیرفته‌اند.

از آوریل ۲۰۱۷، پردازنده‌های میپس در سامانه‌های نهفته مانند دروازه‌های محلی و روترها استفاده می‌شود. در آغاز، میپس برای محاسبات عمومی طراحی شده بود. در دهه‌های ۱۹۸۰ و ۱۹۹۰، شرکت‌های بسیاری مانند Digital Equipment Corporation , MIPS Computer Systems، NEC , Pyramid Technology , SiCortex , Siemens Nixdorf , Silicon Graphics و Tandem Computers از پردازنده‌های میپس برای کامپیوترهای شخصی، ایستگاه‌های کار و کامپیوترهای سرور استفاده می‌کردند. در طول تاریخ، کنسول‌های بازی مانند نینتندو ۶۴ ،پلی استیشن، پلی استیشن ۲ و پلی استیشن همراه از پردازنده‌های میپس استفاده می‌کردند. همچنین در دهه ۱۹۹۰ پردازنده‌های میپس محبوبیت زیادی در ابر رایانه‌ها داشتند، اما تمام این سیستم‌ها از فهرست TOP500 (پانصد ابررایانه برتر) حذف شده‌اند. این استفاده‌ها در ابتدا توسط کاربردهای جاسازی شده جا افتاد، اما در دهه ۱۹۹۰، میپس بخش بزرگی از بازار پردازنده‌های جاسازی شده را به خود اختصاص داده بود، و در دههٔ ۲۰۰۰، اکثر پردازنده‌های میپس در این زمینه به کار می‌رفتند. در اواسط تا اواخر دهه ۱۹۹۰ تخمین زده شد که یک در هر سه ریزپردازنده ریسک تولید شده یک پردازنده میپس بوده.

میپس یک معماری مدولار است که تا چهار پردازنده کمکی را پشتیبانی می‌کند(CP۰/۱/۲/۳). در اصطلاح میپس، CP۰ پردازندهٔ کمکی کنترل سیستم است (بخشی حیاتی از پردازنده است که در میپس V-I در پیاده‌سازی تعریف شده‌است)، CP۱ یک واحد اختیاری ممیز شناور (FPU) است و CP۲ / ۳ پردازنده‌های کمکی اختیاری اند که در پیاده‌سازی تعریف می‌شوند. (میپس CP3 III را حذف کرد و آپ کد ان را برای امور دیگر استفاده کرد). به عنوان مثال، در کنسول بازی پلی استیشن، CP۲ موتور تبدیل هندسی (GTE) است که پردازش هندسه را در گرافیک کامپیوتری سه بعدی تسهیل می‌کند.

در دسامبر ۲۰۱۸، Wave Computing، صاحب جدید معماری میپس (رجوع شود به MIPS Technologies)، اعلام کرد که میپس ISA در برنامه ای که MIPS Open initiative نامیده می‌شود، متن باز می‌شود. هدف برنامه ای که برای سال ۲۰۱۹ برنامه‌ریزی شده‌است، این است که دسترسی آزاد به اکثر نسخه‌های اخیر طراحی‌های ۳۲ بیتی و ۶۴ بیتی را بدون نیاز به هیچ گونه مجوز یا هزینه حق امتیاز فراهم کند و همچنین مجوز استفاده از اختراع‌های ثبت شدهٔ میپس موجود را در اختیار به شرکت کنندگان قرار دهد.

## میپس I
اولین نسخه معماری میپس توسط MIPS Computer Systems برای ریزپردازنده R2000، اولین پیاده‌سازی میپس، طراحی شد. میپس و R2000 با هم در سال ۱۹۸۵ معرفی شدند.  هنگامی که میپس II معرفی شد، *میپس* به *میپس I* تغییر نام داد تا از نسخه جدید متمایز شود. 

MIPS یک معماری بارگذاری / ذخیره‌سازی (نام دیگر آن رجیستر رجیستر) است؛ به جز دستورهای بارگذاری / ذخیره‌سازی استفاده شده برای دسترسی به حافظه، تمام دستورها در رجیسترها عمل می‌کنند.

### رجیسترها
میپس I دارای سی و دو رجیستر ۳۲ بیتی عمومی است. رجیستر ۰ $ سخت‌افزاری صفر است و و هر آنچه در آن نوشته شود دور انداخته می‌شود. رجیستر ۳۱ $ رجیستر پیوند است. برای دستورهای ضرب و تقسیم اعداد صحیح، که مستقل از  دستورات دیگر اجرا می‌شود، یک جفت رجیستر ۳۲ بیتی، *HI* و *LO* ارائه شده‌است. مجموعهٔ کوچکی از دستورها برای کپی کردن داده‌ها بین رجیسترهای کلی و رجیسترهای HI / LO وجود دارد.

شمارنده برنامه ۳۲ بیت دارد. از آنجا که طول دستورهای میپس ۳۲I بیت است و هم اندازهٔ حد طبیعی یک کلمه است، دو بیت مرتبه پایین‌تر همواره صفر است.

### قالب‌های دستورها
دستورها به سه نوع تقسیم می‌شوند:I, R و J. هر دستور با یک آپ کد ۶ بیتی شروع می‌شود. علاوه بر آپ کد، دستورهای نوع R، سه رجیستر، یک فیلد برای اندازهٔ شیفت و یک فیلد برای تابع مشخص می‌کنند. دستورهای نوع I دو رجیستر و یک مقدار فوری ۱۶ بیتی را مشخص می‌کند؛ دستورهای نوع J از آپ کد همراه با مقصد پرش ۲۶ بیتی پیروی می‌کنند. 

در زیر سه قالب مورد استفاده برای مجموعه دستورهای اصلی آمده‌است:

### دستورهای CPU
#### بارگذاری‌ها و ذخیره‌سازی‌ها
میپس I دستورهایی برای بارگذاری و ذخیره بایت‌های ۸ بیتی، نیم کلمه‌های ۱۶ بیت و کلمات ۳۲ بیتی دارد. تنها یک حالت آدرس دهی پشتیبانی می‌شود: پایه + جابجایی. از آنجا که میپس I یک معماری ۳۲ بیتی است، برای بارگذاری مقادیر کمتر از ۳۲ بیت داده باید آن‌ها را یا با علامت یا با صفر به ۳۲ بیت رساند. دستورهای بارگذاری با پیشوند "unsigned" داده‌ها را با صفر توسعه می‌دهند و در غیر اینصورت با علامت. منبع دستورهای بارگذاری برای پایه محتوای یک رجیستر عمومی (rs) است و نتیجه را در یک رجیستر عمومی دیگر (rt) می‌نویسند. منبع دستورهای ذخیره‌سازی برای پایه نیز محتوای یک رجیستر عمومی (rs) و برای داده‌های ذخیره شونده یک رجیستر عمومی دیگر (rt) است. تمام دستورهای بارگذاری و ذخیره، برای محاسبه آدرس مقدار پایه را با مقدار فوری ۱۶ بیتی که با علامت به ۳۲ بیت رسانده شده جمع می‌کنند. در میپس I همهٔ دسترسی‌های حافظه باید بر مرزهای طبیعی کلمه‌شان منطبق باشند، در غیر این صورت یک استثنا پرتاب می‌شود. برای پشتیبانی از دسترسی‌های بهینهٔ غیر منطبق حافظه، دستورهای بارگذاری/ذخیره‌سازی کلمه با پیشوندهای «left» یا «right» وجود دارد. تمام دستورهای بارگذاری با یک شکاف تأخیر بارگذاری دنبال می‌شود. دستورهایی که در شکاف تأخیر بارگذاری می‌آیند نمی‌تواند از داده‌های بارگذاری شده توسط دستور بارگذاری استفاده کنند. شکاف تأخیر بارگذاری را می‌توان با دستورهایی که به بارگذاری بستگی ندارند پر کرد. اگر چنین دستورهایی یافت نشد یک دستور بی عمل جایگزین آن می‌شود

#### واحد محاسبه و منطق
میپس I دستورهایی برای جمع و تفریق دارد. این دستورها عمل وندهای خود را از دو رجیستر عمومی (rs و rt) می‌گیرند، و نتیجه را در یک رجیستر عمومی سوم (rd) ذخیره می‌کنند. علاوه بر این، یکی از عملوندهای جمع می‌تواند یک مقدار فوری ۱۶ بیتی باشد (که با علامت به ۳۲ بیت گسترش یافته‌است). دستورهای جمع و تفریق دو نوع اند: به‌طور پیش فرض، اگر نتیجه سرریز شود، یک استثناء پرتاب می‌شود؛ دستورهایی که پسوند "unsigned" دارند استثنا پرتاب نمی‌کنند. کنترل سرریز نتیجه را به صورت یک عدد صحیح متمم دو ۳۲ بیتی تفسیر می‌کند.

میپس I دستورهای برای انجام اعمال منطقی AND, OR, XOR و NOR بر روی بیتها دارد. این دستورها، عملوندهای خود را از دو رجیستر عمومی می‌گیرند و نتیجه را در رجیستر سوم ذخیره می‌کنند. همچنین یکی از عملوندهای دستورهای AND, OR و XOR می‌تواند یک مقدار فوری ۱۶ بیتی (که با صفر تا ۳۲ بیت توسعه یافته‌است) باشد.

مجموعه دستورهای *رابطه ای* بسته به برقرار بودن یا نبودن رابطه در رجیستر مقصد مقدار صفر یا یک را ذخیره می‌کند. عملوندهای این دستورها دو رجیستر عمومی یا یک رجیستر و یک مقدار فوری ۱۶ بیتی (که با علامت تا ۳۲ بیت توسعه یافته‌است) هستند، و نتیجه نیز در یک رجیستر عمومی سوم ذخیره می‌شود. به‌طور پیش فرض عملوندها به عنوان اعداد صحیح علامت دار تفسیر می‌شوند. فرمهایی از این دستورها که پسوند "unsigned" دارند عملوندها را اعداد صحیح بدون علامت تفسیر می‌کنند (حتی آن‌هایی که از توسعهٔ با علامت یک مقدار فوری ۱۶ بیتی حاصل شده‌اند).

دستور بارگذاری بالایی مقدار فوری، مقدار فوری ۱۶ بیتی را در ۱۶ بیت مرتبه بالاتر یک رجیستر عمومی کپی می‌کند. این دستور همراه با دستور Or استفاده می‌شود تا یک مقدار فوری ۳۲ بیتی را در یک رجیستر بارگذاری کند

#### شیفت‌ها
میپس I دستورهایی برای شیفت‌های چپ و راست منطقی و راست جبری دارد. عملگر از یک رجیستر عمومی (rt) گرفته می‌شود، و نتیجه نیز در یک رجیستر عمومی دیگر (rd) ذخیره می‌شود. مقدار شیفت یا از یک رجیستر عمومی (rs) گرفته می‌شود یا یک " مقدار شیفت" ۵ بیتی (فیلد "sa").

#### ضرب و تقسیم
میپس I دستورهایی برای ضرب و تقسیم اعداد صحیح با علامت و بدون علامت دارد. عملوندهای این دستورها دو رجیستر عمومی اند و حاصل را در یک جفت رجیستر ۳۲ بیتی به نام‌های HI و LO ذخیره می‌کنند، آن‌ها ممکن است جدا از (و همزمان با) دستورهای دیگر CPU اجرا شوند. در ضرب نیمه‌های مرتبه بالا و مرتبه پایین حاصل ضرب ۶۴ بیتی به ترتیب در HI و LO ذخیره می‌شوند. در تقسیمُ خارج قسمت در LO و باقی‌مانده در HI نوشته می‌شوند. برای دسترسی به نتایج دو دستور (انتقال از HI و انتقال از LO) فراهم شده‌اند که محتویات HI و LO را در یک رجیستر عمومی کپی می‌کنند. این دستورها به هم پیوسته‌اند: خواندن HI و LO قبل از اتمام عمل جبری ای که در HIو LO خواهد نوشت میسر نیست. دو دستور دیگر (انتقال به HI و انتقال به LO) محتویات یک رجیستر عمومی را در HI و LO کپی می‌کند. کاربرد این دستورها در رسیدگی به استثنا هاست. با کمک آن‌ها مقادیر قبلی HI و LO را پس از رسیدگی به استثنا بازیابی می‌کنیم. بین دستورهایی که HI و LO را می‌خوانند باید دو دستور دیگر بیاید که در HI و LO نمی‌نویسند.

#### پرش و انشعاب
پس از تمام دستورهای کنترل جریان میسپ I یک شکاف تأخیر انشعاب می‌آید. اگر این شکاف با دستوری که کار مفیدی انجام دهد پر نشده باشد، یک دستور بی عمل در آن قرار می‌گیرد. دستورهای انشعاب میسپ I محتوای یک رجیستر عمومی (rs) را با صفر یا یک رجیستر عمومی دیگر (rt) به عنوان اعداد صحیح علامت دار مقایسه می‌کنند و اگر شرط تعیین شده برقرار باشد انشعاب می‌کنند. برای محاسبهٔ مقصد پرش، آفست ۱۶ بیتی دو بیت به چپ شیفت داده می‌شود، نتیجهٔ ۱۸ بیتی با علامت گستش داده می‌شود، و حاصل ۳۲ بیتی به حاصل جمع شمارندهٔ برنامه (آدرس دستور) و ۸ اضافه می‌شود. پرش‌ها دو نوع اند: مطلق و غیر مستقیم. پرش‌های مطلق ("پرش" و "پرش و پیوند") برای محاسبهٔ آدرس مقصد instr_index را دو بیت به چپ شیفت می‌دهند و حاصل را به ۴ بیت مرتبه بالای آدرس دستوری که در شکاف تأخیر انشعاب آمده پیوند می‌زنند. پرش‌های غیرمستقیم آدرس دستور مقصد را از یک رجیستر عمومی (rs) می‌گیرند. آدرسی که در رجیستر است باید بر اساس کلمه تراز شده باشد، وگرنه پس از آن که دستوری که در شکاف تأخیر انشعاب قرار دارد اجرا شود یک استثنا پرتاب می‌شود. دستورهای انشعاب و پرشی که پیوند برقرار می‌کنند (به غیر از "پرش و پیوند رجیستر") آدرس بازگشت را در رجیستر عمومی ۳۱ ذخیره می‌کنند. دستور "پرش و پیوند رجیستر" اجازه می‌دهد آدرس برگشت در هر رجیستر عمومی قابل استفاده ای ذخیره شود.

#### استثنا
میپس I برای نرم‌افزارها دو دستور درتاب استثنا دارد: فراخوانی سیستمی و نقطه توقف. فراخوانی سیستمی توسط نرم‌افزارهای کاربری برای فراخوانی کرنلی استفاده می‌شود؛ و نقطه توقف برای انتقال کنترل به یک اشکال‌زدا (به انگلیسی: debugger) از  طریق رسیدگی‌کننده استثنائات کرنل به کار می‌رود. هر دو دستور دارای بخش کد ۲۰ بیتی هستند که می‌توانند حاوی اطلاعات مختص محیط سیستم عامل برای رسیدگی‌کننده استثنائات باشند.

### دستورهای نقطه شناور (FPU)
میپس دارای ۳۲ رجیستر نقطه شناور است. دو رجیستر برای اعداد دقت دوگانه (double precision) با هم جفت شده‌اند. رجیسترهای فرد تنها به عنوان بخشی از یک جفت رجیستر دقت دوگانه قابل استفاده‌اند، نه برای عملیات جبری یا انشعاب. در نتیجه برای اکثر دستورها ۱۶ رجیستر قابل استفاده موجود است (انتقال‌ها/کپی‌ها و باگذاری‌ها/ذخیره‌سازی‌ها تحت تأثر قرار نمی‌گیرند).

#### عملیات جبری

دقت یگانه (single precision) با پسوند s. نشان داده می‌شود و دقت دوگانه با پسوند d. نشان داده می‌شود.

#### انتقال داده

#### انشعاب

## میپس II
میپس II شکاف تأخیر بارگذاری را حذف کرد  و مجموعه‌های مختلفی از دستورها را اضافه کرد. دستورهایی برای پردازش چندگانه با حافظه مشترک، بارگذاری کلمهٔ پیوندیافته و ذخیرهٔ کلمهٔ مشروط اضافه کرد. مجموعه ای از دستورهای دام اگر شرط اضافه شد. این دستورها در صورت برقراری شرط باعث استثنا می‌شوند. برای تمام دستورهای انشعاب موجود نسخه‌های انشعاب گونه ای اضافه شد که هنگام انشعاب دستورهای داخل شکاف تأخیر انشعاب را اجرا می‌کنند.  در برخی موارد این دستورها با ایجاد امکان قرار دادن دستورهای مفید در شکاف تأخیر انشعاب باعث بهبود عملکرد می‌شوند.  دستورهای بارگذاری و ذخیرهٔ دوکلمه برای COP1 &#x2013; 3 اضافه شد. همانند دستورهای دسترسی حافظهٔ دیگر، در این بارگذاری‌ها و ذخیره‌ها دوکلمه باید به‌طور طبیعی تراز شده باشد.

همچنین دستورهای مختلفی به مجموعه دستورهای پردازنده کمکی نقطه شناور اضافه شد. یک دستور جذر نقطه شناور سازگار با IEEE754 اضافه شد. این دستور از هردو نوع عملوند دقت یگانه و دقت دوگانه پشتیبانی می‌کند. مجموعه دستورهایی برای تبدیل اعداد نقطه شناور دقت یگانه و دقت دوگانه به کلمات ۳۲ بیتی اضافه شد. این دستورها این امکان را فراهم می‌کردند که حالت گرد کردن IEEE به جای کنترل نقطه شناور و رجیستر وضعیت توسط دستورها مشخص شود و به این وسیلهٔ دستورهای تبدیل موجود را کامل‌تر کردند.

ریزپردازنده R6000 از شرکت MIPS Computer Systemsر (۱۹۸۹) اولین پیاده‌سازی میپس II است.  این ریزپردازنده برای سرورها طراحی شد. R6000 توسط Bipolar Integrated Technology ساخته و به بازار عرضه شد، اما با شکست تجاری مواجه شد. در اواسط دهه ۱۹۹۰، بسیاری از پردازنده‌های جدید ۳۲ بیتی میپس برای سیستم‌های جاسازی شده، پیاده‌سازی میپس II بودند، زیرا با معرفی معماری میپس III ی ۶۴ بیتی در ۱۹۹۱ میپس II تا معرفی میپس ۳۲ در ۱۹۹۹ جدیدترین معماری میپس ۳۲ بیتی باقی ماند. 

## میپس III
میپس III یک توسیع سازگار با گذشته از میپس II است که پشتیبانی از عملیات اعدادصحیح آدرس دهی ۶۴ بیتی حافظه را اضافه کرده‌است. نوع دادهٔ ۶۴ بیتی دوکلمه نامیده می‌شود، و میپس III رجیسترهای عمومی، رجیسترهای HI/LO، شمارندهٔ برنامه را به ۶۴ بیت توسعه داد تا بتواند از آن پشتیبانی کند. دستورهای جدیدی برای بارگذاری و ذخیرهٔ دوکلمه‌ها، انجام جمع، تفریق، ضرب و تقسیم اعداد صحیح و همچنین عملیات‌های شیفت بر روی آن‌ها و انتقال دوکلمه‌ها بین رجیسترهای عمومی و HI/LO اضافه شد. دستورهای موجود که در اصل برای عمل کردن بر روی کلمه‌های ۳۲ بیتی تعریف شده بودند، هرجا نیاز بود بازتعریف شدند تا بتوانند حاصل‌های ۳۲ بیتی را با علامت توسعه دهند و اکثر دستورها بتوانند با کلمه‌ها و دوکلمه‌ها یکسان برخورد کنند. از میان این دستورهای بازتعریف شده می‌توان به *بارگزاری کلمه* اشاره کرد. در میپس III این دستور کلمه‌ها را با علامت به ۶۴ بیت توسعه می‌دهد. برای کامل کردن *بارگزاری کلمه*، نسخه ای اضافه شد که با صفر توسعه می‌دهد.

ناتوانی قالب R در مشخص کردن مقدار کامل شیفت برای شیفت‌های ۶۴ بیتی (فیلد ۵ بیتی آن برای مقدار شیفت بسیار کوتاه‌تر از آن است مقدار شیفت برای دوکلمه‌ها را نشان دهد) باعث شد میپس III سه نسخه ۶۴ بیتی از هر دستور شیفت میپس I ارائه دهد. اولین نسخه، نسخهٔ ۶۴ بیتی دستورهای شیفت اصلی است، که برای مشخص کردن مقدار شیفت‌های ۰ تا ۳۱ بیتی استفاده می‌شود. دومین نسخه مشابه اولی است، اما به مقدار فیلد مقدار شیفت ۳۲۱۰ می‌افزاید تا مقدارهای ثابت شیفت ۳۲ تا ۶۴ بیت را بتوان مشخص کرد. نسخهٔ سوم مقدار شیفت را از ۶ بیت مرتبهٔ پایین یک رجیستر عمومی به دست می‌آورد.

میپس III سطوح امتیاز کرنل و کاربر که از قبل موجو بودند یک سطح *ناظر* افزود. این قابلیت تنها پردازندهٔ کنترل سیستم تعریف شده در پیاده‌سازی (پردازندهٔ کمکی ۰) را تحت تأثیر قرار داد.

میپس III پشتیبانی از پردازنده کمکی ۳ (CP3) را حذف کرد، و آپ کد آن را برای دستورهای دوکلمهٔ جدید استفاده کرد. پردازنده‌های کمکی باقی مانده دستورهایی برای انتقال دوکلمه‌ها بین رجیسترهای پردازنده کمکی و رجیسترهای عمومی به دست آوردند. رجیسترهای عمومی شناور (FGRs) به ۶۴ بیت توسعه یافتند و دیگر نیازی به دستورهایی برای محدود کردن استفاده از رجیسترها تنها به تعداد زوج وجود نداشت. این با نسخه‌های قبلی این معماری سازگار نبود؛ برای اداره کردن واحد نقطه شناور (FPU) میپس III در یک حالت سازگار با میپس I و II، یک بیت در رجیستر کنترل/وضعیت نقطه شناور استفاده می‌شود. رجیسترهای کنترل نقطه شناور توسعه نیافتند تا سازگاری حفظ شود. تنها دستورهای نقطه شناور اضافه شده دستورهای کپی دوکلمه‌ها بین CPU و FPU، تبدیل اعداد نقطه شناور دقت یگانه و دوگانه به دوکلمه‌های صحیح و برعکس هستند.

ریزپردازندهٔ 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، در کنسول بازی نینتندو ۶۴ استفاده شد. نینتندو ۶۴ در کنار پلی استیشن از بزرگ‌ترین استفاده‌کننده‌های پردازنده‌های معماری میپس در میانهٔ دهه ۱۹۹۰ بودند.

## میپس IV
میپس IV چهارمین نسخهٔ معماریست. این معماری یک فوق مجموعهٔ میپس III و با تمام نسخه‌های موجود میپس سازگار است. انگیزهٔ اصلی طراحی میپس IV بهبود عملکرد نقطه شناور (FP) بود. برای بهبود دسترسی به عملوندها، یک حالت آدرس دهی اندیس گذاری شده (پایه + اندیس که منبع هردو رجیسترهای عمومی است) برای بارگذاری‌ها و ذخیره‌سازی‌های FP اضافه شد، دستورهای فراخوانی زودرس نیز برای انجام فراخوانی زودرس حافظه و مشخص کردن راهنماهای کش (این‌ها هر دو حالت آدرس دهی وایه + آفست و پایه + اندیس را پشتیبانی می‌کردند) اضافه شد.

میپس IV قابلیت‌های گوناگونی برای بهبود موازی کاری در سطح دستورها اضافه کرد. برای سبک کردن بار گلوگاهی که در اثر یک بیت شرطی به وجود می‌آید، هفت بیت کد شرطی به رجیسترهای نقطه شناور کنترل و وضعیت اضافه شدند، و مجموع را به هشت رساندند. دستورهای مقایسه و انشعاب FP بازتعریف شدند تا بتوانند مشخص کنند کدام بیت شرطی نوشته یا خوانده می‌شود (به ترتیب)؛ و شکاف تأخیر بین یک انشعاب FP که یک بیت شرطی را می‌خواند و مقایسه FP قبلی که آن بیت را نوشته است حذف شد. پشتیبانی از پیش‌بینی جزئی در قالب دستورهای انتقال شرطی برای هردوی رجیسترهای عمومی و نقطه شناور اضافه شد؛ و یک پیاده‌سازی می‌توانست بین استثنائات دقیق یا مبهم تله‌های IEEE 754 انتخاب کند.

میپس IV دستورهای جبری FP جدیدی برای هردوی اعداد نقطه شناور دقت یگانه و دوگانه اضافه کرد: ترکیب جمع یا تفریق با ضرب، معکوس، معکوس ریشهٔ دوم. دستورهای ترکیب جمع یا تفریق و ضرب نقطه شناور یک یا دو گردکردن انجام می‌دهند (این امر در پیاده‌سازی تعریف می‌شود)، به ترتیب برای رسیدن به دقت مورد نیاز IEEE754 یا رفتن فراتر از آن. دستورهای نقطه مشترک معکوس و معکوس ریشه دوم از دقت مورد نیاز IEEE754 پیروی نمی‌کنند. و نتایج آن‌ها با دقت مورد نیاز در یک یا دو واحد جایگاه آخر اختلاف دارد (در پیاده‌سازی تعریف می‌شود). این دستورها هنگامی کاربرد دارند که تأخیر دستور مهم‌تر از دقت آن است.

اولین پیاده‌سازی میپس IV چیپست ریزپردازندهٔ R8000 شرکت MIPS Technologies بود (۱۹۹۴). طراحی R8000 در شرکت .Silicon Graphics,inc آغاز شد و تنها در ایستگاه‌های کاری و سرورهای پیشرفته برای کاربردهای علمی و فنی که در آن کارایی بالا در بار کاری نقطه شناور زیاد مهم بود. پیاده‌سازی‌های بعدی R10000 از شرکت MIPS Technologies (سال ۱۹۹۶) و R5000 از شرکت Quantum Effect Devicex (سال ۱۹۹۶) و RM7000 (سال ۱۹۹۸) بود. R10000، که توسط NEC Electronics و Toshiba ساخته و به بازار عرضه شد، و مشتقات آن توسط NEC و Pyramid Technology و .Silicon Graphics,inc و Tandem Computers (در میان دیگر شرکت‌ها) در ایستگاه‌های کاری، سرورها و ابررایانه‌ها به کار رفت. R5000 و R7000 در سیستم‌های جاگذاری شده پیشرفته شده، رایانه‌های شخصی و ایستگاه‌های کاری و سرورهای ابتدایی به کار رفت. یک مشتقات R5000 از Toshiba، ریزپردازندهٔ R5900، در Emotion Engine شرکت Sony Computer Entertainment در کنسول PlayStation 2 آن شرکت استفاده.

## میپس V
معرفی شده ار ۲۱ اکتبر ۱۹۹۶ در سمینار میکروپروسسور سال ۱۹۹۶ همراه با افزونهٔ Digital Media Extensions یا MDMX، میپس V برای بهبود عملکرد تحولات گرافیکی سه بعدی طراحی شد. در میانهٔ دهه ۱۹۹۰، یک کاربرد اصلی ریزپردازنده‌های غیر جاگذاری شدهٔ میپس، ایستگاه‌های کاری گرافیکی SGI بود. میپس V با افزونهٔ اعداد صحیح MDMX تکمیل شد تا یک سیستم کامل برای بهبود عملکرد برنامه‌های گرافیک سه بعدی فراهم آورد.

هیچگاه برای میپس V پیاده‌سازی ای معرفی نشد. در ۱۲ مه ۱۹۹۷، شرکت SGI خبر از ریزپردازنده‌های «H1» (ملقب به «Beast») و «H2» (ملقب به «Captain») داد. اولی قرار بود اولین پیاده‌سازی میپس V باشد، و بنا بود در نیمهٔ اول ۱۹۹۹ معرفی شود. پروژه‌های «H1» و «H2» بعدها ترکیب شده و در نهایت در سال ۱۹۹۸ لغو شدند. با این که هیچ پیاده‌سازی ای از میپس V وجود ندارد، میپس ۶۴ توزیع ۱ (۱۹۹۹) بر پایهٔ آن است تمام قابلیت‌های آن را در یک پردازندهٔ کمکی ۱ اختیاری (FPU) به نام Paired-Single حفظ کرده‌است.

میپس V نوع دادهٔ جدیدی معرفی کرد، یگانه جفت شده (PS)، که متشکل است از دو عدد نقطه شناور دقت یگانه (۳۲ بیتی) که در رجیسترهای ۶۴ بیتی نقطه شناور موجود ذخیره شده‌اند. صورت‌های دیگری از دستورهای نقطه شناور موجود برای عملیات جبری، مقایسه و انتقال شرطی اضافه شدند تا با این نوع داده به صورت SIMD کار کنند. دستورهای جدیدی برای بارگذاری، بازآرایی و تبدیل داده‌های PS اضافه شد.  این اولین مجموعه دستور برای استفاده از SIMD نقطه شناور با منابع موجود بود.

## میپس ۳۲/میپس۶۴
هنگامی که MIPS Technologies در سال ۱۹۹۸ از Silicon Graphics خارج شد، باری دیگر بر بازار جاگذاری شده تمرکز کرد. تا میپس V، هر نسخهٔ جدید فوق مجموعه از نسخه قبلی بود، اما این ویژگی مشکل ساز شد،  و تعریف معماری برای تعریف معماری ۳۲ بیتی و ۶۴ بیتی تغییر یافت: میپس ۳۲ و میپس ۶۴، هر دو در سال ۱۹۹۹ معرفی شدند. میپس۳۲ بر پایهٔ میپس II است همراه با برخی قابلیت‌های اضافه از میپس III، میپس IV و میپس V؛ میپس ۶۴ بر پایهٔ میپس V است. NEC و Toshiba و SiByte (که بعدها به مالکیت Broadcom درآمد) هرکدام به محض اعلام خبر میپس ۶۴ مجوزهای آن را گرفتند. از آن موقع به بعد Philips و LSI Logic و IDT و .Raza Microelectronics, Inc و Cavium و Loongson Technology و Semiconductor Ingenic نیز به آن‌ها پیوستند.

### میپس۳۲/میپس۶۴ توزیع ۱
اولین توزیع میپس۳۲، بر اساس میپسII، انتقال شرطی، دستورهای زودرس و سایر ویژگی‌های خانواده‌های R4000 و R5000 پردازنده‌های ۶۴ بیتی را اضافه کرد. اولین اولین توزیع میپس۶۴ یک حالت میپس۳۲ برای اجرای کدهای ۳۲ بیتی اضافه کرد. دستورهای MUL و MADD (ضرب جمع) که قبلاً در برخی از پیاده‌سازی‌ها در دسترس بود، به ویژگی‌های میپس۳۲ و میپس۶۴ اضافه شد، همان‌طور نیز دستورهای کنترل کش.

### میپس۳۲/میپس۶۴ توزیع ۲
### میپس۳۲/میپس۶۴ توزیع ۳
### میپس۳۲/میپس۶۴ توزیع ۵
در ۶ دسامبر ۲۰۱۲ اعلام شد. دلیل پرش از توزیع ۳ به ۵ آن است که عدد چهار در بسیاری از فرهنگ‌های آسیایی نحس تلقی می‌شود.

### میپس۳۲/میپس۶۴ توزیع ۶
میپس۳۲/میپس۶۴ توزیع ۶ در ۲۰۱۴ موارد زیر را اضافه کرد:
* یک خانواده جدید از انشعاب‌های بدون شکاف تأخیر:
** انشعاب‌های غیر شرطی (BC) و انشعاب و پیوند (BALC) با یک افست ۲۶ بیتی
** انشعاب شرطی اگر صفر/غیرصفر با یک افست ۲۱ بیتی،
** مجموعه ای کامل از شاخه‌های شرطی با علامت و بدون علامت برای مقایسه بین دو رجیستر (به عنوان مثال BGTUC) یا یک رجیستر و صفر (به عنوان مثال BGTZC)،
** مجموعه ای کامل از انشعاب و پیوند که یک رجیستر را با صفر مقایسه می‌کنند (به عنوان مثال BGTZALC)
* دستورهای پرش اندیس بدون شکاف تأخیر طراحی شده برای پشتیبانی از آدرس‌های مطلق بزرگ.
* دستورهایی برای بارگذاری مقادیر فوری ۱۶ بیتی در بیت‌های ۱۶، ۳۲ یا ۴۸، اجازه می‌دهد ثابت‌های بزرگ به راحتی تولید شوند.
* دستورهای بارگذاری وابسته به PC، همچنین تولید آدرس با آفست های (وابسته به PC) بزرگ.
* دستورهای معکوس‌کننده بیت‌ها و  ترازکننده بایت‌ها (پیش از این تنها با افزونهٔ DSP ممکن بود).
* دستورهای ضرب و جمع بازتعریف شدند تا برای نتایجشان از یک رجیستر استفاده کنند.
* دستورهایی که مقدار حقیقت تولید می‌کنند اکنون تمام صفر یا تمام یک تولید می‌کنند به جای تنها ست کردن یا پاک کردن بیت ۰.
* دستورهایی که از یک مقدار حقیقت استفاده می‌کنند به جای در نظر گرفتن فقط بیت ۰ اکنون تنها تمام صفرها را به عنوان غلط تفسیر می‌کنند.

دستورهای کم کاربرد حذف شده
* برخی انتقال‌های شرطی
* دستورهای انشعاب محتمل (در نسخه‌های قبلی بد دانسته شده بود).
* دستورهای دام سرریز با مقدار فوری ۱۶ بیتی
* دستورهای انباشت اعداد صحیح (رجیسترهای HI / LO با هم، به افزونهٔ تخصصیDSP منتقل شدند)
* دستورهای بارگذاری غیر تراز (LWL و LWR)، (نیازمند است اکثر بارگذاری‌ها و ذخیره‌سازی‌های معمولی دسترسی بد تراز شده را پشتیبانی کنند، احتمالاً از طریق به دام انداختن و افزودن یک دستور جدید(BALIGN))

رمزنگاری دستورها را بازآر است، تا فضا برای توسعه در آینده باز کند.

## میکرومیپس
معماری‌های میکرومیپس۶۴/۳۲ فوق مجموعه‌های معماری‌های میپس۳۲ و میپس۶۴ اند (به ترتیب) و برای جایگزینی افزونهٔ تخصصی میپسe۱۶ طراحی شده‌اند. یک ایراد میپسe۱۶ این است که پیش از پردازش هرکدام از دستورهای ۱۶ بیتی‌اش نیازمند یک تغییر حالت است. میکرومیپس از پراستفاده‌ترین دستورهای ۳۲بیتی نسخه‌هایی دارد که به صورت دستورهای ۱۶ بیتی کدگذاری شده‌اند. این امر اجازه می‌دهد برنامه‌ها دستورها ۱۶ و ۳۲ بیتی را بدون نیاز به تغییر حالت مخلوط کنند. میکرومیپس به همراه میپس۶۴/۳۲ توزیع ۳ معرفی شد، و هر توزیع میپس ۶۴/۳۲ بعد از آن یک نسخهٔ میکرومیپس۶۴/۳۲ متناظر دارد. یک پردازنده ممکن است میکرومیپس۶۴/۳۲ را پیاده‌سازی کند یا هردو میکرومیپس ۶۴/۳۲ و زیرمجموعه میپس۶۴/۳۲ متناظر با آن را. از میپس ۶۴/۳۲ به بعد، پشتیبانی میپسe۱۶ به پایان رسید و میکرومیپس تنها فرم فشرده سازی کد در میپس است.

## افزونه‌های تخصصی
ممیپس ۳۲ و میپس۶۴ پایه هردو می‌توانند تعدادی افزونه‌های معماری اختیاری بپذیرند، که به آن‌ها کلاً *افزونه‌های تخصصی*(ASEs) گفته می‌شود. این ASEها ویژگی‌هایی فراهم می‌کنند که بازده و عملکرد را در بارهای کاری خاصی مانند پردازش سیگنال دیجیتال را بهبود می‌بخشد.

### میپس MCU
عملکرد در کاربردهای مربوط به میکروکنترلرها را بهبود می‌بخشد. MCU ASE (افزونه تخصصی) برای بهبود بخشیدن پشتیبانی کنترل کنندهٔ وقفه توسعه داده شده، تأثیر وقفه را کاهش می‌دهد و کار کنترل ورودی خروجی ثانوی که معمولاً در طراحی سیستم‌های میکروکنترلر مورد نیاز است بهبود می‌بخشد.
* اولویت و تولید بردار جداگانه
* پشتیبانی از ۲۵۶ وقفه در حالت EIC (کنترل وقفه خارجی) و هشت پین وقفه سخت‌افزاری
* آدرس ۱۶ بیتی آفست برداری در اختیار می‌گزارد
* فراخوانی زودرس بردار استثنای وقفه
* مقدمهٔ وقفهٔ خودکار- سخت‌افزاری برای ذخیره و به روزرسانی وضعیت سیستم پیش از آغاز روال رسیدگی به وقفه اضافه می‌کند.
* خاتمهٔ خودکار وقفه - حالت سیستم را که قبلاً در پشته ذخیره شده‌است برای بازگشتن از وقفه بازیابی می‌کند.
* وقفه‌های زنجیره ای - از سرویس انتظار وقفه بدون نیاز به خروج از روال وقفهٔ اولیه پشتیبانی می‌کند، چرخه‌های مورد نیاز برای نگه‌داری و بازیابی وقفه‌های فعال متعدد را ذخیره می‌کند.
* پشتیبانی از فراخوانی زودرس آدرس بردای وقفه. تعداد چرخه‌های سرویس وقفه را با همپوشانی دسترسی‌های حافظه و تخلیهٔ خطوط لوله و اولویت بندی استثنائات کاهش می‌دهد.
* شامل دستورهای اتمی ست/پاک است که به بیت‌های داخل یک رجیستر I / O که معمولاً برای نظارت و کنترل توابع محیطی خارجی استفاده می‌شوند این توانایی را می‌دهد که بدون وقفه، تغییر داده شوند، و به این وسیله از امنیت عمل اطمینان حاصل می‌کند

### میپس۱۶
میپس۱۶ یک افزونهٔ تخصصی برای میپس I تا V است و توسط LSI Logic و MIPS Technologies طراحی و در ۲۱ اکتبر ۱۹۹۶ به همراه اولین پیاده‌سازی اش، پردازنده TinyRISC از شرکت LSI Logic معرفی شد. و به دنبال آن شرکت‌های NEC Electronics و Philips Semiconductors و Toshiba (و غیره) مجوز آن را خریداری کرده؛ و آن را به عنوان یک افزونه برای معماری‌های میپس I، میپس II و III پیاده‌سازی کردند. میپس ۱۶ با استفاده از دستورهای ۱۶ بیتی به جای ۳۲ بیتی اندازهٔ برنامه را تا ۴۰٪ کاهش می‌دهد، همچنین بازده انرژی و سرعت کش را بهبود می‌بخشد و از نظر کارکرد معادل معماری پایه اش است. این معماری توسط ابزارهای توسعهٔ نرم‌افزاری و سخت‌افزاری شرکت MIPS Technologies و شرکت‌های دیگر پشتیبانی می‌شود.

#### میپس e16
میپس e۱۶ نسخهٔ بهبود یافتهٔ میپس۱۶ است و در آغاز توسط میپس۳۲ و میپس۶۴ توزیع ۱ پشتیبانی می‌شد

#### میپس۲e16
میپس۲e۱۶ نسخه‌ای بهبود یافته از میپس۱۶ است که توسط میپس۳۲ و میپس۶۴ پشتیبانی می‌شود (تا توزیع ۵). توزیع ۶ آن را با میکرومیپس جایگزین کرد.

### میپس DSP
افزونهٔ تخصصی DSP یک افزونهٔ اختیاری برای میپس۳۲/میپس۶۴ توزیع ۲ و مجموعه دستورهای جدیدتر است و می‌تواند برای شتاب بخشیدن به گسترهٔ وسیعی از محاسبات «رسانه‌ای»، مشخصاً صدا و تصویر، به کار رود. ماژول DSP شامل یک مجموعه دستور و وضعیت خط لولهٔ اعداد صحیح است و نیاز به منطق اضافهٔ حداقلی برای پیاده‌سازی در هسته‌های پردازندهٔ میپس دارد. ویرایش ۲ این ASEدر نیمهٔ دوم ۲۰۰۶ معرفی شد. این ویرایش دسترهای جدیدی به ASE اصلی اضافه می‌کند، اما از هر نظر دیگر با آن سازگار بازگشتی است.

برخلاف اکثر معماری‌های میپس، این معماری نسبتاً مجموعه‌ای غیرعادی از عملیات است، که بسیاری از آن‌ها به خاطر ارتباطشان با برخی الگوریتم‌های کلیدی انتخاب شده‌اند.

ویژگی‌های اصلی جدید آن (در قیاس با میپس۳۲ اصلی):
* محاسبه دقیق (زمانی که یک محاسبه سرریز می‌شود، نزدیک‌ترین عدد به پاسخ بدون سرریز را ارئه می‌دهد).
* محاسبات نقطه ثابت بر روی کسرهای نقطه ثابت علامت‌دار ۳۲ و ۱۶ بیتی با دامنهٔ -۱ تا ۱ (این‌ها معمولاً با نام‌های «Q31» و «Q15» شناخته می‌شوند).
* دستورهای ضرب و ضرب-انباشت اعداد صحیح موجود، که حاصل را به یک انباشتگر هم‌اندازهٔ یک نقطه شناور دقت دوگانه (در CPUهای میپس۳۲ «hi/lo» و ۶۴ بیت نامیده می‌شود) منتقل می‌کند. افزونهٔ تخصصی DSP سه انباشتگر دیگر و چند صورت دیگر ضرب-انباشت اضافه می‌کند.
* دستورهای SIMD بر روی ۴ بایت بدون علامت یا ۲ مقدار ۱۶ بیتی که در یک رجیستر ۳۲ بیتی ذخیره شده‌اند عمل می‌کنند (نسخهٔ ۶۴ بیتی اوزونه تخصصی DSP بردارهای بزرگتر را نیز پشتیبانی می‌کند).
* عملیات SIMD عبارتند از عملیات جبری ابتدایی، شیفت‌ها و برخی عملیات از نوع ضرب-انباشت.

برای استفاده از افزونهٔ تخصصی میپس DSP، می‌توان:
* دستی در زبان اسمبلی کد زد، که وقت‌گیرترین روش استفاده از افزونهٔ تخصصی میپس DSP است، اما می‌تواند کدی با بهترین عملکرد نتیجه بدهد.
* از ماکروهای asm پشتیبانی شده توسط GCC استفاده کرد که دستورهای DSP را مستقیماً از کد C تولید می‌کنند.
* از توابع درونی (انگلیسی: intrinsics) پشتیبانی شده توسط GCC برای افزونهٔ تخصصی میپس DSP استفاده کرد.
* از انواع داده و عملگرهای نقطه‌ثابت در C که از آن‌ها GCC پشتیبانی می‌کند استفاده کرد. افزونهٔ تخصصی میپس DSP تنها معماری پردازنده‌ایست که از انواع دادهٔ نقطه ثابت در یک پردازندهٔ عمومی پشتیبانی می‌کند.
* از طریق گزینه بهینه‌ساز `ftree-vectorize-` از برداری سازی خودکار پشتیبانی شده توسط GCC استفاده کرد. برتری برداری سازی خودکار در این است که کامپایلر می‌تواند متغیرهای نرده‌ای (که می‌توانند از نوع عدد صحیح، نقطه ثابت یا نقطه شناور باشند) را برای استفاده خودکار از دستورهای SIMD شناسایی کند. در حالت آرمانی، هنگام استفاده از برداری سازی خودکار، دیگر نیازی نیست صریحاً از متغیرهای SIMD استفاده شود.

از تاریخ ۳۱ مه ۲۰۰۵ لینوکس 2.6.12-rc5 پشتیبانی از افزونهٔ تخصصی DSP را اضافه کرد. دقت شود برای آن که بتوان واقعاً از افزونهٔ تخصصی DSP استفاده کرد یک زنجیره ابزار که از این افزونه پشتیبانی می‌کند مورد نیاز است. GCC از قبل از DSP و DSPr2 پشتیبانی می‌کند.

### معماری میپس SIMD
افزونه‌هایی از مجموعه دستورهایی که برای شتاب بخشیدن به محاسبات چندرسانه‌ای طراحی شده‌اند.
* ۳۲ رجیستر برداری متشکل از ۱۶ عنصر برداری ۸ بیتی، ۸ عنصر برداری ۱۶ بیتی، ۴ عنصر برداری ۳۲ بیتی و ۲ عنصر برداری ۶۴ بیتی
* عملیات جبری موازی برداری بهینه بر روی داده‌های صحیح، نقطه ثابت و نقطه شناور
* عملیات بر روی عملوندهای مقدار مطلق
* گزینه‌های گرد کردن و اشباع موجود است.
* ضرب و ضرب-جمع دقت کامل
* تبدیل بین داده‌های صحیح، نقطه شناور و نقطه ثابت
* مجموعهٔ کامل دستورهای مقایسه و انشعاب در سطح بردار بدون هیچ پرچم شرطی
* عملیات بهم آمیختن بردار (یک بعدی) و آرایه (دو بعدی)
* دستورهای بارگذاری و ذخیره‌سازی نوع بندی شده برای عملیات مستق از اندیان
* منطبق بر استاندارد IEEE 754-2008 برای عملیات جبری نقطه شناور
* پرتاب استثنای نقطه شناور عنصر دقیق
* افزونه‌های نرده ای شوندهٔ ازپیش تعیین شده برای تراشه‌هایی با تعداد دروازه/ترانزیستور بالاتر
* سرعت دادن به کاربردهای دارای حجم محاسبات بالا در ارتباط با بهره‌برداری از پشتیبانی عمومی کامپایلر
* راه حل قابل برنامه‌ریزی نرم‌افزاری برای کاربردهای الکترونیکی مصرفی یا توابعی که توسط سخت‌افزار اختصاصی پوشش داده نشده‌اند.
* کاربردهای در حال ظهور در داده‌کاوی، استخراج ویژگی، پردازش عکس و فیلم، و ارتباط انسان و کامپیوتر
* محاسبات علمی با کارایی بالا

### [[مجازی‌سازی|مجازی سازی]] میپس
فناوری مجازی سازی پشتیبانی شده توسط سخت‌افزار

### [[چندریسمانی]] میپس
هر هستهٔ چندریسمانی میپس می‌تواند تا دو VPE (عنصر پردازش مجازی) را پشتیبانی کند. این VPEها یک خط لوله و همچنین منابع سخت‌افزاری دیگر را بین خود تقسیم می‌کنند. با این حال، از آنجا که هر VPE حاوی یک کپی کامل از وضعیت پردازنده از دید سیستم نرم‌افزاری است، یک سیستم عامل لینوکس SMP هر VPE را به عنوان یک پردازندهٔ مستقل می‌بیند. برای کاربردهای پردازش ریسمان ریزبخش‌تر، هر VPE می‌تواند تا نه TC اختصاص یافته میان دو VPE را پشتیبانی کند. TCها می‌توانند از یک واحد اجرای مشترک استفاده کنند اما هرکدام شمارندهٔ برنامه و فایل رجیستر هستهٔ خودشان را دارند تا هرکدام بتواند به یک ریسمان از نرم‌افزار رسیدگی کند. معماری میپس MT امکان اختصاص چرخه‌های پردازنده به ریسمان‌ها را فراهم می‌کند و اولویت ریسمان‌های مربوطه را با بلوک مدیریت کیفیت خدمات (QoS) اختیاری تنظیم می‌کند. این مسئله دو سازوکار اولویت بندی برای تعیین جریان اطلاعات در گذرگاه در اختیار می‌گزارد. اولین سازوکار به کاربر امکان اولویت دادن یک ریسمان نسبت به دیگری را می‌دهد. دومین سازوکار برای اختصاص دادن کسر خاصی از چرخه‌ها به یک ریسمان خاص استفاده می‌شود. ادغام کاربرد هردو سازوکار اجازه می‌دهد تا پهنای باند را به‌طور بهینه به مجموعه‌ای از ریسمان‌ها اختصاص داد، و کنترل بهتری بر روی تأخیرها داشت. در سیستم‌های بی درنگ، جبرگرایی در سطح سیستم اهمیت بسیار بالایی دارد، و بلوک QoS افزایش قابلیت پیش‌بینی رفتار سیستم را تسهیل می‌کند. طراحان سخت‌افزار سیستم‌های پیشرفته می‌توانند به جای بلوک استاندارد QoS شرکت MIPS Technologies از بلوکی که مشخصاً بر کاربرد آن‌ها منطبق شده‌است استفاده کنند.

امروزه ریزپردازنده‌های تک ریسمانی هنگام انتظار برای دسترسی به حافظه چرخه‌های بسیاری را تلف می‌کنند، و در نتیجه کارکرد سیستم را به میزان قابل ملاحظه ای کاهش می‌دهند. استفاده از چندریسمانی اثر تأخیر حافظه را با افزایش استفاده از پردازنده می‌پوشاند. هنگامی که یک ریسمان متوقف می‌شود، ریسمان‌های دیگر فوراً به خط لوله داده داده و اجرا می‌شوند، و نتیجهٔ آن افزایش قابل توجه عملکرد در تمام برنامه است. کاربر می‌تواند مقدار مشخصی از پهنای باند را به کارهای بی درنگ و در نتیجه یک کیفیت خدمات (QoS) تضمین شده به دست بیاورد. فناوری MT میپس داعم بر پیشرفت ریسمان‌ها نظارت می‌کند و به صورت پویا اصلاحات لازم را انجام می‌دهد تا الزامات بی درنگ را برآورده کند یا از آن‌ها فراتر رود. یک خط لولهٔ پردازنده در هنگام توافق‌های وابسته یا از دست رفتن کش می‌تواند با تعویض ریسمان‌ها به ۸۰ تا ۹۰ درصد بهره‌برداری برسد. نتیجهٔ همهٔ این‌ها افزایش قابل توجه قابلیت پاسخ گویی و در نتیجه بهبود تجربهٔ کاربری یک وسیلهٔ همراه است.

### میپس هوشمند
میپس هوشمند یک افزونهٔ تخصصی (ASE) طراحی شده توسط Gemplus International و MIPS Technologies است. این افزونه عملکرد نرم‌افزارهای کارت هوشمند را بهبود می‌بخشد و مصرف حافظهٔ آن‌ها را کاهش می‌دهد. میپس هوشمند از آنجا که کارت‌های هوشمند نیاز به توانایی‌های پردازنده‌های میپس۶۴ ندارند، تنها توسط میپس۳۲ پشتیبانی می‌شود. تعداد کمی از کارت‌های هوشمند از میپس هوشمند استفاده می‌کنند.

### MDMX
### میپس سه بعدی
## شبیه‌سازها
پلتفورم‌های مجازی باز (OVP) شامل شبیه‌ساز غیرتجاری آزادانه در دسترس OVPsim، یک کتابخانه از مدل‌های پردازنده‌ها، لوازم جانبی و پلتفورم‌ها، و APIهایی که به کاربر امکان توسعهٔ مدل‌های خود را می‌دهد، می‌شوند. مدل‌های موجود در کتابخانه متن بازاند، به زبان C نوشته شده‌اند، شامل هسته‌های ۳۲ بیتی میپس 4K و 24K و 34K و 74K و 1004K و 1074K و M14K و microAptiv و interAptiv و proAptiv و سری هسته‌های میپس ۶۴ بیت 5K می‌شوند. Imperas این مدل‌ها را تولید کرده و نگه‌داری می‌کند و به همراه MIPS Technologies آن‌ها تست شده‌اند و علامت MIPS-Verified (tm) دریافت کردند. برخی پلتفورم‌های نمونهٔ بر پایه میپس دارای هردو محیط فلزی ساده و پلتفورم‌هایی برای راه اندازی ایمیج‌های باینری دستکاری نشدهٔ لینوکس هستند. این برابرسازهای پلتفورم هم به صورت سورس و هم باینری در دسترس هستند و سریع، مجانی و غیرتجاری اند و استفاده از آن‌ها آسان است. OVPsim توسط Imperas توسعه یافته و نگه‌داری می‌شود. بسیار سریع است (صدها میلیون دستور در ثانیه) و برای رسیدگی به معماری‌ها و سیستم‌های چندهسته ای همگن و غیرهمگن ساخته شده‌است.

یک شبیه‌ساز مجانی میپس۳۲ (نسخه‌های قبلی تنها R2000/R3000 را شبیه‌سازی می‌کردند) برای استفاده‌های آموزشی به نام SPIM در دسترس است. EduMIPS64 یک شبیه‌ساز CPU میپس بین پلتفرمی گرافیکی GPL است که به زبان Java/Swing نوشته شده‌است. این شبیه‌ساز از زیرمجموعهٔ گسترده‌ای از میپس۶۴ ISA پشتیبانی می‌کند و به کاربر امکان می‌دهد که بتواند به صورت گرافیکی ببیند هنگامی که یک برنامهٔ اسمبلی توسط CPU اجرا می‌شود در خط لوله چه اتفاقی می‌افتد.

MARS برابرساز میپس بر پایهٔ رابط کاربر گرافیکی دیگری است که برای استفاده در آموزش، مشخصاً برای استفاده با Computer Organization and Design هنسی، طراحی شده‌است.

WebMIPS یک شبیه‌ساز میپس مبتنی بر مرورگر همراه با ارائهٔ تصویری یک پردازندهٔ خط لوله ای معمولی است. این شبیه‌ساز برای ردگیری رجیسترها هنگام اجرای گام‌به‌گام بسیار مفید است.

برابرساز آزاد پیشرفته تری در GXemul (که قبلاً به عنوان پروژه mips64emul شناخته می‌شد) و پروژه‌های QEMU در دسترس‌اند. این‌ها ریزپردازنده‌های میپس III و میپس IV مختلف را افزون بر تمام سیستم‌های کامپیوتری ای که از آن‌ها استفاده می‌کنند، شبیه‌سازی می‌کنند.

شبیه‌سازهای تجاری به ویژه برای استفادهٔ جاگذاری شدهٔ میپس موجود هستند، به عنوان مثال Wind RiverSimics (میپس 4Kc و 5Kc همچنین PMC RM9000 و QED RM7000 و Broadcom/Netlogic ec44000 وCavium Octeon I) و Imperas (تمام هسته‌های میپس۳۲ و میپس۶۴) VaST Systems (پردازنده‌های R3000 و R4000) و CoWare (میپس 4KE، میپس 24K، میپس 25Kf، و میپس 34K).

WepSIM یک شبیه‌ساز مبتنی بر مرورگر است که یک زیرمجموعه از دستورهای میپس در آن ریز برنامه‌ریزی شده‌است. این شبیه‌ساز در یادگیری چگونگی عملکرد یک CPU مفید است (روتین‌های میپس، دام‌ها، توقف‌ها، فراخوانی‌های سیستمی و غیره ریز برنامه‌ریزی شده‌اند)

## جستارهای وابسته
* DLX، معماری ای بسیار مشابه طراحی شده توسط جان ل. هنسی (معمار میپس) برای آموزشی
* لیست پردازنده‌های معماری میپس
* پردازنده‌های معماری میپس
## منابع

## برای مطالعهٔ بیشتر
* 
* 
* 
* 

## پیوند به بیرون
* MIPS Processors
* prpl Foundation (a non-profit foundation founded by Imagination Technologies to support the MIPS platform)
* MIPS Architecture history diagram
* Online MIPS emulator
* MIPS Instuctions - MIPS Instruction Set


رده:ریزپردازنده‌های باز
رده:صفحات با ترجمه بازبینی‌نشده
رده:فناوری‌های میپس
رده:معرفی‌شده‌های مرتبط با رایانه در ۱۹۸۵ (میلادی)
رده:معماری‌های مجموعه دستورالعمل