موضوع مقاله: معماری میپس | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # معماری میپس | مقدمه: در معماری میپس، دستورهای برنامه به چند مرحلهٔ پشت‌سرهم تقسیم می‌شوند؛ مراحلی مانند آوردن دستور از حافظه، تفسیر دستور، انجام محاسبه، دسترسی به حافظه و نوشتن نتیجه. | ## بخش 1: معماری میپس | این مراحل به‌صورت خط لوله‌ای (pipeline) انجام می‌شوند، شبیه یک خط تولید که هر بخش آن وظیفه‌ای مشخص دارد. به این ترتیب، چند دستور می‌توانند هم‌زمان در مراحل مختلف خط لوله پیش بروند و پردازنده کارایی بیشتری پیدا می‌کند. برخلاف برخی معماری‌ها که سخت‌افزار باید برای جلوگیری از تداخل میان دستورها مکث کند یا سرعت را کاهش دهد، در میپس پیچیدگی سخت‌افزار کمتر شده است. به همین دلیل این معماری به‌طور دقیق و ساده طراحی شده و اجرای دستورها قابل پیش‌بینی است. بیشتر عملیات نیز در رجیسترها انجام می‌شود که از نظر سرعت بسیار سریع‌تر از حافظهٔ اصلی‌اند. این ویژگی‌ها سبب می‌شوند میپس برای دستگاه‌هایی با نیاز به مصرف کم‌انرژی، سرعت بالا و هزینهٔ ساخت پایین مناسب باشد. این معماری در طیف گسترده‌ای از ابزارها به کار رفته است؛ از دستگاه‌های شبکه مانند روترها و مودم‌ها گرفته تا برخی کنسول‌های بازی و سامانه‌های توکار. به‌طور خلاصه، میپس نمونه‌ای از معماری پردازنده است که با ساده‌سازی و کاهش پیچیدگی سخت‌افزاری، اجرای کارآمد دستورها را ممکن می‌سازد. نسخه‌های متعددی از میپس وجود دارد از جمله: میپس IV ,III ,II, I و V؛ و همچنین پنج توریع میپس ۶۴/۳۲ (به ترتیب برای پیاده‌سازی ۳۲ و ۶۴ بیتی). تفاوت اساسی بین میپس ۶۴/۳۲ و میپس V-I تعریف پردازنده کمکی برای کنترل سیستم در حالت کرنل دارای حق ویژه علاوه بر معماری حالت کاربر است. چندین افزونه اختیاری نیز موجود است، از جمله میپس سه بعدی که مجموعه ای ساده از دستورت ممیز شناور چند داده است که به وظایف سه بعدی معمول اختصاص دارد، MDMX (یا MadMaX) که یک مجموعهٔ جامع تر چند داده برای اعداد صحیح است و از رجیسترهای ممیز شناور ۶۴ استفاده می‌کند، MIPS16e است که فشرده سازی را به جریان دستورها اضافه می‌کند تا برنامه‌ها از فضای کمتری را اشغال کنند، و میپس MT، که قابلیت چندریسمانی را اضافه می‌کند. اغلب دوره‌های معماری کامپیوتر در دانشگاه‌ها و مدارس فنی معماری میپس را مطالعه می‌کنند. از آوریل ۲۰۱۷، پردازنده‌های میپس در سامانه‌های نهفته مانند دروازه‌های محلی و روترها استفاده می‌شود. در طول تاریخ، کنسول‌های بازی مانند نینتندو ۶۴ ،پلی استیشن، پلی استیشن ۲ و پلی استیشن همراه از پردازنده‌های میپس استفاده می‌کردند. همچنین در دهه ۱۹۹۰ پردازنده‌های میپس محبوبیت زیادی در ابر رایانه‌ها داشتند، اما تمام این سیستم‌ها از فهرست TOP500 (پانصد ابررایانه برتر) حذف شده‌اند. این استفاده‌ها در ابتدا توسط کاربردهای جاسازی شده جا افتاد، اما در دهه ۱۹۹۰، میپس بخش بزرگی از بازار پردازنده‌های جاسازی شده را به خود اختصاص داده بود، و در دههٔ ۲۰۰۰، اکثر پردازنده‌های میپس در این زمینه به کار می‌رفتند. در اواسط تا اواخر دهه ۱۹۹۰ تخمین زده شد که یک در هر سه ریزپردازنده ریسک تولید شده یک پردازنده میپس بوده. میپس یک معماری مدولار است که تا چهار پردازنده کمکی را پشتیبانی می‌کند(CP۰/۱/۲/۳). در اصطلاح میپس، CP۰ پردازندهٔ کمکی کنترل سیستم است (بخشی حیاتی از پردازنده است که در میپس V-I در پیاده‌سازی تعریف شده‌است)، CP۱ یک واحد اختیاری ممیز شناور (FPU) است و CP۲ / ۳ پردازنده‌های کمکی اختیاری اند که در پیاده‌سازی تعریف می‌شوند. به عنوان مثال، در کنسول بازی پلی استیشن، CP۲ موتور تبدیل هندسی (GTE) است که پردازش هندسه را در گرافیک کامپیوتری سه بعدی تسهیل می‌کند. هدف برنامه ای که برای سال ۲۰۱۹ برنامه‌ریزی شده‌است، این است که دسترسی آزاد به اکثر نسخه‌های اخیر طراحی‌های ۳۲ بیتی و ۶۴ بیتی را بدون نیاز به هیچ گونه مجوز یا هزینه حق امتیاز فراهم کند و همچنین مجوز استفاده از اختراع‌های ثبت شدهٔ میپس موجود را در اختیار به شرکت کنندگان قرار دهد. هنگامی که میپس II معرفی شد، میپس به میپس I تغییر نام داد تا از نسخه جدید متمایز شود. MIPS یک معماری بارگذاری / ذخیره‌سازی (نام دیگر آن رجیستر رجیستر) است؛ به جز دستورهای بارگذاری / ذخیره‌سازی استفاده شده برای دسترسی به حافظه، تمام دستورها در رجیسترها عمل می‌کنند. برای دستورهای ضرب و تقسیم اعداد صحیح، که مستقل از دستورات دیگر اجرا می‌شود، یک جفت رجیستر ۳۲ بیتی، HI و LO ارائه شده‌است. مجموعهٔ کوچکی از دستورها برای کپی کردن داده‌ها بین رجیسترهای کلی و رجیسترهای HI / LO وجود دارد. از آنجا که طول دستورهای میپس ۳۲I بیت است و هم اندازهٔ حد طبیعی یک کلمه است، دو بیت مرتبه پایین‌تر همواره صفر است. علاوه بر آپ کد، دستورهای نوع R، سه رجیستر، یک فیلد برای اندازهٔ شیفت و یک فیلد برای تابع مشخص می‌کنند. دستورهای نوع I دو رجیستر و یک مقدار فوری ۱۶ بیتی را مشخص می‌کند؛ دستورهای نوع J از آپ کد همراه با مقصد پرش ۲۶ بیتی پیروی می‌کنند. در زیر سه قالب مورد استفاده برای مجموعه دستورهای اصلی آمده‌است: نوع -۳۱- قالب (بیت‌ها) -۰- R آپ کد (۶) rs (۵) rt (۵) rd (5) مقدار شیفت (۵) تابع (۶) I آپ کد (۶) rs (۵) rt (۵) فوری (۱۶) J آپ کد (۶) آدرس (۲۶) دستورهای CPU بارگذاری‌ها و ذخیره‌سازی‌ها میپس I دستورهایی برای بارگذاری و ذخیره بایت‌های ۸ بیتی، نیم کلمه‌های ۱۶ بیت و کلمات ۳۲ بیتی دارد. از آنجا که میپس I یک معماری ۳۲ بیتی است، برای بارگذاری مقادیر کمتر از ۳۲ بیت داده باید آن‌ها را یا با علامت یا با صفر به ۳۲ بیت رساند. منبع دستورهای بارگذاری برای پایه محتوای یک رجیستر عمومی (rs) است و نتیجه را در یک رجیستر عمومی دیگر (rt) می‌نویسند. منبع دستورهای ذخیره‌سازی برای پایه نیز محتوای یک رجیستر عمومی (rs) و برای داده‌های ذخیره شونده یک رجیستر عمومی دیگر (rt) است. تمام دستورهای بارگذاری و ذخیره، برای محاسبه آدرس مقدار پایه را با مقدار فوری ۱۶ بیتی که با علامت به ۳۲ بیت رسانده شده جمع می‌کنند. در میپس I همهٔ دسترسی‌های حافظه باید بر مرزهای طبیعی کلمه‌شان منطبق باشند، در غیر این صورت یک استثنا پرتاب می‌شود. برای پشتیبانی از دسترسی‌های بهینهٔ غیر منطبق حافظه، دستورهای بارگذاری/ذخیره‌سازی کلمه با پیشوندهای «left» یا «right» وجود دارد. دستورهایی که در شکاف تأخیر بارگذاری می‌آیند نمی‌تواند از داده‌های بارگذاری شده توسط دستور بارگذاری استفاده کنند. این دستورها عمل وندهای خود را از دو رجیستر عمومی (rs و rt) می‌گیرند، و نتیجه را در یک رجیستر عمومی سوم (rd) ذخیره می‌کنند. علاوه بر این، یکی از عملوندهای جمع می‌تواند یک مقدار فوری ۱۶ بیتی باشد (که با علامت به ۳۲ بیت گسترش یافته‌است). دستورهای جمع و تفریق دو نوع اند: به‌طور پیش فرض، اگر نتیجه سرریز شود، یک استثناء پرتاب می‌شود؛ دستورهایی که پسوند "unsigned" دارند استثنا پرتاب نمی‌کنند. این دستورها، عملوندهای خود را از دو رجیستر عمومی می‌گیرند و نتیجه را در رجیستر سوم ذخیره می‌کنند. همچنین یکی از عملوندهای دستورهای AND, OR و XOR می‌تواند یک مقدار فوری ۱۶ بیتی (که با صفر تا ۳۲ بیت توسعه یافته‌است) باشد. مجموعه دستورهای رابطه ای بسته به برقرار بودن یا نبودن رابطه در رجیستر مقصد مقدار صفر یا یک را ذخیره می‌کند. عملوندهای این دستورها دو رجیستر عمومی یا یک رجیستر و یک مقدار فوری ۱۶ بیتی (که با علامت تا ۳۲ بیت توسعه یافته‌است) هستند، و نتیجه نیز در یک رجیستر عمومی سوم ذخیره می‌شود. فرمهایی از این دستورها که پسوند "unsigned" دارند عملوندها را اعداد صحیح بدون علامت تفسیر می‌کنند (حتی آن‌هایی که از توسعهٔ با علامت یک مقدار فوری ۱۶ بیتی حاصل شده‌اند). دستور بارگذاری بالایی مقدار فوری، مقدار فوری ۱۶ بیتی را در ۱۶ بیت مرتبه بالاتر یک رجیستر عمومی کپی می‌کند. عملگر از یک رجیستر عمومی (rt) گرفته می‌شود، و نتیجه نیز در یک رجیستر عمومی دیگر (rd) ذخیره می‌شود. مقدار شیفت یا از یک رجیستر عمومی (rs) گرفته می‌شود یا یک " مقدار شیفت" ۵ بیتی (فیلد "sa"). عملوندهای این دستورها دو رجیستر عمومی اند و حاصل را در یک جفت رجیستر ۳۲ بیتی به نام‌های HI و LO ذخیره می‌کنند، آن‌ها ممکن است جدا از (و همزمان با) دستورهای دیگر CPU اجرا شوند. در ضرب نیمه‌های مرتبه بالا و مرتبه پایین حاصل ضرب ۶۴ بیتی به ترتیب در HI و LO ذخیره می‌شوند. برای دسترسی به نتایج دو دستور (انتقال از HI و انتقال از LO) فراهم شده‌اند که محتویات HI و LO را در یک رجیستر عمومی کپی می‌کنند. این دستورها به هم پیوسته‌اند: خواندن HI و LO قبل از اتمام عمل جبری ای که در HIو LO خواهد نوشت میسر نیست. اگر این شکاف با دستوری که کار مفیدی انجام دهد پر نشده باشد، یک دستور بی عمل در آن قرار می‌گیرد. دستورهای انشعاب میسپ I محتوای یک رجیستر عمومی (rs) را با صفر یا یک رجیستر عمومی دیگر (rt) به عنوان اعداد صحیح علامت دار مقایسه می‌کنند و اگر شرط تعیین شده برقرار باشد انشعاب می‌کنند. برای محاسبهٔ مقصد پرش، آفست ۱۶ بیتی دو بیت به چپ شیفت داده می‌شود، نتیجهٔ ۱۸ بیتی با علامت گستش داده می‌شود، و حاصل ۳۲ بیتی به حاصل جمع شمارندهٔ برنامه (آدرس دستور) و ۸ اضافه می‌شود. پرش‌های مطلق ("پرش" و "پرش و پیوند") برای محاسبهٔ آدرس مقصد instr_index را دو بیت به چپ شیفت می‌دهند و حاصل را به ۴ بیت مرتبه بالای آدرس دستوری که در شکاف تأخیر انشعاب آمده پیوند می‌زنند. آدرسی که در رجیستر است باید بر اساس کلمه تراز شده باشد، وگرنه پس از آن که دستوری که در شکاف تأخیر انشعاب قرار دارد اجرا شود یک استثنا پرتاب می‌شود. دستورهای انشعاب و پرشی که پیوند برقرار می‌کنند (به غیر از "پرش و پیوند رجیستر") آدرس بازگشت را در رجیستر عمومی ۳۱ ذخیره می‌کنند. | ## بخش 2: معماری میپس | دستور "پرش و پیوند رجیستر" اجازه می‌دهد آدرس برگشت در هر رجیستر عمومی قابل استفاده ای ذخیره شود. فراخوانی سیستمی توسط نرم‌افزارهای کاربری برای فراخوانی کرنلی استفاده می‌شود؛ و نقطه توقف برای انتقال کنترل به یک اشکال‌زدا (به انگلیسی: debugger) از طریق رسیدگی‌کننده استثنائات کرنل به کار می‌رود. هر دو دستور دارای بخش کد ۲۰ بیتی هستند که می‌توانند حاوی اطلاعات مختص محیط سیستم عامل برای رسیدگی‌کننده استثنائات باشند. رجیسترهای فرد تنها به عنوان بخشی از یک جفت رجیستر دقت دوگانه قابل استفاده‌اند، نه برای عملیات جبری یا انشعاب. در نتیجه برای اکثر دستورها ۱۶ رجیستر قابل استفاده موجود است (انتقال‌ها/کپی‌ها و باگذاری‌ها/ذخیره‌سازی‌ها تحت تأثر قرار نمی‌گیرند). دستورهایی برای پردازش چندگانه با حافظه مشترک، بارگذاری کلمهٔ پیوندیافته و ذخیرهٔ کلمهٔ مشروط اضافه کرد. برای تمام دستورهای انشعاب موجود نسخه‌های انشعاب گونه ای اضافه شد که هنگام انشعاب دستورهای داخل شکاف تأخیر انشعاب را اجرا می‌کنند. در برخی موارد این دستورها با ایجاد امکان قرار دادن دستورهای مفید در شکاف تأخیر انشعاب باعث بهبود عملکرد می‌شوند. همانند دستورهای دسترسی حافظهٔ دیگر، در این بارگذاری‌ها و ذخیره‌ها دوکلمه باید به‌طور طبیعی تراز شده باشد. مجموعه دستورهایی برای تبدیل اعداد نقطه شناور دقت یگانه و دقت دوگانه به کلمات ۳۲ بیتی اضافه شد. این دستورها این امکان را فراهم می‌کردند که حالت گرد کردن IEEE به جای کنترل نقطه شناور و رجیستر وضعیت توسط دستورها مشخص شود و به این وسیلهٔ دستورهای تبدیل موجود را کامل‌تر کردند. در اواسط دهه ۱۹۹۰، بسیاری از پردازنده‌های جدید ۳۲ بیتی میپس برای سیستم‌های جاسازی شده، پیاده‌سازی میپس II بودند، زیرا با معرفی معماری میپس III ی ۶۴ بیتی در ۱۹۹۱ میپس II تا معرفی میپس ۳۲ در ۱۹۹۹ جدیدترین معماری میپس ۳۲ بیتی باقی ماند. نوع دادهٔ ۶۴ بیتی دوکلمه نامیده می‌شود، و میپس III رجیسترهای عمومی، رجیسترهای HI/LO، شمارندهٔ برنامه را به ۶۴ بیت توسعه داد تا بتواند از آن پشتیبانی کند. دستورهای جدیدی برای بارگذاری و ذخیرهٔ دوکلمه‌ها، انجام جمع، تفریق، ضرب و تقسیم اعداد صحیح و همچنین عملیات‌های شیفت بر روی آن‌ها و انتقال دوکلمه‌ها بین رجیسترهای عمومی و HI/LO اضافه شد. دستورهای موجود که در اصل برای عمل کردن بر روی کلمه‌های ۳۲ بیتی تعریف شده بودند، هرجا نیاز بود بازتعریف شدند تا بتوانند حاصل‌های ۳۲ بیتی را با علامت توسعه دهند و اکثر دستورها بتوانند با کلمه‌ها و دوکلمه‌ها یکسان برخورد کنند. ناتوانی قالب R در مشخص کردن مقدار کامل شیفت برای شیفت‌های ۶۴ بیتی (فیلد ۵ بیتی آن برای مقدار شیفت بسیار کوتاه‌تر از آن است مقدار شیفت برای دوکلمه‌ها را نشان دهد) باعث شد میپس III سه نسخه ۶۴ بیتی از هر دستور شیفت میپس I ارائه دهد. اولین نسخه، نسخهٔ ۶۴ بیتی دستورهای شیفت اصلی است، که برای مشخص کردن مقدار شیفت‌های ۰ تا ۳۱ بیتی استفاده می‌شود. دومین نسخه مشابه اولی است، اما به مقدار فیلد مقدار شیفت ۳۲۱۰ می‌افزاید تا مقدارهای ثابت شیفت ۳۲ تا ۶۴ بیت را بتوان مشخص کرد. این قابلیت تنها پردازندهٔ کنترل سیستم تعریف شده در پیاده‌سازی (پردازندهٔ کمکی ۰) را تحت تأثیر قرار داد. پردازنده‌های کمکی باقی مانده دستورهایی برای انتقال دوکلمه‌ها بین رجیسترهای پردازنده کمکی و رجیسترهای عمومی به دست آوردند. رجیسترهای عمومی شناور (FGRs) به ۶۴ بیت توسعه یافتند و دیگر نیازی به دستورهایی برای محدود کردن استفاده از رجیسترها تنها به تعداد زوج وجود نداشت. این با نسخه‌های قبلی این معماری سازگار نبود؛ برای اداره کردن واحد نقطه شناور (FPU) میپس III در یک حالت سازگار با میپس I و II، یک بیت در رجیستر کنترل/وضعیت نقطه شناور استفاده می‌شود. تنها دستورهای نقطه شناور اضافه شده دستورهای کپی دوکلمه‌ها بین CPU و FPU، تبدیل اعداد نقطه شناور دقت یگانه و دوگانه به دوکلمه‌های صحیح و برعکس هستند. این ریزپردازنده برای استفاده در کامپیوترهای شخصی، استگاه کاری، و سرور طراحی شده بود.MIPS Computer Systems به شدت معماری میپس و R4000 را ترویج می‌داد، و کنسرسیوم محیط محاسباتی پیشرفته (ACE) را برای پیشبرد استاندارد محاسبهٔ ریسک پیشرفته (ARC) اش ایجاد کرد، که هدف ان جا انداختن میپس به عنوان پلتفورم غالب برای محاسبات شخصی بود. سایر کاربردهای R4000 شامل سیستم‌های جاگذاری شده پیشرفته و سوپر کامپیوترها می‌باشند. نینتندو ۶۴ در کنار پلی استیشن از بزرگ‌ترین استفاده‌کننده‌های پردازنده‌های معماری میپس در میانهٔ دهه ۱۹۹۰ بودند. برای بهبود دسترسی به عملوندها، یک حالت آدرس دهی اندیس گذاری شده (پایه + اندیس که منبع هردو رجیسترهای عمومی است) برای بارگذاری‌ها و ذخیره‌سازی‌های FP اضافه شد، دستورهای فراخوانی زودرس نیز برای انجام فراخوانی زودرس حافظه و مشخص کردن راهنماهای کش (این‌ها هر دو حالت آدرس دهی وایه + آفست و پایه + اندیس را پشتیبانی می‌کردند) اضافه شد. برای سبک کردن بار گلوگاهی که در اثر یک بیت شرطی به وجود می‌آید، هفت بیت کد شرطی به رجیسترهای نقطه شناور کنترل و وضعیت اضافه شدند، و مجموع را به هشت رساندند. دستورهای مقایسه و انشعاب FP بازتعریف شدند تا بتوانند مشخص کنند کدام بیت شرطی نوشته یا خوانده می‌شود (به ترتیب)؛ و شکاف تأخیر بین یک انشعاب FP که یک بیت شرطی را می‌خواند و مقایسه FP قبلی که آن بیت را نوشته است حذف شد. پشتیبانی از پیش‌بینی جزئی در قالب دستورهای انتقال شرطی برای هردوی رجیسترهای عمومی و نقطه شناور اضافه شد؛ و یک پیاده‌سازی می‌توانست بین استثنائات دقیق یا مبهم تله‌های IEEE 754 انتخاب کند. میپس IV دستورهای جبری FP جدیدی برای هردوی اعداد نقطه شناور دقت یگانه و دوگانه اضافه کرد: ترکیب جمع یا تفریق با ضرب، معکوس، معکوس ریشهٔ دوم. دستورهای ترکیب جمع یا تفریق و ضرب نقطه شناور یک یا دو گردکردن انجام می‌دهند (این امر در پیاده‌سازی تعریف می‌شود)، به ترتیب برای رسیدن به دقت مورد نیاز IEEE754 یا رفتن فراتر از آن. دستورهای نقطه مشترک معکوس و معکوس ریشه دوم از دقت مورد نیاز IEEE754 پیروی نمی‌کنند. و نتایج آن‌ها با دقت مورد نیاز در یک یا دو واحد جایگاه آخر اختلاف دارد (در پیاده‌سازی تعریف می‌شود). R5000 و R7000 در سیستم‌های جاگذاری شده پیشرفته شده، رایانه‌های شخصی و ایستگاه‌های کاری و سرورهای ابتدایی به کار رفت. در میانهٔ دهه ۱۹۹۰، یک کاربرد اصلی ریزپردازنده‌های غیر جاگذاری شدهٔ میپس، ایستگاه‌های کاری گرافیکی SGI بود. میپس V با افزونهٔ اعداد صحیح MDMX تکمیل شد تا یک سیستم کامل برای بهبود عملکرد برنامه‌های گرافیک سه بعدی فراهم آورد. اولی قرار بود اولین پیاده‌سازی میپس V باشد، و بنا بود در نیمهٔ اول ۱۹۹۹ معرفی شود. میپس V نوع دادهٔ جدیدی معرفی کرد، یگانه جفت شده (PS)، که متشکل است از دو عدد نقطه شناور دقت یگانه (۳۲ بیتی) که در رجیسترهای ۶۴ بیتی نقطه شناور موجود ذخیره شده‌اند. صورت‌های دیگری از دستورهای نقطه شناور موجود برای عملیات جبری، مقایسه و انتقال شرطی اضافه شدند تا با این نوع داده به صورت SIMD کار کنند. تا میپس V، هر نسخهٔ جدید فوق مجموعه از نسخه قبلی بود، اما این ویژگی مشکل ساز شد، و تعریف معماری برای تعریف معماری ۳۲ بیتی و ۶۴ بیتی تغییر یافت: میپس ۳۲ و میپس ۶۴، هر دو در سال ۱۹۹۹ معرفی شدند. میپس۳۲ بر پایهٔ میپس II است همراه با برخی قابلیت‌های اضافه از میپس III، میپس IV و میپس V؛ میپس ۶۴ بر پایهٔ میپس V است. میپس۳۲/میپس۶۴ توزیع ۱ اولین توزیع میپس۳۲، بر اساس میپسII، انتقال شرطی، دستورهای زودرس و سایر ویژگی‌های خانواده‌های R4000 و R5000 پردازنده‌های ۶۴ بیتی را اضافه کرد. دستورهای MUL و MADD (ضرب جمع) که قبلاً در برخی از پیاده‌سازی‌ها در دسترس بود، به ویژگی‌های میپس۳۲ و میپس۶۴ اضافه شد، همان‌طور نیز دستورهای کنترل کش. میپس۳۲/میپس۶۴ توزیع ۲ میپس۳۲/میپس۶۴ توزیع ۳ میپس۳۲/میپس۶۴ توزیع ۵ در ۶ دسامبر ۲۰۱۲ اعلام شد. دلیل پرش از توزیع ۳ به ۵ آن است که عدد چهار در بسیاری از فرهنگ‌های آسیایی نحس تلقی می‌شود. میپس۳۲/میپس۶۴ توزیع ۶ میپس۳۲/میپس۶۴ توزیع ۶ در ۲۰۱۴ موارد زیر را اضافه کرد: یک خانواده جدید از انشعاب‌های بدون شکاف تأخیر: انشعاب‌های غیر شرطی (BC) و انشعاب و پیوند (BALC) با یک افست ۲۶ بیتی انشعاب شرطی اگر صفر/غیرصفر با یک افست ۲۱ بیتی، مجموعه ای کامل از شاخه‌های شرطی با علامت و بدون علامت برای مقایسه بین دو رجیستر (به عنوان مثال BGTUC) یا یک رجیستر و صفر (به عنوان مثال BGTZC)، مجموعه ای کامل از انشعاب و پیوند که یک رجیستر را با صفر مقایسه می‌کنند (به عنوان مثال BGTZALC) دستورهای پرش اندیس بدون شکاف تأخیر طراحی شده برای پشتیبانی از آدرس‌های مطلق بزرگ. دستورهایی برای بارگذاری مقادیر فوری ۱۶ بیتی در بیت‌های ۱۶، ۳۲ یا ۴۸، اجازه می‌دهد ثابت‌های بزرگ به راحتی تولید شوند. دستورهای بارگذاری وابسته به PC، همچنین تولید آدرس با آفست های (وابسته به PC) بزرگ. دستورهای معکوس‌کننده بیت‌ها و ترازکننده بایت‌ها (پیش از این تنها با افزونهٔ DSP ممکن بود). دستورهایی که مقدار حقیقت تولید می‌کنند اکنون تمام صفر یا تمام یک تولید می‌کنند به جای تنها ست کردن یا پاک کردن بیت ۰. دستورهایی که از یک مقدار حقیقت استفاده می‌کنند به جای در نظر گرفتن فقط بیت ۰ اکنون تنها تمام صفرها را به عنوان غلط تفسیر می‌کنند. دستورهای کم کاربرد حذف شده برخی انتقال‌های شرطی دستورهای انشعاب محتمل (در نسخه‌های قبلی بد دانسته شده بود). دستورهای دام سرریز با مقدار فوری ۱۶ بیتی دستورهای انباشت اعداد صحیح (رجیسترهای HI / LO با هم، به افزونهٔ تخصصیDSP منتقل شدند) دستورهای بارگذاری غیر تراز (LWL و LWR)، (نیازمند است اکثر بارگذاری‌ها و ذخیره‌سازی‌های معمولی دسترسی بد تراز شده را پشتیبانی کنند، احتمالاً از طریق به دام انداختن و افزودن یک دستور جدید(BALIGN رمزنگاری دستورها را بازآر است، تا فضا برای توسعه در آینده باز کند. میکرومیپس معماری‌های میکرومیپس۶۴/۳۲ فوق مجموعه‌های معماری‌های میپس۳۲ و میپس۶۴ اند (به ترتیب) و برای جایگزینی افزونهٔ تخصصی میپسe۱۶ طراحی شده‌اند. یک ایراد میپسe۱۶ این است که پیش از پردازش هرکدام از دستورهای ۱۶ بیتی‌اش نیازمند یک تغییر حالت است. میکرومیپس از پراستفاده‌ترین دستورهای ۳۲بیتی نسخه‌هایی دارد که به صورت دستورهای ۱۶ بیتی کدگذاری شده‌اند. | ## بخش 3: معماری میپس | این امر اجازه می‌دهد برنامه‌ها دستورها ۱۶ و ۳۲ بیتی را بدون نیاز به تغییر حالت مخلوط کنند. میکرومیپس به همراه میپس۶۴/۳۲ توزیع ۳ معرفی شد، و هر توزیع میپس ۶۴/۳۲ بعد از آن یک نسخهٔ میکرومیپس۶۴/۳۲ متناظر دارد. یک پردازنده ممکن است میکرومیپس۶۴/۳۲ را پیاده‌سازی کند یا هردو میکرومیپس ۶۴/۳۲ و زیرمجموعه میپس۶۴/۳۲ متناظر با آن را. از میپس ۶۴/۳۲ به بعد، پشتیبانی میپسe۱۶ به پایان رسید و میکرومیپس تنها فرم فشرده سازی کد در میپس است. افزونه‌های تخصصی ممیپس ۳۲ و میپس۶۴ پایه هردو می‌توانند تعدادی افزونه‌های معماری اختیاری بپذیرند، که به آن‌ها کلاً افزونه‌های تخصصی(ASEs) گفته می‌شود. این ASEها ویژگی‌هایی فراهم می‌کنند که بازده و عملکرد را در بارهای کاری خاصی مانند پردازش سیگنال دیجیتال را بهبود می‌بخشد. MCU ASE (افزونه تخصصی) برای بهبود بخشیدن پشتیبانی کنترل کنندهٔ وقفه توسعه داده شده، تأثیر وقفه را کاهش می‌دهد و کار کنترل ورودی خروجی ثانوی که معمولاً در طراحی سیستم‌های میکروکنترلر مورد نیاز است بهبود می‌بخشد. اولویت و تولید بردار جداگانه پشتیبانی از ۲۵۶ وقفه در حالت EIC (کنترل وقفه خارجی) و هشت پین وقفه سخت‌افزاری آدرس ۱۶ بیتی آفست برداری در اختیار می‌گزارد فراخوانی زودرس بردار استثنای وقفه مقدمهٔ وقفهٔ خودکار- سخت‌افزاری برای ذخیره و به روزرسانی وضعیت سیستم پیش از آغاز روال رسیدگی به وقفه اضافه می‌کند. خاتمهٔ خودکار وقفه - حالت سیستم را که قبلاً در پشته ذخیره شده‌است برای بازگشتن از وقفه بازیابی می‌کند. وقفه‌های زنجیره ای - از سرویس انتظار وقفه بدون نیاز به خروج از روال وقفهٔ اولیه پشتیبانی می‌کند، چرخه‌های مورد نیاز برای نگه‌داری و بازیابی وقفه‌های فعال متعدد را ذخیره می‌کند. تعداد چرخه‌های سرویس وقفه را با همپوشانی دسترسی‌های حافظه و تخلیهٔ خطوط لوله و اولویت بندی استثنائات کاهش می‌دهد. میپس ۱۶ با استفاده از دستورهای ۱۶ بیتی به جای ۳۲ بیتی اندازهٔ برنامه را تا ۴۰٪ کاهش می‌دهد، همچنین بازده انرژی و سرعت کش را بهبود می‌بخشد و از نظر کارکرد معادل معماری پایه اش است. میپس e16 میپس e۱۶ نسخهٔ بهبود یافتهٔ میپس۱۶ است و در آغاز توسط میپس۳۲ و میپس۶۴ توزیع ۱ پشتیبانی می‌شد میپس۲e16 میپس۲e۱۶ نسخه‌ای بهبود یافته از میپس۱۶ است که توسط میپس۳۲ و میپس۶۴ پشتیبانی می‌شود (تا توزیع ۵). میپس DSP افزونهٔ تخصصی DSP یک افزونهٔ اختیاری برای میپس۳۲/میپس۶۴ توزیع ۲ و مجموعه دستورهای جدیدتر است و می‌تواند برای شتاب بخشیدن به گسترهٔ وسیعی از محاسبات «رسانه‌ای»، مشخصاً صدا و تصویر، به کار رود. ماژول DSP شامل یک مجموعه دستور و وضعیت خط لولهٔ اعداد صحیح است و نیاز به منطق اضافهٔ حداقلی برای پیاده‌سازی در هسته‌های پردازندهٔ میپس دارد. این ویرایش دسترهای جدیدی به ASE اصلی اضافه می‌کند، اما از هر نظر دیگر با آن سازگار بازگشتی است. برخلاف اکثر معماری‌های میپس، این معماری نسبتاً مجموعه‌ای غیرعادی از عملیات است، که بسیاری از آن‌ها به خاطر ارتباطشان با برخی الگوریتم‌های کلیدی انتخاب شده‌اند. ویژگی‌های اصلی جدید آن (در قیاس با میپس۳۲ اصلی): محاسبه دقیق (زمانی که یک محاسبه سرریز می‌شود، نزدیک‌ترین عدد به پاسخ بدون سرریز را ارئه می‌دهد). محاسبات نقطه ثابت بر روی کسرهای نقطه ثابت علامت‌دار ۳۲ و ۱۶ بیتی با دامنهٔ -۱ تا ۱ (این‌ها معمولاً با نام‌های «Q31» و «Q15» شناخته می‌شوند). دستورهای ضرب و ضرب-انباشت اعداد صحیح موجود، که حاصل را به یک انباشتگر هم‌اندازهٔ یک نقطه شناور دقت دوگانه (در CPUهای میپس۳۲ «hi/lo» و ۶۴ بیت نامیده می‌شود) منتقل می‌کند. دستورهای SIMD بر روی ۴ بایت بدون علامت یا ۲ مقدار ۱۶ بیتی که در یک رجیستر ۳۲ بیتی ذخیره شده‌اند عمل می‌کنند (نسخهٔ ۶۴ بیتی اوزونه تخصصی DSP بردارهای بزرگتر را نیز پشتیبانی می‌کند). عملیات SIMD عبارتند از عملیات جبری ابتدایی، شیفت‌ها و برخی عملیات از نوع ضرب-انباشت. برای استفاده از افزونهٔ تخصصی میپس DSP، می‌توان: دستی در زبان اسمبلی کد زد، که وقت‌گیرترین روش استفاده از افزونهٔ تخصصی میپس DSP است، اما می‌تواند کدی با بهترین عملکرد نتیجه بدهد. از انواع داده و عملگرهای نقطه‌ثابت در C که از آن‌ها GCC پشتیبانی می‌کند استفاده کرد. افزونهٔ تخصصی میپس DSP تنها معماری پردازنده‌ایست که از انواع دادهٔ نقطه ثابت در یک پردازندهٔ عمومی پشتیبانی می‌کند. برتری برداری سازی خودکار در این است که کامپایلر می‌تواند متغیرهای نرده‌ای (که می‌توانند از نوع عدد صحیح، نقطه ثابت یا نقطه شناور باشند) را برای استفاده خودکار از دستورهای SIMD شناسایی کند. در حالت آرمانی، هنگام استفاده از برداری سازی خودکار، دیگر نیازی نیست صریحاً از متغیرهای SIMD استفاده شود. از تاریخ ۳۱ مه ۲۰۰۵ لینوکس 2.6.12-rc5 پشتیبانی از افزونهٔ تخصصی DSP را اضافه کرد. دقت شود برای آن که بتوان واقعاً از افزونهٔ تخصصی DSP استفاده کرد یک زنجیره ابزار که از این افزونه پشتیبانی می‌کند مورد نیاز است. معماری میپس SIMD افزونه‌هایی از مجموعه دستورهایی که برای شتاب بخشیدن به محاسبات چندرسانه‌ای طراحی شده‌اند. ۳۲ رجیستر برداری متشکل از ۱۶ عنصر برداری ۸ بیتی، ۸ عنصر برداری ۱۶ بیتی، ۴ عنصر برداری ۳۲ بیتی و ۲ عنصر برداری ۶۴ بیتی عملیات جبری موازی برداری بهینه بر روی داده‌های صحیح، نقطه ثابت و نقطه شناور عملیات بر روی عملوندهای مقدار مطلق گزینه‌های گرد کردن و اشباع موجود است. ضرب و ضرب-جمع دقت کامل تبدیل بین داده‌های صحیح، نقطه شناور و نقطه ثابت مجموعهٔ کامل دستورهای مقایسه و انشعاب در سطح بردار بدون هیچ پرچم شرطی عملیات بهم آمیختن بردار (یک بعدی) و آرایه (دو بعدی) دستورهای بارگذاری و ذخیره‌سازی نوع بندی شده برای عملیات مستق از اندیان منطبق بر استاندارد IEEE 754-2008 برای عملیات جبری نقطه شناور پرتاب استثنای نقطه شناور عنصر دقیق افزونه‌های نرده ای شوندهٔ ازپیش تعیین شده برای تراشه‌هایی با تعداد دروازه/ترانزیستور بالاتر سرعت دادن به کاربردهای دارای حجم محاسبات بالا در ارتباط با بهره‌برداری از پشتیبانی عمومی کامپایلر راه حل قابل برنامه‌ریزی نرم‌افزاری برای کاربردهای الکترونیکی مصرفی یا توابعی که توسط سخت‌افزار اختصاصی پوشش داده نشده‌اند. کاربردهای در حال ظهور در داده‌کاوی، استخراج ویژگی، پردازش عکس و فیلم، و ارتباط انسان و کامپیوتر محاسبات علمی با کارایی بالا مجازی سازی میپس فناوری مجازی سازی پشتیبانی شده توسط سخت‌افزار چندریسمانی میپس هر هستهٔ چندریسمانی میپس می‌تواند تا دو VPE (عنصر پردازش مجازی) را پشتیبانی کند. با این حال، از آنجا که هر VPE حاوی یک کپی کامل از وضعیت پردازنده از دید سیستم نرم‌افزاری است، یک سیستم عامل لینوکس SMP هر VPE را به عنوان یک پردازندهٔ مستقل می‌بیند. برای کاربردهای پردازش ریسمان ریزبخش‌تر، هر VPE می‌تواند تا نه TC اختصاص یافته میان دو VPE را پشتیبانی کند. TCها می‌توانند از یک واحد اجرای مشترک استفاده کنند اما هرکدام شمارندهٔ برنامه و فایل رجیستر هستهٔ خودشان را دارند تا هرکدام بتواند به یک ریسمان از نرم‌افزار رسیدگی کند. معماری میپس MT امکان اختصاص چرخه‌های پردازنده به ریسمان‌ها را فراهم می‌کند و اولویت ریسمان‌های مربوطه را با بلوک مدیریت کیفیت خدمات (QoS) اختیاری تنظیم می‌کند. این مسئله دو سازوکار اولویت بندی برای تعیین جریان اطلاعات در گذرگاه در اختیار می‌گزارد. دومین سازوکار برای اختصاص دادن کسر خاصی از چرخه‌ها به یک ریسمان خاص استفاده می‌شود. ادغام کاربرد هردو سازوکار اجازه می‌دهد تا پهنای باند را به‌طور بهینه به مجموعه‌ای از ریسمان‌ها اختصاص داد، و کنترل بهتری بر روی تأخیرها داشت. در سیستم‌های بی درنگ، جبرگرایی در سطح سیستم اهمیت بسیار بالایی دارد، و بلوک QoS افزایش قابلیت پیش‌بینی رفتار سیستم را تسهیل می‌کند. امروزه ریزپردازنده‌های تک ریسمانی هنگام انتظار برای دسترسی به حافظه چرخه‌های بسیاری را تلف می‌کنند، و در نتیجه کارکرد سیستم را به میزان قابل ملاحظه ای کاهش می‌دهند. استفاده از چندریسمانی اثر تأخیر حافظه را با افزایش استفاده از پردازنده می‌پوشاند. هنگامی که یک ریسمان متوقف می‌شود، ریسمان‌های دیگر فوراً به خط لوله داده داده و اجرا می‌شوند، و نتیجهٔ آن افزایش قابل توجه عملکرد در تمام برنامه است. کاربر می‌تواند مقدار مشخصی از پهنای باند را به کارهای بی درنگ و در نتیجه یک کیفیت خدمات (QoS) تضمین شده به دست بیاورد. فناوری MT میپس داعم بر پیشرفت ریسمان‌ها نظارت می‌کند و به صورت پویا اصلاحات لازم را انجام می‌دهد تا الزامات بی درنگ را برآورده کند یا از آن‌ها فراتر رود. یک خط لولهٔ پردازنده در هنگام توافق‌های وابسته یا از دست رفتن کش می‌تواند با تعویض ریسمان‌ها به ۸۰ تا ۹۰ درصد بهره‌برداری برسد. نتیجهٔ همهٔ این‌ها افزایش قابل توجه قابلیت پاسخ گویی و در نتیجه بهبود تجربهٔ کاربری یک وسیلهٔ همراه است. این افزونه عملکرد نرم‌افزارهای کارت هوشمند را بهبود می‌بخشد و مصرف حافظهٔ آن‌ها را کاهش می‌دهد. میپس هوشمند از آنجا که کارت‌های هوشمند نیاز به توانایی‌های پردازنده‌های میپس۶۴ ندارند، تنها توسط میپس۳۲ پشتیبانی می‌شود. MDMX میپس سه بعدی شبیه‌سازها پلتفورم‌های مجازی باز (OVP) شامل شبیه‌ساز غیرتجاری آزادانه در دسترس OVPsim، یک کتابخانه از مدل‌های پردازنده‌ها، لوازم جانبی و پلتفورم‌ها، و APIهایی که به کاربر امکان توسعهٔ مدل‌های خود را می‌دهد، می‌شوند. برخی پلتفورم‌های نمونهٔ بر پایه میپس دارای هردو محیط فلزی ساده و پلتفورم‌هایی برای راه اندازی ایمیج‌های باینری دستکاری نشدهٔ لینوکس هستند. این برابرسازهای پلتفورم هم به صورت سورس و هم باینری در دسترس هستند و سریع، مجانی و غیرتجاری اند و استفاده از آن‌ها آسان است. بسیار سریع است (صدها میلیون دستور در ثانیه) و برای رسیدگی به معماری‌ها و سیستم‌های چندهسته ای همگن و غیرهمگن ساخته شده‌است. یک شبیه‌ساز مجانی میپس۳۲ (نسخه‌های قبلی تنها R2000/R3000 را شبیه‌سازی می‌کردند) برای استفاده‌های آموزشی به نام SPIM در دسترس است. این شبیه‌ساز از زیرمجموعهٔ گسترده‌ای از میپس۶۴ ISA پشتیبانی می‌کند و به کاربر امکان می‌دهد که بتواند به صورت گرافیکی ببیند هنگامی که یک برنامهٔ اسمبلی توسط CPU اجرا می‌شود در خط لوله چه اتفاقی می‌افتد. این‌ها ریزپردازنده‌های میپس III و میپس IV مختلف را افزون بر تمام سیستم‌های کامپیوتری ای که از آن‌ها استفاده می‌کنند، شبیه‌سازی می‌کنند. | ## جمع‌بندی | WepSIM یک شبیه‌ساز مبتنی بر مرورگر است که یک زیرمجموعه از دستورهای میپس در آن ریز برنامه‌ریزی شده‌است.