MIPS
Ця стаття містить правописні, лексичні, граматичні, стилістичні або інші мовні помилки, які треба виправити. (вересень 2013) |
MIPS (англ. Microprocessor without Interlocked Pipeline Stages[1]) — архітектура мікропроцесорів, розроблена компанією MIPS Computer Systems (нині MIPS Technologies) відповідно до концепції проєктування процесорів RISC, тобто концепції зі скороченим набором команд. Ранні моделі процесора мали 32-бітну структуру, пізніше з'явилася 64-бітна версія. Існує багато модифікацій цієї архітектури, включаючи MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS32 (для 32-бітної реалізації) і MIPS64 (для 64-бітної реалізації). MIPS32 і MIPS64 визначають як набір регістрів керування, так і набір команд. Архітектура MIPS з порядком байт little endian називається mipsel.[2]
Крім цього, доступні доповнені моделі, наприклад:
- MIPS-3D — включає в себе набір SIMD команд для обробки чисел з рухомою комою, призначений для вирішення простих 3D завдань;
- MDMX (MaDMaX) — з іще ширшими можливостями, має набір SIMD команд та команд з використанням 64-бітових регістрів з рухомою комою для роботи з цілими числами[що?];
- MIPS16e — стискає потік команд для зменшення обсягу зайнятої програмами пам'яті;
- MIPS MT (Multi-Threading) — забезпечує багатопотоковий режим оброблення.
Архітектуру MIPS часто вивчають в програмі курсу «Комп'ютерна архітектура» в університетах і технічних ліцеях. Ця архітектура мала істотний вплив на подальший розвиток інших процесорів RISC-архітектури, зокрема на Alpha.
Різні реалізації MIPS використовуються в основному у вбудованих системах, наприклад, в пристроях Windows CE, маршрутизаторах, шлюзах, а також в ігрових консолях, таких як Sony PlayStation 2 і Sony PlayStation Portable. До кінця 2006 року вони застосовувалися і в комп'ютерах SGI. До кінця 1980-х і 1990-х ця архітектура широко використовувалася багатьма компаніями, серед них Digital Equipment Corporation, NEC, Pyramid Technology, Siemens Nixdorf і Tandem Computers. З середини до кінця 1990-х років кожним третім мікропроцесором на ринку виробництва був процесор архітектури MIPS.
У 1981 році колектив під керівництвом Джона Геннесі з Університету Стенфорда почав роботу над проєктом, який отримав назву MIPS. Головною ідеєю було збільшити продуктивність процесора, використовуючи подовжений конвеєр. Концепція застосування конвеєра як основної технології була відома ще задовго до цього (наприклад, в IBM 801), але вона не використовувала весь свій потенціал. Центральний процесор включає в себе кілька спеціальних субблоків, таких як декодери команд, цілочисельний АЛП (арифметико-логічний пристрій), блоки завантаження / зберігання (робота з пам'яттю) і т. д. В традиційній не оптимізованій реалізації окрема команда в програмі має бути (майже завжди) завершена, перш ніж запуститься інша; в той час як в конвеєрній архітектурі послідовні команди можуть виконуватися паралельно. Наприклад, коли математична інструкція вноситься в блок з рухомою комою, блок завантаження / зберігання пам'яті може в цей же момент викликати наступну команду.
Однією з головних перешкод у використанні конвеєра був той факт, що деякі команди, такі як ділення, виконуються набагато довше за інші. Внаслідок цього центральному процесору доводиться чекати, перш ніж передати на конвеєр наступну команду. Єдине вирішення цієї проблеми — використовувати серію блокувань, що дозволяють певним стадіям конвеєра сигналізувати, що вони зайняті. В цьому випадку виконання наступних команд потоку призупиняється. Група Геннесі розглядала ці блокування як величезний бар'єр у збільшенні продуктивності, оскільки було необхідно звертатися до всіх модулів центрального процесора, що займає зайвий час і обмежує тактову частоту. Головним завданням розробки пристроїв MIPS було вкласти кожну підфазу кожної команди, в тому числі кешування, в один цикл, таким чином уникаючи необхідності в блокуваннях.
Хоча така реалізація і виключала б деякі дуже корисні операції, такі як множення і ділення, очевидно, що гранична продуктивність системи значно збільшилася б, бо мікросхеми змогли б працювати з вищою тактовою частотою. Досягнення високої швидкості з використанням блокувань було б складним, тому що час, необхідний для встановлення блокувань, пропорційний тактовій частоті (залежній, в свою чергу, від розміру кристала). Ось чому виключення вищезазначених операцій стало спірним питанням.
Інша відмінність дизайну MIPS від конкуруючих з ним Berkeley-архітектур — це впроваджена в Berkeley-RISC можливість обробки виклику підпрограм. Щоб збільшити продуктивність настільки загальної задачі, в Berkeley-RISC була використана технологія, яка називається регістровим вікном, яка, тим не менш, обмежувала максимальну глибину багаторівневих викликів. Кожен виклик підпрограми вимагав свого набору регістрів, що призводило до необхідності збільшення їх кількості. А апаратна реалізація даного механізму займала додатковий простір в кристалі ЦП. Але Геннессі вважав, що «ретельніший» компілятор міг би знайти вільні регістри для передачі параметрів функції, і що всього лише збільшення числа регістрів могло б не тільки спростити цю задачу, але і збільшити продуктивність всіх операцій. Тому було прийнято рішення відмовитися від даної технології в MIPS.
Архітектура MIPS була, в деякому відношенні, найтиповішою для RISC. Щоб заощадити біти в коді команди, в RISC було зменшено кількість інструкцій для кодування. В MIPS з 32 бітів слова всього 6 використовуються для основного коду, а інші можуть містити або єдину 26-бітну адресу переходу, або до 5 полів, що встановлюють від 1 до 3 регістрів + величина зсуву регістра. Існує і ряд інших форматів, наприклад, коли 2 регістри задаються безпосередньо виділеним 16-бітовим полем і так далі. Такий розподіл дозволив процесору завантажувати команду і необхідні їй дані в одному циклі, в той час як у старіших архітектурах (що не були RISC), наприклад, MOS Technology 6502, були потрібні окремі цикли для завантаження основного коду і даних.
Це було одним з головних удосконалень продуктивності, які пропонували RISC. Однак, варто сказати, що не RISC архітектури все ж досягли подібної швидкості, але іншими засобами (такими, як черги в ЦП).
У 1984 році, переконаний у комерційному успіху своєї розробки, Геннессі покинув Стенфорд, щоб заснувати компанію MIPS Computer Systems. У 1985 році була реалізована перша версія мікропроцесора MIPS — R2000, допрацьована в 1988 році і отримала назву R3000. Ці 32-бітові процесори лягли в основу компанії в 1980-х і використовувалися переважно в SG-серіях робочих станцій. Нові комерційні проєкти не відповідали Стенфордським науковим дослідженням, так як практично всі блокування виконувалися на апаратному рівні, до того ж операції множення і ділення були повністю реалізовані.
У 1991 році MIPS вперше був представлений як 64-бітний мікропроцесор, у версії R4000. R4000 має розширений TLB, в якому запис містить не лише віртуальний адресу, але і віртуальний ідентифікатор адресного простору. Такий буфер усуває основні проблеми продуктивності мікроядра, досить повільного в архітектурах конкуруючих компаній (Pentium, PowerPC, Alpha) через необхідність скидати TLB під час частого перемикання контексту.
Тим не менш, у MIPS виникали фінансові труднощі у зв'язку з поставкою процесорів на ринок. Проєкт був настільки важливий для SGI (в той час були одними з небагатьох основних покупців MIPS), що в 1992 році SGI викупили права на компанію з умовою гарантії, що конструкція мікропроцесорів не зміниться. Ставши дочірньої компанією, MIPS Computer Systems отримали назву MIPS Technologies.
На початку 1990 року MIPS почали ліцензування своїх розробок для сторонніх постачальників. Ідея виявилася успішною через простоту ядра, яке знаходило безліч застосувань, де раніше використовувалися набагато менш ефективні CISC-архітектури, з тією ж кількістю і тієї ж ціною схем (2 цих критерію тісно пов'язані: ціна ЦП, як правило, залежить від кількості схем і контактів). Компанія Sun Microsystems зробила аналогічну спробу ліцензування ядра SPARC, але їх хід не мав подібного успіху. До кінця 1990-х MIPS стали найважливішою компанією у виробництві вбудованих процесорів, і в 1997 році 48-мільйонні поставки процесорів на базі MIPS змусили RISC-архітектури витіснити популярне сімейство процесорів 68k. MIPS були настільки успішними, що в 1998 році SGI передали частину активів MIPS Technologies. На сьогодні половина доходів MIPS надходить з ліцензування розробок, а велика частина іншої половини — з контрактів на розробку ядер для виробництва сторонніми постачальниками.
У 1999 році MIPS формалізували свої системи ліцензування навколо двох основних конструкцій — 32-розрядної 'MIPS32 (на базі MIPS II з деякими додатковими функціями MIPS III, IV MIPS і MIPS V) і 64-розрядних MIPS64' (на базі MIPS V). Ліцензія на MIPS64 була придбана кожної з компаній NEC, Toshiba і SiByte (згодом придбана Broadcom) відразу ж після оголошення про її випуску. Незабаром, до них приєдналися Philips, LSI Logic і IDT. Успіх випливав за успіхом, і сьогодні процесори MIPS є одним з найбільш затребуваних товарів на ринку пристроїв комп'ютерного типу (кишенькових комп'ютерів, приставок тощо), поряд з іншими розробниками, марно намагаються їх витіснити.
Через кілька років після того, як MIPS-архітектура стала ліцензованої, вона почала привертати все більше і більше нових компаній з розробки процесорів. Першою такою компанією була Quantum Effect Devices (див. наступний розділ). Команда розробників, що зібрали MIPS R4300i заснувала компанію SandCraft, яка надала компанії NEC новий процесор R5432, а трохи пізніше змодельовану R71000 — один з перших нестандартних процесорів для ринку вбудованих систем. Команда засновників компанії DEC StrongARM зрештою розділилася на дві нові компанії з розробки процесорів, в основу яких ліг MIPS: SiByte, яка виробляла SB-1250 — одну з перших чипових систем з високою продуктивністю, заснованих на MIPS (SOC) і Alchemy Semiconductor (пізніше придбана AMD), яка виробляла Au-1000 SOC для малопотужних додатків. Компанія Lexra використовувала архітектуру, подібну MIPS, додавши до неї DSP для ринку аудіо мікросхем, а також підтримку багатопотокового режиму для мережевого ринку. Так як Lexra не купувала ліцензію на MIPS, незабаром, між двома компаніями розгорілися судові процеси. Перший був досить швидко погашений вже після того, як Lexra пообіцяла не просувати свої процесори, як подібні з MIPS. Другий процес (про патент MIPS 4814976 на обробку невирівняного інструкції (unaligned) доступу до пам'яті) був більш затяжним і негативно позначилася на бізнесі обох компаній, а по його завершенні MIPS Technologies видали Lexra безкоштовну ліцензію та виплатили грошову компенсацію в крупному розмірі.
Слідом за цими подіями на ринку з'явилися дві компанії, що спеціалізуються на створенні багатоядерних пристроїв, що використовують архітектуру MIPS. Корпорація Raza Microelectronics викупили виробничу лінію у менш успішних SandCraft, а потім почали випускати восьмиядерні пристрої для ринку телекомунікацій і мереж. Cavium Networks, спочатку були постачальником засобів захисту процесорів, теж почали виробництво восьми, а пізніше і 32-ядерних архітектур для тих же ринків. Обидві компанії самі проєктували ядра, і лише ліцензували розробки, замість того, щоб купувати готові процесори MIPS.
Серед виробників, які створили робочі станції з використанням мікропроцесорів MIPS такі компанії, як SGI, MIPS Computer Systems, Inc., Whitechapel Workstations, Olivetti, Siemens-Nixdorf, Acer, Digital Equipment Corporation, NEC, і DeskStation. У числі операційних систем, перенесених на архітектуру MIPS: IRIX компанії SGI, Windows NT (до версії 4.0) компанії Microsoft, Windows CE, Linux, BSD , UNIX System V, SINIX, QNX, і операційна система RISC безпосередньо належить компанії MIPS Computer Systems.
На початку 1990-х існувало припущення, що MIPS разом з іншими потужними процесорами RISC незабаром обженуть архітектуру IA32 компанії Intel. Цьому сприяла підтримка двох перших версій Windows NT для Alpha, MIPS і PowerPC компанії Microsoft, і, дещо меншою мірою, — архітектури Clipper і SPARC. Однак, як тільки Intel випустив новітні версії ЦП класу Pentium, Microsoft Windows NT v4.0 перестав підтримувати все, крім Alpha і Intel. Після рішення SGI перейти на архітектури Itanium і IA32, процесори MIPS практично повністю перестали використовуватися в персональних комп'ютерах.
У 1990-ті роки, MIPS-архітектура була широко поширена на ринку вбудовуваних систем: для мереж, телекомунікацій, відео ігор, ігрових консолей, принтерів, цифрових приставок, цифрових телевізорів, xDSL і кабельних модемів, а також кишенькових комп'ютерів.
Низьке енергоспоживання і температурні характеристики вбудованих MIPS-архітектур, широкі можливості внутрішніх функцій роблять цей мікропроцесор універсальним для багатьох пристроїв.
В останні роки більшість технологій, що використовуються в різних поколіннях MIPS, запропоновані у вигляді IP-ядер (стандартних блоків) для вбудованих реалізацій процесора. Більше того, запропоновані обидва типи ядер — засновані на 32 і 64 бітах, відомі як 4 K і 6 K. Такі ядра можуть поєднуватися з іншими структурними елементами, такими як FPU, системами SIMD, різними пристроями введення / виводу і т. д.
Колись комерційно успішні ядра MIPS, і в даний час знайшли споживче та промислове застосування. Ці ядра можна знайти в нових маршрутизаторах Cisco, Linksys та MikroTik, кабельних і ADSL модемах, смарт-карта х, механізмах лазерних принтерів, цифрових приставках, роботах, кишенькових комп'ютерах, Sony PlayStation 2 і Sony PlayStation Portable. Тим не менш, в додатках мобільних телефонів і PDA MIPS не вдалося змістити міцно сталу там конкуруючу ARM-архітектуру.
Процесори під управлінням MIPS включають в себе: IDT RC32438; ATI Xilleon; Alchemy Au1000, 1100, 1200 ; Broadcom Sentry5; RMI XLR7xx, Cavium Octeon CN30xx, CN31xx, CN36xx, CN38xx і CN5xxx; Infineon Technologies EasyPort, Amazon, Danube, ADM5120, WildPass, INCA-IP, INCA-IP2; Microchip Technology PIC32, NEC EMMA та EMMA2, NEC VR4181A, VR4121, VR4122, VR4181A, VR5432, VR5500; Oak Technologies Generation; PMC-Sierra RM11200 ; QuickLogic QuickMIPS ESP; Toshiba Donau, Toshiba TMPR492x, TX4925, TX9956, TX7901.
Одним з найцікавіших застосувань архітектури MIPS є їх використання в багатопроцесорних обчислювальних суперкомп'ютерах. На початку 1990-х компанія Silicon Graphics (SGI) перенаправила свій бізнес з графічних терміналів на ринок високопродуктивного обчислення. Успіх перших спроб компанії в області серверних систем (а саме, серія Challenge, заснована на R4400, R8000 і R10000) мотивував SGI створити набагато потужнішу систему. Використання R10000 дозволило компанії спроєктувати систему Origin 2000, в кінцевому рахунку розширювану до 1024 ЦП, використовуючи власну міжсистемних зв'язків cc-NUMA (NUMAlink). Пізніше Origin 2000 породила нову систему — Origin 3000, що вийшла з тими ж максимальними 1024 ЦП, але використала в розробці мікросхеми R14000 та R16000 з частотою до 700 МГц. Проте, в 2005 році, коли SGI прийняла стратегічне рішення про перехід на архітектуру Intel IA-64, суперкомп'ютери, базовані на MIPS були зняті з виробництва.
У 2007 році корпорація SiCortex представила новий багатопроцесорний персональний суперкомп'ютер, заснований на архітектурі MIPS. У його розробку лягли MIPS64 і високопродуктивна міжсистемна зв'язок з використанням топології графів Кауца (англ. Kautz graph). Дана система є гранично ефективної та обчислювально потужною. Її унікальний аспект — багатоядерний вузол обробки, інтегруючий шість ядер MIPS64, комутатор контролера пам'яті, міжсистемних зв'язків механізмів прямого доступу до пам'яті, локальну мережу з пропускною здатністю 1 Гбіт і PCI Express контролери. І все це на одному кристалі, який споживає 10 Вт енергії, але виконує максимум 6 мільярдів операцій з рухомою комою на секунду. Найпотужніша конфігурація такого суперкомп'ютера — версія SC5832, що складається з 972 вузлів (всього 5832 ядер MIPS64) і виконує 8 200 000 000 000 операцій з рухомою комою на секунду.
Компанія Loongson, в надії обійти патент MIPS, випустила свою архітектуру, яка була повністю схожа з розробкою MIPS Technologies і підтримувалася ОС Linux. Через те, що виробництво процесорів Loongson було дешевшим, MIPS отримали можливість відродитися на ринку персональних комп'ютерів в особі Loongson. Надалі Loongson купили ліцензію на MIPS.
Процесори архітектури MIPS також використовуються в нетбуках компаній iUnika, Bestlink, Lemote і Golden Delicious Computers.
MIPS IV — це четверте покоління архітектури, являє собою розширену версію MIPS III і сумісний з усіма існуючими моделями MIPS. Перший випуск MIPS IV був представлений в 1994 році під назвою R8000. MIPS IV включив в себе:
- Проста адресація регістр + регістр для завантаження і зберігання чисел з рухомою комою
- Операції FMA і FMS з одинарною і подвійною точністю для чисел з рухомою комою
- Команди умовного переходу для цілих чисел і для чисел з рухомою комою
- Додаткові умовні біти в регістрі контролю та стану числа з рухомою комою: в цілому 8 бітів.
MIPS V — п'ята версія архітектури, була представлена 21 жовтня 1996 року на Форумі мікропроцесорів 1996. Ця модель була розроблена для того, щоб підвищити продуктивність графічних 3D-додатків. В середині 1990-х велика частина не вбудованих мікропроцесорів MIPS припадала на графічні термінали від SGI. Розробка MIPS V була доповнена цілочисельними мультимедійними розширеннями MDMX (MIPS Digital Media Extensions), які були представлені в той же день, що і MIPS V.
Реалізації MIPS V так ніколи і не були впроваджені. У 1997 році SGI представила мікропроцесори під назвами «H1» («Beast») і «H2» («Capitan»), які повинні були бути проведені в 1999 році. Але незабаром їх об'єднали, і в кінцевому підсумку в 1998 році ці проєкти були скасовані.
В MIPS V був доданий новий тип даних — PS (pair-single), який являє собою два числа з рухомою комою подвійної точності (32-бітні), що зберігаються в 64-бітному регістрі з рухомою комою. Щоб працювати з цим типом даних в режимі SIMD, були додані різні варіанти арифметичних, порівняльних операцій над числами з плаваючою точкою, а також команда умовного переходу. З'явилися нові інструкції для завантаження, реконфігурації і перетворення PS-даних. Це перша архітектура, зуміла реалізувати обробку чисел з плаваючою точкою в SIMD-режимі з наявними ресурсами.
Першим комерційним мікропроцесором з архітектурою MIPS був мікропроцесор R2000, представлений в 1985 році. У ньому були реалізовані операції множення і ділення, які виконувалися за кілька тактів. Пристрій множення і ділення не було тісно інтегровано в ядро процесора, хоча й розміщувалось на тому ж кристалі; з цієї причини система команд розширена інструкціями для завантаження результатів множення і ділення в регістри загального призначення, ці інструкції блокували конвеєр.
Мікропроцесор R2000 міг бути завантажений як в режимі big-endian, так і в режимі little-endian, містив тридцять два 32-розрядних регістра загального призначення. Подібно процесорам AMD 29000 і Alpha мікропроцесор R2000 не мав окремого регістра прапорів умов, так як розробники порахували його потенційним «вузьким місцем». Слід зазначити, що лічильник команд безпосередньо недоступний.
Мікропроцесор R2000 підтримував підключення до чотирьох співпроцесорів, один з яких є вбудованим і забезпечує роботу з винятками, а також управління пам'яттю (MMU). У разі необхідності як ще один співпроцесор можна було підключити мікросхему R2010, арифметичний співпроцесор, який містив тридцять два 32-розрядних регістра, які можна було використовувати як шістнадцять 64-розрядних регістрів для роботи з числами подвійної точності. Наступним в сімействі став R3000, який з'явився в 1988 році. Він містив кеш-пам'ять даних об'ємом 64 КБ (R2000 — 32 КБ). Крім того, R3000 забезпечував когерентність кеш-пам'яті при роботі в мультипроцесорних конфігураціях. Незважаючи на те, що в підтримці мультипроцессорности R3000 є ряд недоліків, на базі R3000 було створено декілька працездатних багатопроцесорних систем. Як і для R2000, для R3000 був створений арифметичний співпроцесор у вигляді окремої СБИС: R3010. Мікропроцесор R3000 став першим комерційно успішним процесором з архітектурою MIPS, було виготовлено більше мільйона процесорів. Прискорена версія R3000, що працює на тактовій частоті 40 МГц, названа R3000A, досягла продуктивності в 32 VUPs (VAX Unit of Performance). Подальший розвиток R3000A, мікропроцесор R3051, що працює на частоті 33,8688 МГц був використаний в ігровій приставці Sony PlayStation. Інші виробники також представили процесори, сумісні з R3000A: в Performance Semiconductor був розроблений R3400, в той час як компанія IDT створила R3500, обидва згаданих процесора мали в інтегрований математичний співпроцесор R3010. Першою системою на кристалі, що використовує процесор з архітектурою MIPS, стала розробка R3900 фірми Toshiba; дана мікросхема використовувалася в портативному комп'ютері, який працював під управлінням Windows CE. Був розроблений радіаційно-стійкий варіант R3000 з інтегрованим R3010, призначений для застосування в космічних апаратах, який отримав назву Mongoose-V.
Серія R4000, випущена в 1991 році, розширила процесори MIPS до 64 бітів. (MIPS Technology була першою компанією випустила процесори з 64-бітової архітектурою) R4000 складається з 1300000 транзисторів, має вбудований кеш даних і кеш інструкцій (обидва по 8 Кб). У цьому процесорі зовнішня тактова частота 50 МГц подвоюється, а внутрішня тактова частота становить 100 МГц. Процесор R4400 виконаний на основі R4000, складається з 2200000 транзисторів, має вбудований кеш даних і кеш інструкцій (обидва по 16 Кб), а внутрішня тактова частота становить 150 МГц. Набір команд цих процесорів (специфікація MIPS II) було розширено командами завантаження і записи 64-розрядних чисел з плаваючою точкою, командами обчислення квадратного кореня з одинарною і подвійною точністю, командами умовних переривань, а також атомарними операціями, необхідними для підтримки мультипроцесорних конфігурацій. В процесорах R4000 і R4400 реалізовані 64-бітові шини даних і 64-бітові регістри.
MIPS, тепер є відділом SGI під назвою MTI, розробив недорогі процесори R4200, що послужили основою для майбутніх (ще більш дешевих) R4300i. Похідна цього процесора, NEC VR4300, використовувалася в ігрових консолях Nintendo 64.
Quantum Effect Devices (QED), самостійна компанія, заснована розробниками MIPS, розробила серію процесорів R4600 Orion, R4700 Orion, R4650 і R5000. Якщо в R4000 збільшили тактову частоту, але пожертвували кількістю кеш-пам'яті, то QED приділили велику увагу і ємності кеш-пам'яті (доступ до якої можна отримати всього за 2 цикли), і ефективному використанню поверхні кристала. Процесори R4600 і R4700 використовувалися в недорогих версіях робочої станції SGI Indy, а також у перших маршрутизаторах Cisco (заснованих на MIPS), наприклад, серії 36х0 і 7х00. Мікропроцесор R4650 застосовувався в телевізійних приставках WebTV (нині — Microsoft TV). У процесорі R5000 FPU диспетчеризація операцій з плаваючою точкою (одинарної точності) була гнучкішою, ніж в R4000, і, внаслідок цього, робочі станції SGI Indys, базовані на R5000 відрізнялися кращою графічною продуктивністю, ніж R4400 з такою ж тактовою швидкістю і графічним апаратним пристроєм. Щоб підкреслити поліпшення після об'єднання R5000 і старої графічної плати, SGI дала їй нову назву. Трохи пізніше QED розробили сімейство процесорів RM7000 і RM9000 для ринку мереж і лазерних принтерів. У серпні 2000 року компанія QED була придбана виробником напівпровідників PMC-Sierra, і остання продовжила інвестування MIPS-архітектур. Процесор RM7000 включав в себе 256 Кб вбудованої кеш-пам'яті 2-го рівня і контролер для додаткової кеш-пам'яті 3го рівня. Були створені процесори RM9xx0 — сімейство SOC-пристроїв, в які включені такі периферійні складові (на північному мосту) як: контролер пам'яті, PCI-контролер, контролер Ethernet, а також швидкі пристрої введення-виведення (наприклад, високопродуктивна шина типу HyperTransport).
R8000 (представлений в 1994 році) був першою суперскалярної архітектурою MIPS, здатної здійснювати 2 цілочисельні інструкції (або з плаваючою точкою) і 2 інструкції звернення до пам'яті за один цикл. Дана розробка використовувала 6 схем: пристрій для цілочислових команд (16 Кб — команди і 16 Кб — кеш даних), для команд з плаваючою точкою, три вторинних дескриптора кеш-пам'яті ОЗУ (два для вторинного доступу до кеш-пам'яті + один для відстеження шини), а також кеш-контролер ASIC. Архітектура має два повністю конвейерізовать пристрою множення-складання (з подвійною точністю), які можуть передавати потік даних в 4 Мб внекрістального вторинного кешу. В середині 1990-х процесори R8000 запустили SGI сервери POWER Challenge, а пізніше стали доступні на робочих станціях POWER Indigo2. Хоча продуктивність цього FPU і була найбільш підходящою для наукових співробітників, обмеженість його целочисленной продуктивності і висока ціна не змогли залучити більшість користувачів, тому R8000 був на ринку всього рік, і навіть зараз його навряд чи можна знайти.
У 1995 році був випущений R10000. Цей процесор в однокристальному виконанні, працював з більш високою тактовою частотою, ніж R8000, а також включав в себе об'ємну (32 КБ) первинну кеш-пам'ять даних і команд. Крім того, він був суперскалярних, але це головне нововведення було несправне. Але навіть з простішим FPU, значно збільшена продуктивність цілочисельний обчислень, нижча ціна та висока щільність запису зробили R10000 кращим для більшості користувачів.
Усі пізніші проєкти були засновані на ядрі R10000. В R12000 був використаний 0,25 мікронний технологічний процес з метою зменшити чип і досягти більшої тактовою швидкості. Виправлений R14000 мав вищу тактову частоту на додаток з підтримкою DDR SRAM для внекрістальной кеш-пам'яті. Слідом були випущені R16000 і R16000A, тактова частота яких була також збільшена; в них була вбудована додаткова кеш-пам'ять першого рівня, а їх виробництво вимагало дрібніших кристалів, ніж раніше.
Серед інших представників сімейства MIPS — R6000, ЕСЛ-реалізація, виконана компанією Bipolar Integrated Technology. R6000 відноситься до покоління процесорів MIPS II. Його TLB і пристрій кеш-пам'яті значно відрізняються від інших представників даного сімейства. R6000 не приніс обіцяної вигоди, і, хоча був визнаний деякою мірою корисним для комп'ютерів Control Data, він миттєво зник з основного ринку.
Модель | Частота (МГц) | Рік | Технологія розробки (μm) | Транзистори (млн.) | Розмір кристала (мм²) | Число висновків | Потужність (Вт) | Напруга (В) | Кеш даних (КБ) | Кеш інструкцій (КБ) | Кеш 2го рівня | Кеш 3го рівня |
---|---|---|---|---|---|---|---|---|---|---|---|---|
R2000 | 8-16.67 | 1985 | 2,0 | 0,11 | ? | ? | ? | ? | 32 | 64 | НІ | НЕМАЄ |
R3000 | 12-40 | 1988 | 1,2 | 0,11 | 66,12 | 145 | 4 | ? | 64 | 64 | 0-256 Кб Зовнішня | НЕМАЄ |
R4000 | 100 | 1991 | 0,8 | 1,35 | 213 | 179 | 15 | 5 | 8 | 8 | 1 Мб Зовнішня | НЕМАЄ |
R4400 | 100-250 | 1992 | 0,6 | 2,3 | 186 | 179 | 15 | 5 | 16 | 16 | 1-4 Мб Зовнішня | НЕМАЄ |
R4600 | 100-133 | 1994 | 0,64 | 2,2 | 77 | 179 | 4,6 | 5 | 16 | 16 | 512 Кб Зовнішня | НЕМАЄ |
R4700 | 133 | 1996 | ? | ? | ? | 179 | ? | ? | 16 | 16 | Зовнішня | НЕМАЄ |
R5000 | 150-200 | 1996 | 0,35 | 3,7 | 84 | 223 | 10 | 3,3 | 32 | 32 | 1 Мб Зовнішня | НЕМАЄ |
R8000 | 75-90 | 1994 | 0,7 | 2,6 | 299 | 591 +591 | 30 | 3,3 | 16 | 16 | 4 Мб Зовнішня | НЕМАЄ |
R10000 | 150-250 | 1996 | 0,35, 0,25 | 6,7 | 299 | 599 | 30 | 3,3 | 32 | 32 | 512 Кб-16 Мб Зовнішня | НЕМАЄ |
R12000 | 270-400 | 1998 | 0,25, 0,18 | 6,9 | 204 | 600 | 20 | 4 | 32 | 32 | 512 Кб-16 Мб Зовнішня | НЕМАЄ |
RM7000 | 250-600 | 1998 | 0,25, 0,18, 0,13 | 18 | 91 | 304 | 10, 6, 3 | 3,3, 2,5, 1,5 | 16 | 16 | 256 Кб Внутрішня | 1 Мб Зовнішня |
R14000 | 500-600 | 2001 | 0,13 | 7,2 | 204 | 527 | 17 | ? | 32 | 32 | 512 Кб-16 Мб Зовнішня | НЕМАЄ |
R16000 | 700-1000 | 2002 | 0,11 | ? | ? | ? | 20 | ? | 64 | 64 | 512 Кб-16 Мб Зовнішня | НЕМАЄ |
R24K | 750 + | 2003 | 65 nm | ? | 0.83 | ? | ? | ? | 64 | 64 | 4-16 Мб Зовнішня | НЕМАЄ |
Інструкції поділяються на три типи: R, I і J. Кожна інструкція починається з 6-бітного коду. На додаток до коду, інструкції R-типу визначають три регістра, область розміру зсуву регістра, і область функції; інструкції I-типу визначають два регістри і безпосереднє значення; інструкції J-типу слідують коду операції з 26-бітовим кроком.
Дані інструкції мови асемблера мають пряму апаратну реалізацію, на відміну від псевдоінструкцій, які перед складанням транслюються в справжні складові інструкції.
- Далі, реєстрові літери d, t, і s будуть позначати покажчики на номери і імена регістрів.
- C позначає константу.
- Усі наступні команди є власними.
- Всі коди операцій і функцій представлені в шістнадцятковій системі числення.
- Набір інструкцій MIPS32 ідентифікує, що число без знака, яка бере участь у складанні або вирахуванні, некоректно. Різницею між форматами числа зі знаком і без є не збільшення довжини операндів (або її зменшення), а здатність розпізнавати, чи було переривання та в разі переповнення, або ж переривання було проігноровано. Операнд константа, у відповідність з цими інструкціями, завжди повинен мати знак.
MIPS має 32 регістра для цілочисельних операцій. Для виконання арифметичних обчислень дані повинні перебувати в регістрах. Регістр $ 0 завжди зберігає 0, а регістр $ 1 резервується для збірки (для зберігання псевдоінструкцій і великих констант).
MIPS має 32 регістра з плаваючою крапкою. Регістри з'єднані по 2 для подвійної точності обчислень. Регістри з непарними номерами не можуть бути використані для арифметичних операцій або розгалуження, вони можуть лише частково вказувати подвійну точність в парі регістрів.
Ці інструкції приймаються мовою асемблера MIPS, проте вони не є реальними. Асемблер переводить їх в послідовності справжніх інструкцій.
- NOP (без операції) (машинний код 0x00000000, інтерпретується в процесором як sll $ 0, $ 0, 0)
- Break (розриви програми, використовується відладниками)
- Системний виклик (використовується для системних викликів операційної системи)
Апаратна архітектура визначає наступні критерії:
- Регістр загального призначення $ 0 завжди повертає значення 0.
- Регістр загального призначення $ 31 використовується як регістра-посилання для команд переходу і зв'язку.
- HI і LO використовуються для доступу до результатів множення / ділення, доступ до яких здійснюється командами mfhi (move from high) і mflo (move from low).
Це єдині обмеження, які апаратна архітектура накладає на використання регістрів загального призначення.
Різні пристрої MIPS реалізовують спеціальні угоди про виклики, які обмежують використання регістрів. Угоди про виклики повністю підтримуються комплексом ПО, але не потрібні апаратним забезпеченням.
Захищені регістри (за угодою) не можуть бути змінені викликом системи або процедури (функції). Наприклад, $ s-регістри повинні бути збережені в стеці процедурою, яка збирається ними скористатися; до $ sp і $ fp-регістрів прирощується константи, а після закінчення процедури регістри знову зменшуються. Протилежним прикладом служить регістр $ ra, який автоматично змінюється при його виклику будь функцією. $ T-регістри повинні зберігатися програмою перед викликом будь-якої процедури (якщо програмі потрібні дані, отримані після виклику).
Серед Open Virtual Platforms існує безкоштовний емулятор OVP-sim, доступний для некомерційного використання, який являє собою бібліотеку моделей процесорів і платформ, а також програмних інтерфейсів, що дозволяють користувачеві проєктувати власні моделі. Бібліотека моделей є відкритим ресурсом, написаному мовою С, і включає в себе ядра MIPS 4K, 24K і 34K. Дані моделі створені і підтримуються компанією Imperas, яка у співпраці з MIPS Technologies протестувала емулятор і відзначила його знаком MIPS-Verified. Зразки платформ, заснованих на MIPS включають в себе як апаратне забезпечення, так і платформи для завантаження немодифікованих двійкових образів Linux. Такі платформи-емулятори ефективні для навчання, а також доступні, безкоштовні і прості у використанні. OVPsim розроблений і підтримуваний Imperas працює з високою швидкістю (сотні мільйонів інструкцій на секунду), і може бути використаний для опису багатоядерних архітектур.
Існує вільно доступний емулятор MIPS32 (ранні версії могли імітувати тільки R2000/R3000), випущений під назвою SPIM і призначений для використання в навчанні. EduMIPS64 — це міжплатформовий графічний емулятор процесора MIPS64, написаний мовою Java з використанням графічної бібліотеки Swing. Він підтримує множину команд MIPS64 ISA і дозволяє користувачеві наочно побачити, що відбувається в конвеєрі, коли ЦП виконує програму мовою асемблера. Проєкт має строго освітні цілі і широко використовується на деяких курсах комп'ютерної архітектури в усьому світі.
Ще один GUI-емулятор процесорів MIPS — це MARS, теж розроблений в освітніх цілях, особливо ефективний разом з книгою Геннессі Computer Organization and Design.
Більш просунуті версії безкоштовних емуляторів — Gxemul (раніше відомі як проєкти mips64emul), а також проєкти QEMU. Вони імітують різні моделі мікропроцесорів MIPS III і MIPS IV (як доповнення до комп'ютерних систем, що їх використовують).
Комерційні розробки емуляторів доступні в основному для вбудованого використання процесорів MIPS, наприклад, Virtutech Simics (MIPS 4Kc і 5Kc, PMC RM9000, QED RM7000), VaST Systems (R3000, R4000), і CoWare (MIPS4KE, MIPS24K, MIPS25Kf і MIPS34K).
- Alchemy Au1000, 1100, 1200
- Atheros AR23xx, AR52xx, AR71xx, AR72xx
- ATI Xilleon
- Broadcom Sentry5
- IDT RC32438
- Infineon Technologies EasyPort, Amazon, Danube, ADM5120, WildPass, INCA-IP, INCA-IP2
- Ingenic JZ47xx
- Lemote Loongson I, Loongson II, Loongson III[3]
- Microchip Technology PIC32
- Mongoose-V
- NEC EMMA and EMMA2, NEC VR4181A, VR4121, VR4122, VR4181A, VR5432, VR5500
- Oak Technologies Generation
- PMC-Sierra RM11200
- Realtek RTD1055, RTD1185, RTD1186[4]
- Sigma Designs SMP8640, SMP8650, SMP8910[5]
- QuickLogic QuickMIPS ESP
- RMI XLR7xx, Cavium Octeon CN30xx, CN31xx, CN36xx, CN38xx и CN5xxx
- Toshiba Donau, Toshiba TMPR492x, TX4925, TX9956, TX7901.
- ↑ Patterson, David A.; Hennessy, John L.; Alexander, Perry (2014). Computer organization and design: the hardware/software interface (вид. 5.). Amsterdam Heidelberg: Elsevier Morgan Kaufmann. с. 1. ISBN 978-0-12-407726-3.
- ↑ MIPSPort - Debian Wiki. wiki.debian.org. Процитовано 19 лютого 2023.
- ↑ Loongson cpu_CPU & Motherboard_江苏龙芯梦兰科技股份有限公司. Архів оригіналу за 16 травня 2010. Процитовано 8 травня 2012. [Архівовано 2010-05-16 у Wayback Machine.]
- ↑ Digital Media Processor (Realtek). Архів оригіналу за 1 січня 2012. Процитовано 8 травня 2012. [Архівовано 2012-01-01 у Wayback Machine.]
- ↑ Secure Media Processor™ Overview. Архів оригіналу за 19 грудня 2011. Процитовано 8 травня 2012.
- David A. Patterson; John L. Hennessy. Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann Publishers[en]. ISBN 1-55860-604-1.
- Dominic Sweetman. See MIPS Run, 2nd edition. Morgan Kaufmann Publishers. ISBN 0-12088-421-6.
- Dominic Sweetman (1999). See MIPS Run. Morgan Kaufmann Publishers. ISBN 1-55860-410-3.
- Erin Farquhar; Philip Bunce. MIPS Programmer's Handbook. Morgan Kaufmann Publishers. ISBN 1-55860-297-6.
- Full overview of MIPS architecture
- Patterson & Hennessy — Appendix A [Архівовано 18 лютого 2007 у Wayback Machine.]
- Summary of MIPS assembly language
- MIPS Instruction reference [Архівовано 28 червня 2018 у Wayback Machine.]
- MARS (MIPS Assembler and Runtime Simulator) [Архівовано 2 травня 2012 у Wayback Machine.]
- MIPS processor images and descriptions at cpu-collection.de [Архівовано 16 березня 2012 у Wayback Machine.]
- A programmed introduction to MIPS assembly
- Mips bitshift operators [Архівовано 12 лютого 2012 у Wayback Machine.]
- MIPS software user's manual [Архівовано 15 квітня 2012 у Wayback Machine.]