Кіріспе
Нұсқаулар жиынтығы архитектурасы
MIPS (Microprocessor without Interlocked Pipelined Stages) – АҚШ-та орналасқан MIPS Computer Systems (қазіргі MIPS Technologies) компаниясы әзірлеген қысқартылған нұсқаулар жиынтығын компьютерлік (RISC) нұсқаулар жиынтығының архитектурасы (ISA). MIPS-тің бірнеше нұсқасы бар: MIPS I, II, III, IV және V; сондай-ақ MIPS32/64-тің бес шығарылымы (тиісінше 32 және 64 биттік іске асыру үшін). MIPS архитектурасының алғашқы нұсқалары 32 биттік болды; 64 биттік нұсқалары кейін дамытылды. 2017 жылдың сәуір айына қарай, MIPS-тің ағымдағы нұсқасы MIPS32/64 Release 6 болып табылады. MIPS32/64, MIPS I–V-тен негізінен ерекшеленеді, өйткені пайдаланушы режимі архитектурасына қосымша, артықшылықты ядролық режимдегі System Control Coprocessor-ді анықтайды. MIPS архитектурасында бірнеше қосымша кеңейтімдер бар. MIPS 3D – жалпы 3D тапсырмаларына арналған қарапайым SIMD нұсқаулар жиынтығы, MDMX (MaDMaX) – 64 биттік қалқыма нүктелік тіркегіштерді пайдаланатын кеңейтілген бүтін сандық SIMD нұсқаулар жиынтығы, MIPS16e – бағдарламалардың көлемін азайту үшін нұсқау ағынына сығылуды қосады, ал MIPS MT – көп жіптік жұмыс істеу мүмкіндігін қосады. Университеттер мен техникалық училищердегі компьютерлік архитектура курстары көбінесе MIPS архитектурасын зерттейді. Бұл архитектура Alpha сияқты кейінгі RISC архитектураларына үлкен әсер етті. 2021 жылдың наурызында MIPS компаниясы RISC V-ке өту кезеңінде MIPS архитектурасының дамуы тоқтағанын жариялады.
Тарих
MIPS архитектурасының алғашқы нұсқасын MIPS Computer Systems компаниясы өзінің R2000 микропроцессоры үшін жасады. MIPS және R2000 1985 жылы бірге ұсынылды. MIPS II ұсынылғанда, MIPS жаңа нұсқадан ажырату үшін MIPS I деп қайта аталды. 1990 жылдардың ортасында MIPS микропроцессорларының кеңінен қолданылуы Silicon Graphics компаниясының графикалық жұмыс станциялары болды. MIPS V, тек бүтін сандармен жұмыс істейтін MDMX кеңейтуімен толықтырылды, бұл 3D графикалық қосымшалардың өнімділігін арттыруға арналған толық жүйе болды. MIPS V іске асырылымдары ешқашан ұсынылмады. 1997 жылдың 12 мамырында Silicon Graphics компаниясы H1 ("Beast") және H2 ("Capitan") микропроцессорларын жариялады. Біріншісі MIPS V іске асырылымының бірінші нұсқасы болуға тиіс еді және 1999 жылдың бірінші жартысында ұсынылуы жоспарланған. H1 және H2 жобалары кейін біріктіріліп, 1998 жылы тоқтатылды. MIPS V іске асырылымдары болмағанмен, MIPS64 Release 1 (1999) MIPS V негізінде жасалды және оның барлық мүмкіндіктерін опциялық Coprocessor 1 (FPU) мүмкіндігі ретінде сақтап қалды, ол Paired Single деп аталды. 1998 жылы MIPS Technologies Silicon Graphics компаниясынан бөлініп шыққаннан кейін, кіріктірілген нарыққа қайта бағытталды. MIPS V арқылы әр кезекті нұсқа алдыңғы нұсқаның кеңейтілген түрі болды, бірақ бұл қасиет мәселе тудырды, сондықтан архитектураның анықтамасы 32 биттік және 64 биттік архитектураны анықтау үшін өзгертілді: MIPS32 және MIPS64. Екеуі де 1999 жылы ұсынылды. MIPS32 MIPS II негізінде жасалған, MIPS III, MIPS IV және MIPS V-тен алынған қосымша мүмкіндіктерімен; MIPS64 MIPS V негізінде жасалған. MIPS компаниясының өнімдерді маркетингтік директорының сөзіне сәйкес, 4-ші релиз өткізілмеді, себебі көптеген Азия мәдениеттерінде төрт саны бақытсыз сандардың бірі саналады. 2018 жылдың желтоқсан айында MIPS архитектурасының жаңа иесі Wave Computing, MIPS ISA ашық кодына қол жеткізуді қамтамасыз ететін MIPS Open бағдарламасы іске қосылатынын жариялады. Бағдарламаның мақсаты 32 биттік және 64 биттік жобалардың ең соңғы нұсқаларына қол жеткізуді жеңілдету, оларды лицензиялық төлемдерсіз және авторлық жарнасыз қолжетімді ету, сондай-ақ қатысушыларға қолданыстағы MIPS патенттеріне лицензия беру болды. 2019 жылдың наурыз айында архитектураның бір нұсқасы роялтисіз лицензиямен қолжетімді болды, бірақ сол жылдың соңында бағдарлама қайтадан жабылды. 2021 жылдың наурызында Wave Computing MIPS архитектурасын әзірлеу тоқтатылғанын хабарлады. Компания RISC V қорына қосылды және болашақ процессор дизайны RISC V архитектурасына негізделген болады. Осыған қарамастан, Loongson сияқты кейбір лицензиарлар MIPS-ке сәйкес келетін ISA-ны өздері кеңейтуді жалғастыруда. 2024 жылдың қаңтар айында Loongson MIPS архитектурасын пайдалану құқығына қатысты сот ісін жеңіп алды.
Дизайн
MIPS – төрт копроцессорды (CP0/1/2/3) қолдайтын модульдік архитектура. MIPS терминологиясында CP0 – жүйелік басқару копроцессоры (MIPS I–V аралығында жүзеге асылуы анықталатын процессордың қажетті бөлігі), CP1 – қосымша жылжымалы нүктелік процессор (FPU) және CP2/3 – қосымша, жүзеге асылуы анықталатын копроцессорлар (MIPS III CP3-ті жойды және оның операциялық кодтарын басқа мақсаттар үшін пайдаланды). Мысалы, PlayStation бейне ойын консолінде CP2 – геометриялық трансформация двигателі (GTE), ол 3D компьютерлік графикада геометрияны өңдеуді жеделдетеді.
MIPS I
MIPS жүктеу/сақтау архитектурасы (осыны тіркелім-тіркелім архитектурасы деп те атайды); жадқа қол жеткізу үшін қолданылатын жүктеу/сақтау командаларынан басқа, барлық командалар тіркелімдермен жұмыс істейді.
Тіркелімдер
MIPS I-де 32 биттік жалпы мақсаттағы 32 тіркелгі (GPR) бар. Бір тіркелгі аппараттық түрде нөлге орнатылған, оған жазылған мәліметтер ескерілмейді. Бір тіркелгі – байланыс тіркелгісі. Бұтін санды көбейту және бөлу нұсқаулары үшін, басқа нұсқаулардан асинхронды түрде орындалатындар үшін, 32 биттік HI және LO тіркелгілер жұбы қарастырылған. Жалпы мақсаттағы тіркелгілер мен HI/LO тіркелгілері арасында деректерді көшіруге арналған шағын нұсқаулар жиынтығы бар. Бағдарлама санағы 32 биттен тұрады. MIPS I нұсқаулары 32 биттік болғандықтан және олар өздерінің табиғи сөз шекараларына сәйкес келгендіктен, екі төменгі біттерінде әрқашан нөл болады.
Нұсқаулық форматтары
Нұсқаулар үш түрге бөлінеді: R (тіркеме), I (тез мән) және J (секіру). Әрбір нұсқау 6 биттік опкодпен басталады. R түріндегі нұсқаулар опкодтан басқа үш тіркеме, ауысу шамасы өрісі және функция өрісін көрсетеді; I түріндегі нұсқаулар екі тіркеме және 16 биттік дереу мәнді көрсетеді; J түріндегі нұсқаулар опкодты 26 биттік секіру мақсатымен толықтырады. Шарт бойынша тұзақ нұсқаулары жиынтығы қосылды. Егер бағаланған шарт орындалса, бұл нұсқаулар қателік тудырады. Барлық қолданыстағы тармақталу нұсқауларына тармақталу мүмкін нұсқалары берілді, олар тармақталу орындалса ғана тармақталу кешіктіріліс слотында нұсқауды орындайды. MIPS IV негізінен қозғалмалы нүкте (FP) өнімділігін жақсарту үшін жасалған. Операндарға қол жеткізуді жақсарту үшін FP жүктемелері мен сақтаулары үшін база + индекс (екеуі де жалпы мақсатты тіркемелерден алынған) индекстелген адрестеу режимі қосылды, сондай-ақ жадты алдын ала жүктеу және кэш кеңестерін беру үшін алдын ала жүктеу нұсқаулары (олар база + офсет және база + индекс адрестеу режимдерін қолдайды). MIPS IV нұсқаулық деңгейіндегі параллелизмді жақсарту үшін бірнеше мүмкіндіктерді қосты. Бір шарт битінен туындаған қиындықтарды жеңілдету үшін, қозғалмалы нүктелік бақылау және күй тіркемесіне жеті шарт кодын біті қосылды, барлығы сегіз болды. FP салыстыру және тармақталу нұсқаулары қай шарт биті жазылған немесе оқылған (сәйкесінше) екенін көрсету үшін қайта анықталды; және FP тармағының арасындағы кешіктіріліс слоты, ол бұрынғы FP салыстырумен жазылған шарт битін оқыды, алынып тасталды. Ішінара шартты орындау үшін қолдау GPR және FPR үшін шартты жылжыту нұсқаулары түрінде қосылды; және жүзеге асыру IEEE 754 тұзақтары үшін нақты немесе шамалы ерекшеліктерді таңдау мүмкіндігіне ие болды. MIPS IV бір және екі дәлдікті FPN үшін бірнеше жаңа FP арифметикалық нұсқауларды қосты: біріктірілген көбейту және қосу немесе алу, кері шама және кері шаманың квадрат түбірі. FP біріктірілген көбейту және қосу немесе алу нұсқаулары бір немесе екі дөңгелектеуді орындайды (бұл жүзеге асырумен анықталады), IEEE 754 дәлдік талаптарын асыру немесе орындау үшін (сәйкесінше). FP кері шама және кері шаманың квадрат түбірі нұсқаулары IEEE 754 дәлдік талаптарына сәйкес келмейді және талап етілетін дәлдіктен бір немесе екі бірлікпен соңғы орында ауытқыған нәтижелер береді (бұл жүзеге асырумен анықталады). Бұл нұсқаулар нұсқаудың орындалу уақыты дәлдіктен маңыздырақ болған қолданбалар үшін қызмет етеді.
микроМИПС
MicroMIPS32/64 архитектуралары MIPS32 және MIPS64 архитектураларының (сәйкесінше) кеңейтілген нұсқалары болып табылады және MIPS16e ASE-ні алмастыру үшін жасалған. MIPS16e-нің бір кемшілігі – оның 16 биттік нұсқауларын өңдеу алдында режимді ауыстыру қажеттігі. microMIPS ең көп қолданылатын 32 биттік нұсқаулардың 16 биттік нұсқаулар түрінде кодталған нұсқаларын қосады. Бұл бағдарламаларға режимді ауыстырмай 16 және 32 биттік нұсқауларды араластыруға мүмкіндік береді. microMIPS, MIPS32/64 Release 3 нұсқасымен бірге енгізілді, және MIPS32/64-тің әрбір келесі нұсқасының сәйкес microMIPS32/64 нұсқасы бар. Процессор microMIPS32/64-ті немесе microMIPS32/64-ті және оның сәйкес MIPS32/64 жиынтығын жүзеге асыруы мүмкін. MIPS32/64 Release 6 нұсқасынан бастап MIPS16e қолдауы тоқтатылды, ал microMIPS MIPS жүйесінде кодты сығудың жалғыз түріне айналды.
Қолданылуы
MIPS процессорлары тұрғын үй шлюздері мен маршрутизаторлары сияқты кіріктірілген жүйелерде қолданылады. MIPS бастапқыда жалпы мақсаттағы есептеулер үшін жобаланған. 1980 және 1990 жылдары Digital Equipment Corporation, MIPS Computer Systems, NEC, Pyramid Technology, SiCortex, Siemens Nixdorf, Silicon Graphics және Tandem Computers сияқты көптеген компаниялар жеке, жұмыс станциялары және серверлік компьютерлер үшін MIPS процессорларын пайдаланды. Тарихи тұрғыдан алғанда, Nintendo 64, Sony PlayStation, PlayStation 2 және PlayStation Portable сияқты бейне ойын консольдары MIPS процессорларын қолданды. MIPS процессорлары 1990 жылдары суперкомпьютерлерде де танымал болды, бірақ барлық мұндай жүйелер TOP500 тізімінен шығып қалды. Бұл қолданыстар бастапқыда кіріктірілген қосымшалармен толықтырылды, бірақ 1990 жылдары MIPS кіріктірілген процессорлар нарығында маңызды рөл атқарды, ал 2000 жылдары MIPS процессорларының көп бөлігі осы мақсаттарға арналды. 1990 жылдардың ортасы мен соңында өндірілген RISC микропроцессорларының үштен бірі MIPS процессоры болды деп есептеледі. 2010 жылдардың соңында MIPS машиналары кіріктірілген нарықтарда, соның ішінде автомобиль, сымсыз маршрутизаторлар, LTE модемдер (көбінесе MediaTek арқылы) және микроконтроллерлер (мысалы, Microchip Technology PIC32M) кеңінен қолданылды. Олар жеке, серверлік және қосымшалық салалардан көбінесе мүлдем жоғалып кетті.