Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

MIPS ( микропроцессор без взаимосвязанных конвейерных этапов ) [1] - это архитектура набора команд (ISA) компьютера с сокращенным набором команд (RISC) [2] : A-1 [3] : 19, разработанная MIPS Computer Systems, теперь MIPS Technologies , основанная на Соединенные Штаты.

Существует несколько версий MIPS: включая MIPS I, II, III, IV и V; а также пять выпусков MIPS32 / 64 (для 32- и 64-битных реализаций соответственно). Ранние архитектуры MIPS были только 32-битными; Позднее были разработаны 64-битные версии. По состоянию на апрель 2017 года текущей версией MIPS является MIPS32 / 64 Release 6. [4] [5] MIPS32 / 64 в первую очередь отличается от MIPS I – V тем, что в дополнение к архитектуре пользовательского режима определяется привилегированный сопроцессор управления системой в режиме ядра.

Архитектура MIPS имеет несколько дополнительных расширений. MIPS-3D, который представляет собой простой набор инструкций SIMD с плавающей запятой, предназначенных для общих трехмерных задач, [6] MDMX (MaDMaX), который представляет собой более обширный набор инструкций SIMD для целых чисел, использующий 64-битные регистры с плавающей запятой, MIPS16e, который добавляет сжатие к потоку инструкций, чтобы программы занимали меньше места, [7] и MIPS MT, что добавляет возможности многопоточности . [8]

На курсах компьютерной архитектуры в университетах и ​​технических школах часто изучается архитектура MIPS. [9] Архитектура сильно повлияла на более поздние архитектуры RISC, такие как Alpha .

История [ править ]

Первая версия архитектуры MIPS была разработана MIPS Computer Systems для ее микропроцессора R2000 , первой реализации MIPS. Оба MIPS и R2000 были введены вместе в 1985 году [ править ] Когда MIPS II был введен, MIPS была переименованы MIPS я , чтобы отличить его от новой версии. [3] : 32

MIPS Computer Systems " R6000 микропроцессор (1989) была первой реализации MIPS II. [3] : 8 Разработанный для серверов, R6000 был изготовлен и продан компанией Bipolar Integrated Technology , но потерпел неудачу с коммерческой точки зрения. В середине 1990-х многие новые 32-разрядные процессоры MIPS для встроенных систем были реализациями MIPS II, потому что введение 64-разрядной архитектуры MIPS III в 1991 году оставило MIPS II как новейшую 32-разрядную архитектуру MIPS, пока MIPS32 не был представлен в 1999 году. .A [3] : 19

MIPS Computer Systems " R4000 микропроцессор (1991) была первой реализации MIPS III. Он был разработан для использования на персональных компьютерах, рабочих станциях и серверах. Компания MIPS Computer Systems активно продвигала архитектуру MIPS и R4000, создав консорциум Advanced Computing Environment (ACE) для продвижения своего стандарта Advanced RISC Computing (ARC), целью которого было сделать MIPS доминирующей платформой для персональных вычислений. ARC не нашла большого успеха в персональных компьютерах, но R4000 (и производная от R4400) широко использовались в рабочих станциях и серверных компьютерах, особенно его крупнейшим пользователем, Silicon Graphics.. Другое использование R4000 включало высокопроизводительные встраиваемые системы и суперкомпьютеры. MIPS III в конечном итоге был реализован с помощью ряда встроенных микропроцессоров. Квантовый эффект Дизайн «ы R4600 (1993) и ее производные широко используются в высокопроизводительных встраиваемых систем и низкого уровня рабочих станций и серверов. R4200 (1994) от MIPS Technologies был разработан для встраиваемых систем, портативных и персональных компьютеров. Его производная, R4300i, изготовленная NEC Electronics , использовалась в игровой консоли Nintendo 64 . Nintendo 64 вместе с PlayStation были одними из самых массовых пользователей процессоров архитектуры MIPS в середине 1990-х годов.

Первой реализацией MIPS IV был набор микросхем микропроцессора MIPS Technologies R8000 (1994). Разработка R8000 началась в Silicon Graphics, Inc. и использовалась только в высокопроизводительных рабочих станциях и серверах для научных и технических приложений, где важна была высокая производительность при больших рабочих нагрузках с плавающей запятой. Более поздними реализациями были MIPS Technologies R10000 (1996) и Quantum Effect Devices R5000 (1996) и RM7000.(1998). R10000, производимый и продаваемый NEC Electronics и Toshiba, и его производные использовались NEC, Pyramid Technology, Silicon Graphics, Inc. и Tandem Computers (среди прочих) в рабочих станциях, серверах и суперкомпьютерах. R5000 и R7000 нашли применение в высокопроизводительных встроенных системах, персональных компьютерах, а также на рабочих станциях и серверах начального уровня. Производная R5000 от Toshiba, R5900, использовалась в движке Emotion Engine от Sony Computer Entertainment , на котором установлена игровая консоль PlayStation 2 .

Объявленный 21 октября 1996 года на Microprocessor Forum 1996 вместе с расширением MIPS Digital Media Extensions (MDMX), MIPS V был разработан для повышения производительности преобразований трехмерной графики. [10] В середине 1990-х годов основным применением невстроенных микропроцессоров MIPS были графические рабочие станции от SGI. MIPS V был дополнен расширением MDMX только для целых чисел, чтобы предоставить полную систему для повышения производительности приложений трехмерной графики. [11] Реализации MIPS V так и не были представлены. 12 мая 1997 года SGI анонсировала микропроцессоры «H1» («Зверь») и «H2» («Capitan»). Первый должен был стать первой реализацией MIPS V и должен был быть представлен в первой половине 1999 года [12].Позднее проекты «H1» и «H2» были объединены и в конечном итоге были отменены в 1998 году. Хотя не было никаких реализаций MIPS V, MIPS64 Release 1 (1999) был основан на MIPS V и сохраняет все свои функции в качестве дополнительного сопроцессора. 1 (FPU) функция под названием Paired-Single.

Когда MIPS Technologies была выделена из Silicon Graphics в 1998 году, она переориентировалась на рынок встраиваемых систем. До MIPS V каждая последующая версия была строгим надмножеством предыдущей версии, но это свойство было признано проблемой, [ необходима цитата ], и определение архитектуры было изменено для определения 32-битной и 64-битной архитектуры: MIPS32 и MIPS64. Оба были представлены в 1999 году. [13] MIPS32 основан на MIPS II с некоторыми дополнительными функциями из MIPS III, MIPS IV и MIPS V; MIPS64 основан на MIPS V. [13] NEC , Toshiba и SiByte (позже приобретенный Broadcom) каждый получил лицензии на MIPS64, как только об этом было объявлено. С тех пор к ним присоединились Philips , LSI Logic , IDT , Raza Microelectronics, Inc. , Cavium , Loongson Technology и Ingenic Semiconductor . MIPS32 / MIPS64 Release 5 был анонсирован 6 декабря 2012 года. [14] Релиз 4 был пропущен, потому что число четыре во многих азиатских культурах считается несчастливым . [15]

В декабре 2018 года компания Wave Computing, новый владелец архитектуры MIPS, объявила, что MIPS ISA будет иметь открытый исходный код в программе, получившей название MIPS Open Initiative. [16] Программа была предназначена для открытия доступа к самым последним версиям как 32-битных, так и 64-битных проектов, делая их доступными без каких-либо лицензионных или лицензионных сборов, а также предоставляя участникам лицензии на существующие патенты MIPS. [17] [18] [19]

В марте 2019 года одна версия архитектуры была предоставлена ​​по бесплатной лицензии [20], но позже в том же году программа была снова закрыта. [21]

В марте 2021 года компания Wave Computing объявила о прекращении разработки архитектуры MIPS. Компания присоединилась к фундаменту RISC-V, и будущие конструкции процессоров будут основаны на архитектуре RISC-V. [22] [23]

Дизайн [ править ]

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-битных регистра общего назначения (GPR). Регистр $ 0 жестко привязан к нулю, и записи в него отбрасываются. Реестр 31 $ - это ссылка на регистр. Для инструкций целочисленного умножения и деления, которые выполняются асинхронно из других инструкций, предусмотрена пара 32-битных регистров, HI и LO . Существует небольшой набор инструкций для копирования данных между регистрами общего назначения и регистрами HI / LO.

Счетчик программ имеет 32 бита. Два младших бита всегда содержат ноль, поскольку инструкции MIPS I имеют длину 32 бита и выровнены по своим естественным границам слова.

Форматы инструкций [ править ]

Инструкции делятся на три типа: R, I и J. Каждая инструкция начинается с 6-битного кода операции. Помимо кода операции, инструкции R-типа определяют три регистра, поле величины сдвига и поле функции; Инструкции I-типа определяют два регистра и 16-битное непосредственное значение; Инструкции J-типа следуют за кодом операции с 26-битной целью перехода. [2] : А-174

Следующие три формата используются для основного набора команд:

Инструкции процессора [ править ]

В MIPS I есть инструкции, которые загружают и хранят 8-битные байты, 16-битные полуслова и 32-битные слова. Только один режим адресацииподдерживается: база + смещение. Поскольку MIPS I является 32-битной архитектурой, загрузка величин менее 32 бит требует, чтобы данные были либо подписаны, либо расширены нулем до 32 бит. Команды загрузки с суффиксом «unsigned» выполняют нулевое расширение; в противном случае выполняется расширение знака. Инструкции загрузки создают базу из содержимого георадара (rs) и записывают результат в другой георадар (rt). Инструкции сохранения создают базу из содержимого георадара (rs) и данные сохранения от другого георадара (rt). Все инструкции загрузки и сохранения вычисляют адрес памяти путем немедленного суммирования основания с 16-битным расширенным знаком. MIPS I требует, чтобы все обращения к памяти были выровнены по их естественным границам слов, в противном случае будет сигнализироваться исключение. Чтобы поддерживать эффективный доступ к невыровненной памяти,есть инструкции загрузки / сохранения слов с суффиксами «влево» или «вправо». Все инструкции по загрузке сопровождаютсяслот задержки загрузки . Инструкция в слоте задержки загрузки не может использовать данные, загруженные инструкцией загрузки. Слот задержки загрузки может быть заполнен инструкцией, не зависящей от нагрузки; nop заменяется, если такая инструкция не может быть найдена.

В MIPS I есть инструкции для выполнения сложения и вычитания. Эти инструкции получают свои операнды из двух GPR (rs и rt) и записывают результат в третий GPR (rd). В качестве альтернативы, сложение может получить один из операндов из 16-битного непосредственного (который расширен по знаку до 32 бит). Инструкции для сложения и вычитания имеют два варианта: по умолчанию, если результат переполнен, сигнализируется исключение; инструкции с суффиксом «без знака» не сигнализируют об исключении. При проверке переполнения результат интерпретируется как 32-битное целое число с дополнением до двух. В MIPS I есть инструкции для побитовогологические И, ИЛИ, XOR и NOR. Эти инструкции получают свои операнды из двух GPR и записывают результат в третий GPR. В качестве альтернативы инструкции AND, OR и XOR могут быть источником одного из операндов из 16-битного непосредственного (который расширяется нулем до 32 бит). Набор на реляционных инструкциях написать один или ноль в регистр назначения , если указанная связь является истинной или ложной. Эти инструкции получают свои операнды из двух GPR или одного GPR и 16-битного непосредственного (который расширен знаком до 32 бит) и записывают результат в третий GPR. По умолчанию операнды интерпретируются как целые числа со знаком. Варианты этих инструкций с суффиксом «беззнаковый» интерпретируют операнды как беззнаковые целые числа (даже те, которые исходят из операнда из 16-битного расширенного знака).

Команда Load Immediate Upper немедленно копирует 16-битные данные в старшие 16 битов GPR. Он используется вместе с инструкцией Or Immediate для немедленной загрузки 32-битного значения в регистр.

MIPS I содержит инструкции для выполнения логических сдвигов влево и вправо и арифметических сдвигов вправо. Операнд получается из георадара (rt), а результат записывается в другой георадар (rd). Расстояние сдвига получается либо из GPR (rs), либо из 5-битной «величины сдвига» (поле «sa»).

MIPS I содержит инструкции для знакового и беззнакового целочисленного умножения и деления. Эти инструкции получают свои операнды из двух GPR и записывают свои результаты в пару 32-битных регистров, называемых HI и LO, поскольку они могут выполняться отдельно от других инструкций ЦП (и одновременно с ними). Для умножения половина старшего и младшего разряда 64-битного произведения записывается в HI и LO (соответственно). Для деления частное записывается в LO, а остаток - в HI. Для доступа к результатам предусмотрена пара инструкций (Переместить из HI и Переместить из LO) для копирования содержимого HI или LO в георадар. Эти инструкции взаимосвязаны: чтение HI и LO не продолжается после незавершенной арифметической инструкции, которая будет записывать в HI и LO. Другая пара инструкций (Move to HI или Move to LO) копирует содержимое GPR в HI и LO.Эти инструкции используются для восстановления HI и LO в исходное состояние после обработки исключения. Инструкции, которые читают HI или LO, должны быть разделены двумя инструкциями, которые не пишут в HI или LO.

За всеми инструкциями потока управления MIPS I следует слот задержки перехода . Если слот задержки перехода не заполнен инструкцией, выполняющей полезную работу, заменяется nop. Инструкции ветвления MIPS I сравнивают содержимое GPR (rs) с нулем или другим GPR (rt) как целые числа со знаком и переходят, если заданное условие истинно. Управление передается по адресу, вычисленному путем сдвига 16-битного смещения влево на два бита, расширения знака 18-битного результата и добавления 32-битного результата с расширенным знаком к сумме счетчика программ (адрес инструкции) и 8 10. У скачков есть две версии: абсолютная и регистрово-косвенная. Абсолютные переходы ("Jump" и "Jump and Link") вычисляют, что управление адресом передается путем сдвига 26-битного instr_index влево на два бита и объединения 28-битного результата с четырьмя старшими битами адреса инструкция в слоте задержки перехода. Косвенный регистр переходит к передаче управления команде по адресу, полученному от GPR (rs). Адрес, полученный от GPR, должен быть выровнен по словам, в противном случае после выполнения инструкции в слоте задержки ветвления будет сообщено об исключении. Инструкции перехода и перехода, которые связываются (за исключением «Регистра перехода и связи»), сохраняют адрес возврата в GPR 31. Команда «Jump and Link Register» позволяет сохранить адрес возврата в любой записываемый GPR.

MIPS I имеет две инструкции для программного обеспечения, чтобы сигнализировать об исключении: системный вызов и точка останова. Системный вызов используется программным обеспечением пользовательского режима для выполнения вызовов ядра; Точка останова используется для передачи управления отладчику через обработчик исключений ядра. Обе инструкции имеют 20-битное поле кода, которое может содержать информацию об операционной среде для обработчика исключений.

MIPS имеет 32 регистра с плавающей запятой. Два регистра объединены в пары для чисел с двойной точностью. Регистры с нечетными номерами не могут использоваться для арифметики или ветвления, просто как часть пары регистров двойной точности, в результате чего для большинства инструкций доступно 16 регистров (перемещение / копирование и загрузка / сохранение не были затронуты).

Одинарная точность обозначается суффиксом .s, а двойная точность обозначается суффиксом .d.

MIPS II [ править ]

MIPS II удалил слот задержки загрузки [3] : 41 и добавил несколько наборов инструкций. Для многопроцессорной разделяемой памяти, Синхронизировать Shared Memory , Нагрузка Linked Слово , и магазин Условный слова были добавлены инструкции. Был добавлен набор инструкций Trap-on-Condition. Эти инструкции вызывали исключение, если оцениваемое условие истинно. Всем существующим командам ветвления были предоставлены версии с вероятностью ветвления, которые выполняли команду в слоте задержки ветвления, только если ветвление было выполнено. [3] : 40 Эти инструкции улучшают производительность в некоторых случаях, позволяя полезным инструкциям заполнять слот задержки перехода. [3]: 212 Добавлены инструкции по загрузке и сохранению двойного слова для COP1–3. В соответствии с другими инструкциями доступа к памяти, эти загрузки и сохранения требовали естественного выравнивания двойного слова.

В набор инструкций для сопроцессора с плавающей запятой также было добавлено несколько инструкций. Была добавлена ​​инструкция извлечения квадратного корня с плавающей запятой, совместимая с IEEE 754. Он поддерживает операнды как с одинарной, так и с двойной точностью. Был добавлен набор инструкций, которые преобразовывали числа с плавающей запятой одинарной и двойной точности в 32-битные слова. Они дополнили существующие инструкции преобразования, позволив указывать режим округления IEEE с помощью инструкции вместо регистра управления и состояния с плавающей запятой.

MIPS III [ править ]

MIPS III - это обратно совместимое расширение MIPS II, в котором добавлена ​​поддержка 64-битной адресации памяти и целочисленных операций. 64-битный тип данных называется двойным словом, и MIPS III расширил регистры общего назначения, регистры HI / LO и программный счетчик до 64 бит для его поддержки. Были добавлены новые инструкции для загрузки и хранения двойных слов, для выполнения над ними операций сложения, вычитания, умножения, деления и сдвига целых чисел, а также для перемещения двойного слова между GPR и регистрами HI / LO. Существующие инструкции, изначально определенные для работы с 32-битными словами, были переопределены, где это необходимо, для расширения 32-битных результатов знаками, чтобы позволить словам и двойным словам обрабатываться одинаково большинством инструкций. Среди переопределенных инструкций была загрузка слова.. В MIPS III он расширяет слова до 64 бит с помощью знака. В дополнение к Load Word была добавлена ​​версия с нулевым расширением.

Неспособность формата инструкции R указать полное расстояние сдвига для 64-битных сдвигов (его 5-битное поле величины сдвига слишком узкое, чтобы указать расстояние сдвига для двойных слов) требовало, чтобы MIPS III предоставлял три 64-битных версии каждого сдвига MIPS I. инструкция. Первая версия представляет собой 64-битную версию исходных инструкций сдвига, используемых для определения постоянных расстояний сдвига 0–31 бит. Вторая версия аналогична первой, но добавляет 32 10 значение поля величины сдвига, так что можно указать постоянные расстояния сдвига 32–64 бита. Третья версия получает расстояние сдвига из шести младших битов георадара.

MIPS III добавил уровень привилегий супервизора между существующими уровнями привилегий ядра и пользователей. Эта функция затрагивает только определяемый реализацией процессор управления системой (сопроцессор 0).

MIPS III удалил инструкции поддержки сопроцессора 3 (CP3) и повторно использовал его коды операций для новых инструкций двойного слова. Остальные сопроцессоры получили инструкции для перемещения двойных слов между регистрами сопроцессора и GPR. Плавающие регистры общего назначения (FGR) были расширены до 64 бит, а требование для инструкций использовать только регистры с четными номерами было снято. Это несовместимо с более ранними версиями архитектуры; бит в регистре управления / состояния с плавающей запятой используется для работы модуля с плавающей запятой (FPU) MIPS III в режиме, совместимом с MIPS I и II. Регистры управления с плавающей запятой не были расширены для совместимости.Единственными добавленными новыми инструкциями с плавающей запятой были инструкции по копированию двойных слов между ЦП и FPU для преобразования чисел с плавающей запятой одинарной и двойной точности в целые числа с двойным словом и наоборот.

MIPS IV [ править ]

MIPS IV - четвертая версия архитектуры. Это расширенный набор MIPS III и совместим со всеми существующими версиями MIPS. MIPS IV был разработан, чтобы в основном улучшить производительность операций с плавающей запятой (FP). Чтобы улучшить доступ к операндам, был добавлен режим индексированной адресации (базовый + индекс, оба получены из GPR) для загрузки и сохранения FP, а также были добавлены инструкции предварительной выборки для выполнения предварительной выборки из памяти и указания подсказок кеша (они поддерживали базовое + смещение и базовое + режимы индексной адресации).

MIPS IV добавил несколько функций для улучшения параллелизма на уровне команд. Чтобы уменьшить узкое место, вызванное одним битом условия, в регистр управления и состояния с плавающей запятой было добавлено семь битов кода условия, в результате чего общее количество битов достигло восьми. Инструкции сравнения FP и перехода были переопределены, чтобы они могли указывать, какой бит условия был записан или прочитан (соответственно); и интервал задержки между ветвью FP, которая считывает бит условия, записанный в результате предыдущего сравнения FP, был удален. Добавлена поддержка частичного предсказания в виде инструкций условного перемещения как для GPR, так и для FPR; и реализация могла выбирать между точными или неточными исключениями для ловушек IEEE 754.

MIPS IV добавил несколько новых арифметических инструкций FP для FPN как одинарной, так и двойной точности: объединенное умножение, сложение или вычитание, обратный и обратный квадратный корень. Команды сложения и вычитания FP с объединенным умножением выполняют одно или два округления (это определяется реализацией) для превышения или соответствия требованиям точности IEEE 754 (соответственно). Инструкции FP с обратным и обратным квадратным корнем не соответствуют требованиям точности IEEE 754 и дают результаты, которые отличаются от требуемой точности на одну или две единицы последнего разряда (это определяется реализацией). Эти инструкции служат приложениям, в которых задержка выполнения инструкций важнее точности.

MIPS V [ править ]

MIPS V добавил новый тип данных, парный одиночный (PS), который состоял из двух чисел с плавающей запятой одинарной точности (32-битных), хранящихся в существующих 64-битных регистрах с плавающей запятой. Варианты существующих инструкций с плавающей запятой для арифметики, сравнения и условного перемещения были добавлены для работы с этим типом данных в режиме SIMD. Добавлены новые инструкции для загрузки, переупорядочивания и преобразования данных PS. [3] : 426–429 Это был первый набор инструкций для использования SIMD с плавающей запятой с существующими ресурсами. [11]

MIPS32 / MIPS64 [ править ]

В первом выпуске MIPS32, основанном на MIPS II, добавлены условные перемещения, инструкции предварительной выборки и другие функции из семейств 64-разрядных процессоров R4000 и R5000. [13] В первом выпуске MIPS64 добавлен режим MIPS32 для выполнения 32-разрядного кода. [13] Инструкции MUL и MADD ( умножение-сложение ), ранее доступные в некоторых реализациях, были добавлены в спецификации MIPS32 и MIPS64, как и команды управления кешем . [13]

MIPS32 / MIPS64 Release 6 в 2014 году добавил следующее: [24]

  • новое семейство веток без слота задержки:
    • безусловные переходы (BC) и переходы и ссылки (BALC) с 26-битным смещением,
    • условный переход на ноль / ненулевое значение с 21-битным смещением,
    • полный набор условных ветвей со знаком и без знака сравнивается между двумя регистрами (например, BGTUC) или регистром с нулевым значением (например, BGTZC),
    • полный набор ветвей и ссылок, которые сравнивают регистр с нулем (например, BGTZALC).
  • инструкции перехода по индексу без слота задержки, предназначенные для поддержки больших абсолютных адресов.
  • инструкции для загрузки 16-битных данных располагаются сразу в позиции 16, 32 или 48 бита, что позволяет легко генерировать большие константы.
  • Инструкции загрузки относительно ПК, а также генерация адресов с большими (относительно ПК) смещениями.
  • Инструкции по инвертированию битов и выравниванию байтов (ранее были доступны только с расширением DSP).
  • переопределены инструкции умножения и деления, чтобы они использовали один регистр для своего результата).
  • инструкции, генерирующие значения истинности, теперь генерируют все нули или все единицы, а не просто очищают / устанавливают 0-бит,
  • инструкции, использующие значение истинности, теперь интерпретируют только все нули как ложные, а не просто смотрят на нулевой бит.

Удалены нечасто используемые инструкции:

  • некоторые условные ходы
  • вероятные инструкции ветки (устарело в предыдущих выпусках).
  • инструкции перехвата целочисленного переполнения с немедленным 16-битным
  • инструкции целочисленного аккумулятора (вместе регистры HI / LO, перемещенные в расширение для конкретного приложения DSP)
  • невыровненные инструкции загрузки (LWL и LWR), (требующие, чтобы большинство обычных загрузок и хранилищ поддерживали несогласованный доступ, возможно, через захват и с добавлением новой инструкции (BALIGN))

Реорганизована кодировка инструкций, освободив место для будущих расширений.

microMIPS [ править ]

Архитектуры 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.

Расширения для конкретных приложений [ править ]

Базовые архитектуры MIPS32 и MIPS64 могут быть дополнены рядом дополнительных архитектурных расширений, которые вместе называются расширениями для конкретных приложений (ASE). Эти ASE предоставляют функции, которые повышают эффективность и производительность определенных рабочих нагрузок, таких как цифровая обработка сигналов .

MIPS MCU
Улучшения для приложений микроконтроллеров. MCU ASE (расширение для конкретного приложения) был разработан для расширения поддержки контроллера прерываний, уменьшения задержки прерывания и улучшения функции управления периферийным вводом / выводом, которая обычно требуется в системах микроконтроллеров.
  • Разделение приоритетной и векторной генерации
  • Поддерживает до 256 прерываний в режиме EIC (внешний контроллер прерываний) и восемь контактов аппаратного прерывания
  • Предоставляет 16-битный адрес смещения вектора
  • Предварительная выборка вектора исключения прерывания
  • Автоматический пролог прерывания - добавляет оборудование для сохранения и обновления состояния системы перед процедурой обработки прерывания
  • Эпилог автоматического прерывания - восстанавливает состояние системы, ранее сохраненное в стеке, для возврата из прерывания.
  • Цепочка прерываний - поддерживает обслуживание ожидающих прерываний без необходимости выхода из процедуры начального прерывания, сохраняя циклы, необходимые для сохранения и восстановления нескольких активных прерываний
  • Поддерживает спекулятивную предварительную выборку адреса вектора прерывания. Уменьшает количество циклов обслуживания прерывания за счет перекрытия доступа к памяти с очисткой конвейера и установлением приоритета исключений
  • Включает в себя инструкции по установке / очистке атомарных битов, которые позволяют изменять биты в регистре ввода-вывода, которые обычно используются для мониторинга или управления внешними периферийными функциями, без прерывания, обеспечивая безопасное выполнение действия.
MIPS16
MIPS16 - это расширение для конкретных приложений для MIPS с I по V, разработанное LSI Logic и MIPS Technologies , анонсированное 21 октября 1996 года вместе с его первой реализацией - процессором LSI Logic TinyRISC. [25] MIPS16 был впоследствии лицензирован NEC Electronics , Philips Semiconductors и Toshiba (среди прочих); и реализован как расширение архитектур MIPS I, II и III. MIPS16 уменьшает размер приложения до 40% за счет использования 16-битных инструкций вместо 32-битных », а также улучшает энергоэффективность, частоту попаданий в кэш инструкций и по производительности эквивалентен своей базовой архитектуре. [26]Он поддерживается инструментами разработки оборудования и программного обеспечения от MIPS Technologies и других поставщиков. MIPS16e - это улучшенная версия MIPS16, впервые поддерживаемая MIPS32 и MIPS64 Release 1. MIPS16e2 - это улучшенная версия MIPS16, которая поддерживается MIPS32 и MIPS64 (до версии 5). Выпуск 6 заменил его на microMIPS.
Цифровая обработка сигналов MIPS (DSP)
DSP ASE является дополнительным расширением MIPS32 / MIPS64 Release 2 и более новых наборов инструкций, которые можно использовать для ускорения большого диапазона «мультимедийных» вычислений, особенно аудио и видео. Модуль DSP содержит набор инструкций и состояний в целочисленном конвейере и требует минимальной дополнительной логики для реализации в ядрах процессоров MIPS. Версия 2 ASE была представлена ​​во второй половине 2006 года. Эта версия добавляет дополнительные инструкции к исходной ASE, но в остальном имеет обратную совместимость с ней. [27] В отличие от основной части архитектуры MIPS, это довольно нерегулярный набор операций, многие из которых выбраны в зависимости от конкретного ключевого алгоритма. Его основные нововведения (по сравнению с оригинальным MIPS32): [28]
  • Арифметика с насыщением (при переполнении вычислений выведите представимое число, наиболее близкое к непереполненному ответу).
  • Арифметика с фиксированной запятой для 32- и 16-битных дробей с фиксированной запятой со знаком в диапазоне от -1 до +1 (их широко называют «Q31» и «Q15»).
  • Существующие инструкции целочисленного умножения и умножения с накоплением, которые доставляют результаты в накопитель двойного размера (называемый «hi / lo» и 64 бита на процессорах MIPS32). DSP ASE добавляет еще три аккумулятора и несколько различных вариантов умножения-накопления.
  • Инструкции SIMD, работающие с 4 байтами без знака или 2 16-битными значениями, упакованными в 32-битный регистр (64-битный вариант DSP ASE также поддерживает большие векторы).
  • Операции SIMD - это базовая арифметика, сдвиги и некоторые операции умножения с накоплением.
Архитектура MIPS SIMD (MSA)
Расширения набора инструкций, предназначенные для ускорения работы с мультимедиа.
  • 32 векторных регистра 16 x 8-битных, 8 x 16-битных, 4 x 32-битных и 2 x 64-битных векторных элементов
  • Эффективные векторные параллельные арифметические операции с целыми числами, данными с фиксированной и плавающей запятой
  • Операции с операндами абсолютного значения
  • Доступны варианты округления и насыщенности
  • Умножение и умножение-сложение с полной точностью
  • Преобразования между целыми числами, данными с плавающей запятой и данными с фиксированной запятой
  • Полный набор команд сравнения и ветвления на векторном уровне без флага условия
  • Операции перемешивания векторов (1D) и массивов (2D)
  • Типизированные инструкции загрузки и сохранения для операций, не зависящих от порядка байтов
  • Соответствие стандарту IEEE для арифметики с плавающей запятой 754-2008
  • Точная сигнализация исключения с плавающей запятой по элементам
  • Предварительно определенные масштабируемые расширения для микросхем с большим количеством вентилей / транзисторов
  • Ускоряет приложения с интенсивными вычислениями в сочетании с использованием общей поддержки компилятора
  • Программно-программируемое решение для приложений бытовой электроники или функций, не поддерживаемых специальным оборудованием.
  • Новые приложения для интеллектуального анализа данных, извлечения функций, обработки изображений и видео и взаимодействия человека с компьютером
  • Высокопроизводительные научные вычисления
Виртуализация MIPS
Аппаратная поддержка технологии виртуализации.
Многопоточность MIPS
Каждое многопоточное ядро ​​MIPS может поддерживать до двух VPE (виртуальных элементов обработки), которые совместно используют один конвейер, а также другие аппаратные ресурсы. Однако, поскольку каждый VPE включает в себя полную копию состояния процессора, видимого программной системой, каждый VPE выглядит как полный автономный процессор для операционной системы SMP Linux. Для более детализированных приложений обработки потоков каждый VPE может поддерживать до девяти TC, распределенных между двумя VPE. TC совместно используют общий исполнительный блок, но каждый имеет свой собственный счетчик программ и файлы регистров ядра, так что каждый может обрабатывать поток из программного обеспечения. Архитектура MIPS MT также позволяет распределять циклы процессора по потокам и устанавливает относительные приоритеты потоков с дополнительным качеством обслуживания ( QoS) менеджерский блок. Это позволяет использовать два механизма приоритезации, которые определяют поток информации по шине. Первый механизм позволяет пользователю отдавать предпочтение одному потоку над другим. Второй механизм используется для распределения определенного соотношения циклов между конкретными потоками с течением времени. Комбинированное использование обоих механизмов позволяет эффективно распределять полосу пропускания для набора потоков и лучше контролировать задержки. В системах реального времени детерминизм на уровне системы очень важен, а блок QoS способствует повышению предсказуемости системы. Разработчики оборудования передовых систем могут заменить стандартный блок QoS, предоставляемый MIPS Technologies, на блок, специально настроенный для их приложения.
SmartMIPS
SmartMIPS - это расширение для конкретных приложений (ASE), разработанное Gemplus International и MIPS Technologies для повышения производительности и снижения потребления памяти для программного обеспечения смарт-карт . Он поддерживается только MIPS32, поскольку для смарт-карт не требуются возможности процессоров MIPS64. Некоторые смарт-карты используют SmartMIPS.
Расширение MIPS Digital Media (MDMX)
Ускорение мультимедийных приложений, которое было распространено в 1990-х годах в системах RISC и CISC.
MIPS-3D
Дополнительные инструкции по повышению производительности приложений 3D-графики

Соглашения о вызовах [ править ]

MIPS имеет несколько соглашений о вызовах, особенно на 32-битной платформе.

O32 ABI является наиболее часто используется ABI, благодаря своему статусу оригинальной System V ABI для MIPS. [29] [30] Он строго основан на стеке, и для передачи аргументов доступны только четыре регистра $ a0- $ a3. Пространство в стеке зарезервировано на случай, если вызываемому объекту нужно сохранить свои аргументы, но регистры не хранятся там вызывающим. Возвращаемое значение сохраняется в регистре $ v0; второе возвращаемое значение может храниться в $ v1. ABI сформировался в 1990 году и последний раз обновлялся в 1994 году. Эта воспринимаемая медлительность, наряду с устаревшей моделью с плавающей запятой только с 16 регистрами, способствовала распространению многих других соглашений о вызовах. Он определен только для 32-битных MIPS, но GCC создал 64-битную версию под названием O64. [31]

Для 64-битных версий чаще всего используется N64 ABI от Silicon Graphics. Наиболее важным улучшением является то, что теперь доступно восемь регистров для передачи аргументов; он также увеличивает количество регистров с плавающей запятой до 32. Существует также версия ILP32 под названием N32, которая использует 32-битные указатели для меньшего кода, аналогично x32 ABI . Оба работают в 64-битном режиме ЦП. [31] ABI N32 и N64 передают первые восемь аргументов функции в регистрах $ a0- $ a7; последующие аргументы передаются в стек. Возвращаемое значение (или указатель на него) сохраняется в регистрах $ v0; второе возвращаемое значение может храниться в $ v1. В обоих ABI N32 и N64 все регистры считаются 64-битными.

Было предпринято несколько попыток заменить O32 32-битным ABI, больше напоминающим N32. Конференция 1995 года представила MIPS EABI, для которого 32-разрядная версия была очень похожей. [32] EABI вдохновил MIPS Technologies на предложение более радикального "NUBI" ABI с дополнительным повторным использованием регистров аргументов для возвращаемого значения. [33] MIPS EABI поддерживается GCC, но не LLVM, и ни один из них не поддерживает NUBI.

Для всех O32 и N32 / N64 адрес возврата хранится в регистре $ ra. Это автоматически устанавливается с использованием инструкций JAL (переход и ссылка) или JALR (регистр перехода и ссылки). Пролог функции (не оконечной) подпрограммы MIPS помещает адрес возврата (в $ ra) в стек. [34] [35]

Как на O32, так и на N32 / N64 стек растет вниз, но для ABI N32 / N64 требуется 64-битное выравнивание для всех записей стека. Указатель кадра (30 долларов США) является необязательным и на практике используется редко, за исключением случаев, когда выделение стека в функции определяется во время выполнения, например, путем вызова alloca().

Для N32 и N64 адрес возврата обычно хранится за 8 байтов перед указателем стека, хотя это может быть необязательным.

Для ABI N32 и N64 функция должна сохранять регистры $ S0- $ s7, глобальный указатель ($ gp или $ 28), указатель стека ($ sp или $ 29) и указатель кадра ($ 30). ABI O32 такой же, за исключением того, что вызывающая функция требуется для сохранения регистра $ gp вместо вызываемой функции.

Для многопоточного кода указатель локального хранилища потока обычно хранится в специальном аппаратном регистре $ 29, и доступ к нему осуществляется с помощью инструкции mfhw (переход с оборудования). Известно, что по крайней мере один поставщик хранит эту информацию в регистре $ k0, который обычно зарезервирован для использования ядром, но это нестандартно.

Регистры $ k0 и $ k1 ($ 26–27) зарезервированы для использования ядром и не должны использоваться приложениями, поскольку эти регистры могут быть изменены ядром в любое время из-за прерываний, переключений контекста или других событий.

Регистры, которые сохраняются при вызове, являются регистрами, которые (по соглашению) не будут изменены системным вызовом или вызовом процедуры (функции). Например, $ s-регистры должны быть сохранены в стеке процедурой, которая должна их использовать, а $ sp и $ fp всегда увеличиваются на константы и уменьшаются обратно после того, как процедура будет выполнена с ними (и память, на которую они указывают к). Напротив, $ ra изменяется автоматически при любом обычном вызове функции (тех, которые используют jal), и $ t-регистры должны быть сохранены программой перед любым вызовом процедуры (если программе требуются значения внутри них после вызова).

Соглашение о вызовах в пользовательском пространстве независимого от позиции кода в Linux дополнительно требует, чтобы при вызове функции регистр $ t9 содержал адрес этой функции. [37] Это соглашение восходит к дополнению System V ABI для MIPS. [38]

Использует [ редактировать ]

Процессоры MIPS используются во встроенных системах, таких как домашние шлюзы и маршрутизаторы . Первоначально MIPS был разработан для вычислений общего назначения. В течение 1980-х и 1990-х годов процессоры MIPS для персональных , рабочих станций и серверных компьютеров использовались многими компаниями, такими как Digital Equipment Corporation , MIPS Computer Systems , NEC , Pyramid Technology , SiCortex , Siemens Nixdorf , Silicon Graphics и Tandem Computers .

Исторически сложилось так, что игровые приставки, такие как Nintendo 64 , Sony PlayStation , PlayStation 2 и PlayStation Portable, использовали процессоры MIPS. Процессоры MIPS также были популярны в суперкомпьютерах в 1990-х годах, но все такие системы выпали из списка TOP500 . Сначала это использование дополнялось встроенными приложениями, но в 1990-х годах MIPS стала основным присутствием на рынке встраиваемых процессоров, а к 2000-м годам большинство процессоров MIPS предназначалось для этих приложений.

В середине и конце 1990-х годов было подсчитано, что каждый третий микропроцессор RISC был процессором MIPS. [39]

К концу 2010-х годов машины MIPS все еще широко использовались на рынках встроенных систем, включая автомобильные, беспроводные маршрутизаторы, модемы LTE (в основном через MediaTek ) и микроконтроллеры (например, PIC32M ). Они в основном исчезли из личного, серверного и прикладного пространства.

Симуляторы [ править ]

Открытые виртуальные платформы (OVP) [40] включают свободно доступный для некоммерческого использования симулятор OVPsim , библиотеку моделей процессоров, периферийных устройств и платформ, а также API, которые позволяют пользователям разрабатывать свои собственные модели. Модели в библиотеке имеют открытый исходный код, написаны на C и включают 32-разрядные ядра MIPS 4K, 24K, 34K, 74K, 1004K, 1074K, M14K, microAptiv, interAptiv, proAptiv и 64-разрядные ядра MIPS 5K. . Эти модели созданы и поддерживаются компанией Imperas [41].и в партнерстве с MIPS Technologies были протестированы и получили знак MIPS-Verified. Примеры платформ на основе MIPS включают в себя как среды с нуля, так и платформы для загрузки немодифицированных двоичных образов Linux. Эти эмуляторы платформ доступны в виде исходного кода или двоичных файлов, они быстры, бесплатны для некоммерческого использования и просты в использовании. OVPsim разработан и поддерживается Imperas, очень быстрый (сотни миллионов инструкций в секунду) и предназначен для работы с многоядерными однородными и гетерогенными архитектурами и системами.

Существует бесплатный симулятор MIPS32 (более ранние версии моделировали только R2000 / R3000) под названием SPIM для использования в образовании. EduMIPS64 [42] - это графический кроссплатформенный симулятор ЦП MIPS64 под лицензией GPL, написанный на Java / Swing. Он поддерживает широкое подмножество MIPS64 ISA и позволяет пользователю графически видеть, что происходит в конвейере, когда ЦП запускает программу сборки.

MARS [43] - это еще один эмулятор MIPS на основе графического интерфейса пользователя, разработанный для использования в образовании, особенно для использования с Hennessy's Computer Organization and Design .

WebMIPS [44] - это симулятор MIPS на основе браузера с визуальным представлением универсального конвейерного процессора. Этот симулятор очень полезен для отслеживания регистров во время пошагового выполнения.

QtMips [45] [46] [47] обеспечивает простую 5- ступенчатую визуализацию конвейера, а также визуализацию принципа кеширования для курсов по базовой компьютерной архитектуре. Доступна Windows, GNU / Linux, Mac OS и онлайн-версия.

Более продвинутые бесплатные эмуляторы доступны в проектах GXemul (ранее известный как проект mips64emul) и QEMU . Они эмулируют различные микропроцессоры MIPS III и IV в дополнение ко всем компьютерным системам, которые их используют.

Коммерческие симуляторы доступны специально для встроенного использования процессоров MIPS, например Wind River Simics (MIPS 4Kc и 5Kc, PMC RM9000, QED RM7000, Broadcom / Netlogic ec4400, Cavium Octeon I), Imperas (все ядра MIPS32 и MIPS64), VaST Systems (R3000, R4000) и CoWare (MIPS4KE, MIPS24K, MIPS25Kf и MIPS34K).

WepSIM [48] - симулятор на основе браузера, в котором микропрограммируется подмножество инструкций MIPS. Этот симулятор очень полезен для изучения того, как работает ЦП (микропрограммирование, процедуры MIPS, ловушки, прерывания, системные вызовы и т. Д.).

См. Также [ править ]

  • DLX
  • Список процессоров архитектуры MIPS
  • Процессоры архитектуры MIPS
  • Конвейер (вычисления)

Ссылки [ править ]

  1. ^ Паттерсон, Дэвид (2014). Компьютерная организация и дизайн . http://booksite.elsevier.com/9780124077263/downloads/historial%20perspectives/section_4.16.pdf : Elsevier. С. 4.16–4. ISBN 978-0-12-407726-3.CS1 maint: location ( ссылка )
  2. ^ a b Прайс, Чарльз (сентябрь 1995 г.). Набор инструкций MIPS IV (версия 3.2), MIPS Technologies, Inc.
  3. ^ a b c d e f g h Свитмен, Доминик (1999). Смотрите MIPS Run . ISBN издательства Morgan Kaufmann Publishers, Inc. 1-55860-410-3.
  4. ^ "Архитектура MIPS32" . MIPS . Проверено 20 марта 2020 года .
  5. ^ "Архитектура MIPS64" . MIPS . Проверено 20 марта 2020 года .
  6. ^ "MIPS-3D ASE" . Воображаемые технологии . Архивировано из оригинального 3 -го января 2014 года . Проверено 4 января 2014 года .
  7. ^ "MIPS16e" . MIPS . Проверено 20 марта 2020 года .
  8. ^ "Многопоточность MIPS" . MIPS . Проверено 20 марта 2020 года .
  9. ^ Калифорнийский университет, Дэвис. "Справочная информация и инструменты ECS 142 (компиляторы)" . Архивировано 21 марта 2011 года . Проверено 28 мая 2009 года .
  10. ^ "Silicon Graphics представляет улучшенную архитектуру MIPS, чтобы возглавить интерактивную цифровую революцию" . Silicon Graphics, Inc. 21 октября 1996 Архивировано из оригинала 10 июля 2012 года.
  11. ^ a b Гвеннап, Линли (18 ноября 1996 г.). «Цифровой, MIPS, добавление мультимедийных расширений» (PDF) . Отчет микропроцессора . 10 (15): 24–28. Архивировано 20 июля 2011 года (PDF) .
  12. ^ «Silicon Graphics представляет план развития нового высокопроизводительного микропроцессора MIPS» (пресс-релиз). 12 мая 1997 г.
  13. ^ a b c d e «MIPS Technologies, Inc. улучшает архитектуру для поддержки растущей потребности в повторном использовании и интеграции IP» (пресс-релиз). Деловой провод . 3 мая 1999 г.
  14. ^ «Последний выпуск архитектуры MIPS включает виртуализацию и функциональность клавиш SIMD для обеспечения следующего поколения продуктов на основе MIPS» (пресс-релиз). MIPS Technologies . 6 декабря 2012 года Архивировано из оригинального 13 декабря 2012 года.
  15. ^ «MIPS пропускает выпуск 4 из-за войны ставок» . EE Times . 10 декабря 2012. Архивировано 17 апреля 2014 года.
  16. ^ «Волновые вычисления расширяют лидерство в области ИИ, ориентируясь на границу облака за счет приобретения MIPS» . 15 июня 2018 г.
  17. ^ «Wave Computing® запускает открытую инициативу MIPS для ускорения инноваций в известной архитектуре MIPS®» . 17 декабря 2018.
  18. ^ "Процессор MIPS ISA будет открыт в 2019 году - Phoronix" .
  19. Ёсида, Дзюнко (17 декабря 2018 г.). «MIPS становится открытым исходным кодом» . EE Times .
  20. ^ «Архитектура MIPS R6 теперь доступна для открытого использования» . 28 марта 2019.
  21. ^ «Волновые вычисления закрывают свою открытую инициативу MIPS с немедленным эффектом, нулевым предупреждением» . 15 ноября 2019.
  22. ^ MIPS становится RISC-V 8 марта 2021 г. Дата обращения 11 марта 2021 г.
  23. ^ Wave Computing и MIPS выходят из главы 11 о банкротстве 1 марта 2021 года. Проверено 11 марта 2021 года.
  24. ^ "MIPS - ведущие на рынке решения для процессоров RISC CPU IP" . imgtec.com . Архивировано из оригинала 9 марта 2016 года . Проверено 11 февраля +2016 .
  25. ^ «Silicon Graphics представляет компактный код микропроцессора MIPS RISC для высокой производительности при низкой стоимости» (пресс-релиз). 21 октября 1996 г.
  26. ^ Sweetman, Доминик (2007). См. MIPS Run (2-е изд.). Сан-Франциско, Калифорния: Издательство Морган Кауфманн. С. 425–427. ISBN 978-0-12-088421-6.
  27. ^ «Использование коллекции компиляторов GNU (GCC): встроенные функции MIPS DSP» . gcc.gnu.org . Архивировано 20 апреля 2017 года.
  28. ^ "Архитектура набора команд - LinuxMIPS" . www.linux-mips.org . Архивировано 20 апреля 2017 года.
  29. ^ Sweetman, Доминик (2007). См. MIPS Run, 2-е издание . Морган Кауфманн. ISBN 978-0-12088-421-6.
  30. ^ "Краткий справочник по набору инструкций MIPS32" .
  31. ^ a b "История MIPS ABI" .
  32. Эрик Кристофер (11 июня 2003 г.). "Документация по mips eabi" . [email protected] (список рассылки) . Проверено 19 июня 2020 года .
  33. ^ "НУБИ" .
  34. Карен Миллер. « Соглашения об использовании регистров MIPS ». 2006 г.
  35. ^ Хэл Перкинс. " "MIPS Calling конвенции ". 2006.
  36. ^ Справочник MIPSpro N32 ABI (PDF) . Силиконовая графика .
  37. ^ "Код PIC - LinuxMIPS" . www.linux-mips.org . Проверено 21 сентября 2018 года .
  38. ^ «Приложение System V для двоичного интерфейса MIPS RISC Processor Supplement, 3rd Edition» (PDF) . С. 3–12.
  39. ^ Рубио, Виктор П. "Реализация FPGA процессора MIPS RISC для образования в области компьютерной архитектуры" (PDF) . Государственный университет Нью-Мексико . Архивировано (PDF) из оригинала 15 апреля 2012 года . Проверено 22 декабря 2011 года .
  40. ^ «OVP: быстрое моделирование, бесплатные модели с открытым исходным кодом. Виртуальные платформы для разработки программного обеспечения» . Ovpworld.org. Архивировано 8 июня 2012 года . Проверено 30 мая 2012 года .
  41. ^ "Имперас" . Имперас. 3 марта 2008 года архивации с оригинала на 14 июня 2012 . Проверено 30 мая 2012 года .
  42. ^ "EduMIPS64" . Edumips.org. Архивировано 7 мая 2012 года . Проверено 30 мая 2012 года .
  43. ^ "Симулятор MARS MIPS - Государственный университет Миссури" . Courses.missouristate.edu. Архивировано 2 мая 2012 года . Проверено 30 мая 2012 года .
  44. ^ "WebMIPS - МОДЕЛИРОВАНИЕ, ОБЕСПЕЧИВАЕМОЕ ЦП MIPS, в сети" . Архивировано из оригинального 31 декабря 2012 года . Проверено 13 января 2012 года .(онлайн-демонстрация) «Архивная копия» . Архивировано 10 октября 2011 года . Проверено 13 января 2012 года .CS1 maint: заархивированная копия как заголовок ( ссылка ) (источник)
  45. ^ "QtMips - симулятор процессора MIPS для образовательных целей" . Проверено 24 января 2021 года .
  46. ^ Kočí, Карел (2018). Графический симулятор ЦП с визуализацией кэша (PDF) (MSc). Чешский технический университет в Праге . Проверено 25 января 2021 года .
  47. ^ Gizopoulos , Димитрис (6 декабря 2020). «Основы QtMips-v3» (PDF) . Афинский национальный университет им . Каподистрии . Проверено 25 января 2021 года .
  48. ^ "WepSim" . (Интернет-версия с примерами) . Проверено 21 октября 2019 года . «WepSim» . (Сайт GitHub с исходным кодом) . Проверено 21 октября 2019 года .

Дальнейшее чтение [ править ]

  • Фаркуар, Эрин; Филип Банс (1994). Справочник программиста MIPS . Издательство Морган Кауфманн. ISBN 1-55860-297-6.
  • Паттерсон, Дэвид А ; Джон Л. Хеннесси (2004). Компьютерная организация и дизайн: аппаратно-программный интерфейс . Издательство Морган Кауфманн . ISBN 1-55860-604-1.
  • Sweetman, Доминик (1999). Смотрите MIPS Run . Издательство Морган Кауфманн. ISBN 1-55860-410-3.
  • Sweetman, Доминик (2007). См. MIPS Run, 2-е издание . Издательство Морган Кауфманн. ISBN 978-0-12-088421-6.

Внешние ссылки [ править ]

  • Процессоры MIPS
  • prpl Foundation (некоммерческий фонд, основанный Imagination Technologies для поддержки платформы MIPS)
  • Диаграмма истории архитектуры MIPS на Wayback Machine (архивировано 30 мая 2013 г.)
  • Онлайн-эмулятор MIPS
  • Инструкции MIPS - набор инструкций MIPS