معماری میپس

میپس I

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

رجیسترها

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

دستورهای نقطه شناور (FPU)

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

میپس 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 (ضرب جمع) که قبلاً در برخی از پیاده‌سازی‌ها در دسترس بود، به ویژگی‌های میپس۳۲ و میپس۶۴ اضافه شد، همان‌طور نیز دستورهای کنترل کش.

میپس۳۲/میپس۶۴ توزیع ۵

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

میکرومیپس

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

افزونه‌های تخصصی

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

میپس۱۶

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

میپس e16

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

میپس۲e16

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

مجازی سازی میپس

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

چندریسمانی میپس

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

میپس هوشمند

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

شبیه‌سازها

پلتفورم‌های مجازی باز (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 مفید است (روتین‌های میپس، دام‌ها، توقف‌ها، فراخوانی‌های سیستمی و غیره ریز برنامه‌ریزی شده‌اند)