معماری میپس
میپس (به انگلیسی: MIPS مخفف Microprocessor without Interlocked Pipelined Stages) یک معماری مجموعه دستورالعمل (ISA) برای کامپیوترهای کم دستور (RISC) است که توسط MIPS Technologies (MIPS Computer Systems سابق) توسعه یافتهاست. معماری اولیه میپس ۳۲ بیتی بود، و نسخههای ۶۴ بیتی بعداً به آن اضافه شد. نسخههای متعددی از میپس وجود دارد از جمله: میپس IV ,III ,II, I و V؛ و همچنین پنج توریع میپس ۶۴/۳۲ (به ترتیب برای پیادهسازی ۳۲ و ۶۴ بیتی). از آوریل ۲۰۱۷، آخرین نسخه میپس ۶۴/۳۲ توزیع ۶ است. تفاوت اساسی بین میپس ۶۴/۳۲ و میپس V-I تعریف پردازنده کمکی برای کنترل سیستم در حالت کرنل دارای حق ویژه علاوه بر معماری حالت کاربر است.
طراح | MIPS Technologies, Imagination Technologies |
---|---|
بیتها | ۶۴ بیت (۳۲ به ۶۴) |
تاریخ معرفی | ۱۹۸۵ |
طرح | معماری ریسک |
گونه | رجیستر - رجیستر |
کدگذاری | ثابت |
شاخهبندی | ثبات شرطی |
اندیان | دوگانه |
اندازه صفحه | ۴ کیلوبایت |
افزونهها | MDMX، MIPS-3D |
آزاد بودن | بله و بدون بهره مالکیت |
ثباتها | |
همه منظوره | ۳۲ |
ممیز شناور | ۳۲ |
چندین افزونه اختیاری نیز موجود است، از جمله میپس سه بعدی که مجموعه ای ساده از دستورت ممیز شناور چند داده است که به وظایف سه بعدی معمول اختصاص دارد، 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 از آپ کد همراه با مقصد پرش ۲۶ بیتی پیروی میکنند.
در زیر سه قالب مورد استفاده برای مجموعه دستورهای اصلی آمدهاست:
نوع | -۳۱- قالب (بیتها) -۰- | |||||
---|---|---|---|---|---|---|
R | آپ کد
(۶) | rs
(۵) | rt
(۵) | rd
(5) | مقدار شیفت (۵) | تابع (۶) |
I | آپ کد (۶) | rs
(۵) | rt
(۵) | فوری (۱۶) | ||
J | آپ کد (۶) | آدرس (۲۶) |
دستورهای CPU
بارگذاریها و ذخیرهسازیها
میپس I دستورهایی برای بارگذاری و ذخیره بایتهای ۸ بیتی، نیم کلمههای ۱۶ بیت و کلمات ۳۲ بیتی دارد. تنها یک حالت آدرس دهی پشتیبانی میشود: پایه + جابجایی. از آنجا که میپس I یک معماری ۳۲ بیتی است، برای بارگذاری مقادیر کمتر از ۳۲ بیت داده باید آنها را یا با علامت یا با صفر به ۳۲ بیت رساند. دستورهای بارگذاری با پیشوند "unsigned" دادهها را با صفر توسعه میدهند و در غیر اینصورت با علامت. منبع دستورهای بارگذاری برای پایه محتوای یک رجیستر عمومی (rs) است و نتیجه را در یک رجیستر عمومی دیگر (rt) مینویسند. منبع دستورهای ذخیرهسازی برای پایه نیز محتوای یک رجیستر عمومی (rs) و برای دادههای ذخیره شونده یک رجیستر عمومی دیگر (rt) است. تمام دستورهای بارگذاری و ذخیره، برای محاسبه آدرس مقدار پایه را با مقدار فوری ۱۶ بیتی که با علامت به ۳۲ بیت رسانده شده جمع میکنند. در میپس I همهٔ دسترسیهای حافظه باید بر مرزهای طبیعی کلمهشان منطبق باشند، در غیر این صورت یک استثنا پرتاب میشود. برای وشتیبانی از دسترسیهای بهینهٔ غیر منطبق حافظه، دستورهای بارگذاری/ذخیرهسازی کلمه با پیشوندهای «left» یا «right» وجود دارد. تمام دستورهای بارگذاری با یک شکاف تأخیر بارگذاری دنبال میشود. دستورهایی که در شکاف تأخیر بارگذاری میآیند نمیتواند از دادههای بارگذاری شده توسط دستور بارگذاری استفاده کنند. شکاف تأخیر بارگذاری را میتوان با دستورهایی که به بارگذاری بستگی ندارند پر کرد. اگر چنین دستورهایی یافت نشد یک دستور بی عمل جایگزین آن میشود
نام دستور | یادیار | قالب | رمزگذاری | |||||
---|---|---|---|---|---|---|---|---|
بارگذاری بایت | LB | I | 32 10 | rs | rt | offset | ||
بارگذاری نیم کلمه | LH | I | 33 10 | rs | rt | offset | ||
بارگذاری کلمه چپ | LWL | I | 34 10 | rs | rt | offset | ||
بارگذاری کلمه | LW | I | 35 10 | rs | rt | offset | ||
بارگذاری بایت بدون علامت | LBU | I | 36 10 | rs | rt | offset | ||
بارگذاری نیم کلمه بدون علامت | LHU | I | 37 10 | rs | rt | offset | ||
بارگذاری کلمه راست. | LWR | I | 38 10 | rs | rt | offset | ||
ذخیره بایت | SB | I | 40 10 | rs | rt | offset | ||
ذخیره نیم کلمه | SH | I | 41 10 | rs | rt | offset | ||
ذخیره کلمه چپ | SWL | I | 42 10 | rs | rt | offset | ||
ذخیره کلمه | SW | I | 43 10 | rs | rt | offset | ||
ذخیره کلمه راست. | SWR | I | 46 10 | rs | rt | offset |
واحد محاسبه و منطق
میپس I دستورهایی برای جمع و تفریق دارد. این دستورها عمل وندهای خود را از دو رجیستر عمومی (rs و rt) میگیرند، و نتیجه را در یک رجیستر عمومی سوم (rd) ذخیره میکنند. علاوه بر این، یکی از عملوندهای جمع میتواند یک مقدار فوری ۱۶ بیتی باشد (که با علامت به ۳۲ بیت کسترش یافتهاست). دستورهای جمع و تفریق دو نوع اند: بهطور پیش فرض، اگر نتیجه سرریز شود، یک استثناء پرتاب میشود؛ دستورهایی که پسوند "unsigned" دارند استثنا پرتاب نمیکنند. کنترل سرریز نتیجه را به صورت یک عدد صحیح متمم دو ۳۲ بیتی تفسیر میکند.
میپس I دستورهای برای انجام اعمال منطقی AND, OR, XOR و NOR بر روی بیتها دارد. این دستورها، عملوندهای خود را از دو رجیستر عمومی میگیرند و نتیجه را در رجیستر سوم ذخیره میکنند. همچنین یکی از عملوندهای دستورهای AND, OR و XOR میتواند یک مقدار فوری ۱۶ بیتی (که با صفر تا ۳۲ بیت توسعه یافتهاست) باشد.
مجموعه دستورهای رابطه ای بسته به برقرار بودن یا نبودن رابطه در رجیستر مقصد مقدار صفر یا یک را ذخیره میکند. عملوندهای این دستورها دو رجیستر عمومی یا یک رجیستر و یک مقدار فوری ۱۶ بیتی (که با علامت تا ۳۲ بیت توسعه یافتهاست) هستند، و نتیجه نیز در یک رجیستر عمومی سوم ذخیره میشود. بهطور پیش فرض عملوندها به عنوان اعداد صحیح علامت دار تفسیر میشوند. فرمهایی از این دستورها که پسوند "unsigned" دارند عملوندها را اعداد صحیح بدون علامت تفسیر میکنند (حتی آنهایی که از توسعهٔ با علامت یک مقدار فوری ۱۶ بیتی حاصل شدهاند).
دستور بارگذاری بالایی مقدار فوری، مقدار فوری ۱۶ بیتی را در ۱۶ بیت مرتبه بالاتر یک رجیستر عمومی کپی میکند. این دستور همراه با دستور Or استفاده میشود تا یک مقدار فوری ۳۲ بیتی را در یک رجیستر بارگداری کند
نام دستور | یادآور | قالب | رمزگزاری | |||||
---|---|---|---|---|---|---|---|---|
جمع | ADD | R | 010 | rs | rt | rd | 010 | 3210 |
جمع بدون علامت | ADDU | R | 010 | rs | rt | rd | 010 | 3310 |
تفریق | SUB | R | 010 | rs | rt | rd | 010 | 3410 |
تفریق بدون علامت | SUBU | R | 010 | rs | rt | rd | 010 | 3510 |
And | AND | R | 010 | rs | rt | rd | 010 | 3610 |
Or | OR | R | 010 | rs | rt | rd | 010 | 3710 |
Exclusive Or | XOR | R | 010 | rs | rt | rd | 010 | 3810 |
Nor | NOR | R | 010 | rs | rt | rd | 010 | 3910 |
یک اگر کمتر | SLT | R | 010 | rs | rt | rd | 010 | 4210 |
یک اگر کمتر بدون علامت | SLTU | R | 010 | rs | rt | rd | 010 | 4310 |
جمع مقدار فوری | ADDI | I | 810 | rs | rd | مقدار فوری | ||
جمع مقدار فوری بدون علامت | ADDIU | I | 910 | $s | $d | مقدار فوری | ||
یک اگر کمتر از مقدار فوری | SLTI | I | 1010 | $s | $d | مقدار فوری | ||
یک اگر کمتر از مقدار فوری بدون علامت | SLTIU | I | 1110 | $s | $d | مقدار فوری | ||
And مقدار فوری | ANDI | I | 1210 | $s | $d | مقدار فوری | ||
Or مقدار فوری | ORI | I | 1310 | $s | $d | مقدار فوری | ||
Exclusive Or مقدار فوری | XORI | I | 1410 | $s | $d | مقدار فوری | ||
بار گزاری بالایی مقدار فوری | LUI | I | 1510 | 010 | $d | مقدار فوری |
شیفتها
میپس I دستورهایی برای شیفتهای چپ و راست منطقی و راست جبری دارد. عملگر از یک رجیستر عمومی (rt) گرفته میشود، و نتیجه نیز در یک رجیستر عمومی دیگر (rd) ذخیره میشود. مقدار شیفت یا از یک رجیستر عمومی (rs) گرفته میشود یا یک " مقدار شیفت" ۵ بیتی (فیلد "sa").
نام دستور | یادآور | قالب | رمزگزاری | |||||
---|---|---|---|---|---|---|---|---|
شیفت چپ منطقی | SLL | R | 010 | 010 | rt | rd | sa | 010 |
شیفت راست منطقی | SRL | R | 010 | 010 | rt | rd | sa | 210 |
شیفت راست جبری | SRA | R | 010 | 010 | rt | rd | sa | 310 |
شیفت متغیر چپ منطقی | SLLV | R | 010 | rs | rt | rd | 010 | 410 |
شیفت متغیر راست. | SRLV | R | 010 | rs | rt | rd | 010 | 610 |
شیفت متغیر راست جبری | SRAV | R | 010 | rs | rt | rd | 010 | 710 |
ضرب و تقسیم
میپس 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 نمینویسند.
نام دستور | یادآور | قالب | رمزگزاری | |||||
---|---|---|---|---|---|---|---|---|
انتقال از HI | MFHI | R | 010 | 010 | 010 | rd | 010 | 1610 |
انتقال به HI | MTHI | R | 010 | rs | 010 | 010 | 010 | 1710 |
انتقال از LO | MFLO | R | 010 | 010 | 010 | rd | 010 | 1810 |
انتقال به LO | MTLO | R | 010 | rs | 010 | 010 | 010 | 1910 |
ضرب | MULT | R | 010 | rs | rt | 010 | 010 | 2410 |
ضرب بدون علامت | MULTU | R | 010 | rs | rt | 010 | 010 | 2510 |
تقسیم | DIV | R | 010 | rs | rt | 010 | 010 | 2610 |
تقسیم بدون علامت | DIVU | R | 010 | rs | rt | 010 | 010 | 2710 |
پرش و انشعاب
پس از تمام دستورهای کنترل جریان میسپ I یک شکاف تأخیر انشعاب میآید. اگر این شکاف با دستوری که کار مفیدی انجام دهد پر نشده باشد، یک دستور بی عمل در آن قرار میگیرد. دستورهای انشعاب میسپ I محتوای یک رجیستر عمومی (rs) را با صفر یا یک رجیستر عمومی دیگر (rt) به عنوان اعداد صحیح علامت دار مقایسه میکنند و اگر شرط تعیین شده برقرار باشد انشعاب میکنند. برای محاسبهٔ مقصد پرش، آفست ۱۶ بیتی دو بیت به چپ شیفت داده میشود، نتیجهٔ ۱۸ بیتی با علامت گستش داده میشود، و حاصل ۳۲ بیتی به حاصل جمع شمارندهٔ برنامه (آدرس دستور) و ۸ اضافه میشود. پرشها دو نوع اند: مطلق و غیر مستقیم. پرشهای مطلق ("پرش" و "پرش و پیوند") برای محاسبهٔ آدرس مقصد instr_index را دو بیت به چپ شیفت میدهند و حاصل را به ۴ بیت مرتبه بالای آدرس دستوری که در شکاف تأخیر انشعاب آمده پیوند میزنند. پرشهای غیرمستقیم آدرس دستور مقصد را از یک رجیستر عمومی (rs) میگیرند. آدرسی که در رجیستر است باید بر اساس کلمه تراز شده باشد، وگرنه پس از آن که دستوری که در شکاف تأخیر انشعاب قرار دارد اجرا شود یک استثنا پرتاب میشود. دستورهای انشعاب و پرشی که پیوند برقرار میکنند (به غیر از "پرش و پیوند رجیستر") آدرس بازگشت را در رجیستر عمومی ۳۱ ذخیره میکنند. دستور "پرش و پیوند رجیستر" اجازه میدهد آدرس برگشت در هر رجیستر عمومی قابل استفاده ای ذخیره شود.
نام دستور | یادآور | قالب | رمزگزاری | |||||
---|---|---|---|---|---|---|---|---|
پرش رجیستر | JR | R | 010 | rs | 010 | 010 | 010 | 810 |
پرش و پیوند رجیستر | JALR | R | 010 | rs | 010 | rd | 010 | 910 |
انشعاب اگر کمتر از صفر | BLTZ | I | 110 | rs | 010 | آفست | ||
انشعاب اگر بزرگتر مساوی صفر | BGEZ | I | 110 | rs | 110 | آفست | ||
انشعاب اگر کمتر از صفر و پیوند | BLTZAL | I | 110 | rs | ۱۶ | آفست | ||
انشعاب گر بزرگتر مساوی صفر و پیوند | BGEZAL | I | 110 | rs | ۱۷ | آفست | ||
پرش | J | J | 210 | instr_index | ||||
پرش و پیوند | JAL | J | 310 | instr_index | ||||
ورش اگر مساوی | BEQ | I | 410 | rs | rt | آفست | ||
پرش اگر نامساوی | BNE | I | 510 | rs | rt | آفست | ||
پرش اگر کوچکتر مساوی صفر | BLEZ | I | 610 | rs | 010 | آفست | ||
پرش اگر بزرگتر از صفر | BGTZ | I | 710 | rs | 010 | آفست |
استثنا
میپس I برای نرمافزارها دو دستور درتاب استثنا دارد: فراخوانی سیستمی و نقطه توقف. فراخوانی سیستمی توسط نرمافزارهای کاربری برای فراخوانی کرنلی استفاده میشود؛ و نقطه توقف برای انتقال کنترل به یک اشکالزدا (به انگلیسی: debugger) از طزیق رسیدگیکننده استثنائات کرنل به کار میرود. هر دو دستور دارای بخش کد ۲۰ بیتی هستند که میتوانند حاوی اطلاعات مختص محیط سیستم عامل برای رسیدگیکننده استثنائات باشند.
نام دستور | یادآور | قالب | رمزگزاری | |||||
---|---|---|---|---|---|---|---|---|
فراخوانی سیستمی | SYSCALL | ? | 010 | Code | 1210 | |||
نقطه توقف | BREAK | ? | 010 | Code | 1310 |
دستورهای نقطه شناور (FPU)
میپس دارای ۳۲ رجیستر نقطه شناور است. دو رجیستر برای اعداد دقت دوگانه (double precision) با هم جفت شدهاند. رجیسترهای فرد تنها به عنوان بخشی از یک جفت رجیستر دقت دوگانه قابل استفادهاند، نه برای عملیات جبری یا انشعاب. در نتیجه برای اکثر دستورها ۱۶ رجیستر قابل استفاده موجود است (انتقالها/کپیها و باگذاریها/ذخیرهسازیها تحت تأثر قرار نمیگیرند).
عملیات جبری
نام | سینتکس دستور | معنا | آپکد | rs | rt | rd | sham | funct |
---|---|---|---|---|---|---|---|---|
جمع نقطه شناور | add.s $x,$y,$z | $x = $y + $z | 1710 | 010 | $z | $y | $x | 010 |
تفریق نقطه شناور | sub.s $x,$y,$z | $x = $y - $z | 1710 | 010 | $z | $y | $x | 110 |
ضرب نقطه شناور | mul.s $x,$y,$z | $x = $y * $z | 1710 | 010 | $z | $y | $x | 210 |
تقسیم نقطه شناور | div.s $x,$y,$z | $x = $y / $z | 1710 | 010 | $z | $y | $x | 310 |
جمع نقطه شناور | add.d $x,$y,$z | $x = $y + $z | 1710 | 110 | $z | $y | $x | 010 |
تفریق نقطه شناور | sub.d $x,$y,$z | $x = $y - $z | 1710 | 110 | $z | $y | $x | 110 |
ضرب نقطه شناور | mul.d $x,$y,$z | $x = $y * $z | 1710 | 110 | $z | $y | $x | 210 |
تقسیم نقطه شناور | div.d $x,$y,$z | $x = $y / $z | 1710 | 110 | $z | $y | $x | 310 |
مقایسه نقطه شناور (eq,ne,lt,le,gt,ge) | c.lt.s $f2,$f4 | cond = ($f2 <$f4) | ||||||
مقایسه نقطه شناور (eq,ne,lt,le,gt,ge) | c.lt.d $f2,$f4 | cond = ($f2 <$f4) |
دقت یگانه (single precision) با پسوند s. نشان داده میشود و دقت دوگانه با پسوند d. نشان داده میشود.
انتقال داده
نام | سینتکس دستور | معنا | قالب | آپکد | funct | توضیحات/زمرگزاری |
---|---|---|---|---|---|---|
بارگزاری کلمه در پردازنده کمکی | lwcZ $x,CONST ($y) | Coprocessor[Z].DataRegister[$x] = Memory[$y + CONST] | I | کلمه ۴ بایتی ذخیره شده در [MEM[$y+CONST را در رجیستر دادهٔ پردازنده کمکی بارگذاری میکند. توسعه علامتدار | ||
ذخیره از پردازنده کمکی | swcZ $x,CONST ($y) | Memory[$y + CONST] = Coprocessor[Z].DataRegister[$x] | I | کلمهٔ ۴ بایتی موجود در رجیستر دادهٔ پردازنده کمکی را در [MEM[$y+CONST ذخیره میکند. توسعه علامتدار |
انشعاب
نام | نحوه آموزش | معنا | فرمت | آپکد | fact | توضیحات / رمزگذاری |
---|---|---|---|---|---|---|
انشعاب اگر FP درست | bc1t 100 | if (cond)
goto PC+4+100
| انشعاب وابسته به PC اگر شرط FP | |||
انشعاب اگر FP غلط | bc1f 100 | if (!cond)
goto PC+4+100
| انشعاب وابسته به PC اگر شرط متمم |
میپس II
میپس II شکاف تأخیر بارگذاری را حذف کرد و مجموعههای مختلفی از دستورها را اضافه کرد. دستورهایی برای پردازش چندگانه با حافظه مشترک، بارگذاری کلمهٔ پیوندیافته و ذخیرهٔ کلمهٔ مشروط اضافه کرد. مجموعه ای از دستورهای دام اگر شرط اضافه شد. این دستورها در صورت برقراری شرط باعث استثنا میشوند. برای تمام دستورهای انشعاب موجود نسخههای انشعاب گونه ای اضافه شد که هنگام انشعاب دستورهای داخل شکاف تأخیر انشعاب را اجرا میکنند. در برخی موارد این دستورها با ایجاد امکان قرار دادن دستورهای مفید در شکاف تأخیر انشعاب باعث بهبود عملکرد میشوند. دستورهای بارگذاری و ذخیرهٔ دوکلمه برای COP1 – 3 اضافه شد. همانند دستورهای دسترسی حافظهٔ دیگر، در این بارگذاریها و ذخیرهها دوکلمه باید بهطور طبیعی تراز شده باشد.
همچنین دستوهای مختلفی به مجموعه دستورهای پردازنده کمکی نقطه شناور اضافه شد. یک دستور جذر نقطه شناور سازگار با IEEE754 اضافه شد. این دستور از هردو نوع عملوند دقت یگانه و دقت دوگانه پشتیبانی میکند. مجموعه دستورهایی برای تبدیل اعداد نقطه شناور دقت یگانه و دقت دوگانه به کلمات ۳۲ بیتی اضافه شد. این دستورها این امکان را فراهم میکردند که حالت گرد کردن IEEE به جای کنترل نقطه شناور و رجیستر وضعیت توسط دستورها مشخص شود و به این وسیلهٔ دستورهای تبدیل موجود را کاملتر کردند.
ریزپردازنده R6000 از شرکت MIPS Computer Systemsر (۱۹۸۹) اولین پیادهسازی میپس II است. این ریزپردازنده برای سرورها طراحی شد. R6000 توسط Bipolar Integrated Technology ساخته و به بازار عرضه شد، اما با شکست تجاری مواجه شد. در اواسط دهه ۱۹۹۰، بسیاری از پردازندههای جدید ۳۲ بیتی میپس برای سیستمهای جاسازی شده، پیادهسازی میپس II بودند، زیرا با معرفی معماری میپس III ی ۶۴ بیتی در ۱۹۹۱ میپس II تا معرفی میپس ۳۲ در ۱۹۹۹ جدیدترین معماری میپس ۳۲ بیتی باقی ماند.
نام | یادآور |
---|---|
همزمان کردن حافظه مشترک | SYNC |
دام اگر بزرگتر مساوی | TGE |
دام اگر بزرگتر مساوی بدون علامت | TGEU |
دام اگر کمتر | TLT |
دام اگر کمتر بدون علامت | TLTU |
دام اگر برابر | TEQ |
دام اگر نابرابر | TNE |
انشعاب محتمل اگر کوچکتر مساوی صفر | BLEZL |
انشعاب محتمل اگر بزرگتر مساوی صفر | BGEZL |
دام اگر بزرگتر مساوی مقدار فوری | TGEI |
دام اگر بزرگتر مساوی مقدار فوری بدون علامت | TGEIU |
دام اگر کمتر از مقدار فوری | TLTI |
دام اگر کمتر از مقدار فوری بدون علامت | TLTIU |
دام اگر مساوی مقدار فوری | TEQI |
دام اگر نامساوی مقدار فوری | TNEI |
انشعاب و پیوند محتمل اگر کمتر از صفر | BLTZALL |
انشعاب و پیوند محتمل اگر بزرگتر مساوی صفر | BGEZAL |
جذر نقطه شناور | SQRT.S |
جذر نقطه شناور | SQRT.D |
گرد کردن نقطه شناور به کلمه نقطه ثابت | ROUND.S |
گرد کردن نقطه شناور به کلمه نقطه ثابت | ROUND.D |
کوتاه کردن نقطه شناور به کلمه نقطه ثابت | TRUNC.S |
کوتاه کردن نقطه شناور به کلمه نقطه ثابت | TRUNC.D |
سقف کردن نقطه شناور به کلمه نقطه ثابت | CEIL.S |
سقف کردن نقطه شناور به کلمه نقطه ثابت | CEIL.D |
کف کردن نقطه شناور به کلمه نقطه ثابت | FLOOR.S |
کف کردن نقطه شناور به کلمه نقطه ثابت | FLOOR.D |
انشعاب محتمل اگر FP غلط | BC1FL |
انشعاب محتمل اگر FP درست | BC1TL |
انشعاب محتمل اگر صفر | BEQL |
انشعاب محتمل اگر غیر صفر | BNEL |
انشعاب محتمل اگر کمتر از صفر | BLTZL |
انشعاب محتمل اگر بزرگتر مساوی از صفر | BGTZL |
بارگزاری پیوندخورده | LL |
بارگزاری دوکلمه در پردازنده کمکی ۱ | LDC1 |
بارگزاری دوکلمه در پردازنده کمکی ۲ | LDC2 |
بارگزاری دوکلمه در پردازنده کمکی ۳ | LDC3 |
ذخیرهسازی مشروط | SC |
ذخیرهسازی دوکلمه از پردازنده کمکی ۱ | SDC1 |
ذخیرهسازی دوکلمه از پردازنده کمکی ۲ | SDC2 |
ذخیرهسازی دوکلمه از پردازنده کمکی ۳ | SDC3 |
میپس 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، در کنسول بازی نینتندو ۶۴ استفاده شد. نینتندو ۶۴ در کنار پلی استیشن از بزرگترین استفادهکنندههای پردازندههای معماری میپس در میانهٔ دهه ۱۹۹۰ بودند.
میپس 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 مفید است (روتینهای میپس، دامها، توقفها، فراخوانیهای سیستمی و غیره ریز برنامهریزی شدهاند)
منابع
- ↑ «درباره معماری میپس بیشتر بدانید».
- ↑ Patterson, David (2014). Computer Organization and Design. http://booksite.elsevier.com/9780124077263/downloads/historial%20perspectives/section_4.16.pdf: Elsevier. pp. 4.16-4. ISBN 978-0-12-407726-3.
- ↑ قیمت، چارلز (سپتامبر 1995). مجموعه آموزش MIPS IV (ویرایش 3.2)، MIPS Technologies, Inc.
- ↑ Sweetman, Dominic (1999). See MIPS Run. Morgan Kaufmann Publishers, Inc. ISBN 1-55860-410-3.
- ↑ "MIPS32 Architecture". Imagination Technologies. Archived from the original on 3 January 2014. Retrieved January 4, 2014.
- ↑ "MIPS64 Architecture". Imagination Technologies. Archived from the original on 3 January 2014. Retrieved January 4, 2014.
- ↑ "MIPS-3D ASE". Imagination Technologies. Archived from the original on 3 January 2014. Retrieved January 4, 2014.
- ↑ "MIPS16e". Imagination Technologies. Archived from the original on 3 January 2014. Retrieved January 4, 2014.
- ↑ "MIPS Multithreading". Imagination Technologies. Archived from the original on 3 January 2014. Retrieved January 4, 2014.
- ↑ University of California, Davis. "ECS 142 (Compilers) References & Tools page". Archived from the original on March 21, 2011. Retrieved May 28, 2009.
- ↑ Rubio, Victor P. "A FPGA Implementation of a MIPS RISC Processor for Computer Architecture Education" (PDF). New Mexico State University. Archived from the original (PDF) on April 15, 2012. Retrieved December 22, 2011.
- ↑ "Wave Computing Extends AI Lead by Targeting Edge of Cloud Through Acquisition of MIPS". 2018-06-15. Archived from the original on 25 November 2020. Retrieved 5 February 2019.
- ↑ "Wave Computing® Launches the MIPS Open Initiative To Accelerate Innovation for the Renowned MIPS® Architecture". 2018-12-17. Archived from the original on 28 July 2021. Retrieved 5 February 2019.
- ↑ "MIPS Processor ISA To Be Open-Sourced In 2019 - Phoronix".
- ↑ Yoshida, Junko (December 17, 2018). "MIPS Goes Open Source". EE Times.
- ↑ "Silicon Graphics Introduces Enhanced MIPS Architecture to Lead the Interactive Digital Revolution". Silicon Graphics, Inc. October 21, 1996. Archived from the original on July 10, 2012.
- ↑ Gwennap, Linley (November 18, 1996). "Digital, MIPS Add Multimedia Extensions"" (PDF). Microprocessor Report. 10 (15): 24–28. Archived from the original (PDF) on July 20, 2011.
- ↑ "Silicon Graphics Previews New High-Performance MIPS Microprocessor Roadmap" (Press release). May 12, 1997.
- ↑ "MIPS Technologies, Inc. Enhances Architecture to Support Growing Need for IP Re-Use and Integration" (Press release). Business Wire. May 3, 1999. Archived from the original on 1 December 2018. Retrieved 5 February 2019.
- ↑ "Latest Release of MIPS Architecture Includes Virtualization and SIMD Key Functionality for Enabling Next Generation of MIPS-Based Products" (Press release). MIPS Technologies. December 6, 2012. Archived from the original on December 13, 2012.
- ↑ "MIPS skips Release 4 amid bidding war". EE Times. December 10, 2012. Archived from the original on October 14, 2016.
- ↑ "MIPS – Market-leading RISC CPU IP processor solutions". imgtec.com. Archived from the original on 9 March 2016. Retrieved 5 February 2019.
- ↑ "Silicon Graphics Introduces Compact MIPS RISC Microprocessor Code For High Performance at a Low Cost" (Press release). October 21, 1996.
- ↑ Sweetman, Dominic (2007). See MIPS Run (2nd ed.). San Francisco, California: Morgan Kaufmann Publishers. pp. 425–427. ISBN 978-0-12-088421-6.
- ↑ "Using the GNU Compiler Collection (GCC): MIPS DSP Built-in Functions". gcc.gnu.org. Archived from the original on April 20, 2017.
- ↑ "Instruction Set Architecture - LinuxMIPS". www.linux-mips.org. Archived from the original on April 20, 2017.
- ↑ "Five Methods of Utilizing the MIPS® DSP ASE" (PDF). Archived from the original (PDF) on 30 December 2016. Retrieved 5 February 2019.
- ↑ "OVP: Fast Simulation, Free Open Source Models. Virtual Platforms for software development". Ovpworld.org. Archived from the original on June 8, 2012. Retrieved May 30, 2012.
- ↑ "Imperas". Imperas. March 3, 2008. Archived from the original on June 14, 2012. Retrieved May 30, 2012.
- ↑ "EduMIPS64". Edumips.org. Archived from the original on May 7, 2012. Retrieved May 30, 2012.
- ↑ "MARS MIPS simulator - Missouri State University". Courses.missouristate.edu. Archived from the original on May 2, 2012. Retrieved May 30, 2012.
- ↑ "WebMIPS - MIPS CPU PIPLINED SIMULATION On Line". Archived from the original on December 31, 2012. Retrieved January 13, 2012. (online demonstration) "Archived copy". Archived from the original on October 10, 2011. Retrieved January 13, 2012. (source)
- ↑ "WepSim". (Web version with examples). Archived from the original on October 1, 2017. Retrieved April 27, 2018. "WepSim". (GitHub site with source). Archived from the original on January 3, 2018. Retrieved April 27, 2018.
جستارهای وابسته
- DLX، معماری ای بسیار مشابه طراحی شده توسط جان ل. هنسی (معمار میپس) برای آموزشی
- لیست پردازندههای معماری میپس
- پردازندههای معماری میپس
برای مطالعهٔ بیشتر
- Farquhar, Erin; Philip Bunce. MIPS Programmer's Handbook. Morgan Kaufmann Publishers. ISBN 1-55860-297-6.
- Patterson, David A; John L. Hennessy. Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann Publishers. ISBN 1-55860-604-1.
- Sweetman, Dominic. See MIPS Run. Morgan Kaufmann Publishers. ISBN 1-55860-410-3.
- Sweetman, Dominic. See MIPS Run, 2nd edition. Morgan Kaufmann Publishers. ISBN 0-12-088421-6.
پیوند به بیرون
- 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