Архитектура MIPS
Дизайнер | MIPS Technologies , Технологии воображения |
---|---|
Биты | 64-бит (32 → 64) |
Представлено | 1985 год |
Версия | MIPS32/64, выпуск 6 (2014 г.) |
Дизайн | РИСК |
Тип | Загрузка-сохранение |
Кодирование | Зафиксированный |
Ветвление | Сравнение и переход с задержкой в 1 инструкцию после проверки условия ветвления. |
Порядок байтов | С |
Размер страницы | 4 КБ |
Расширения | МДМС , МИПС-3D |
Открыть | Частично. Процессор R16000 присутствует на рынке уже более 20 лет и поэтому не может быть предметом патентных претензий. Поэтому процессоры R16000 и старше полностью открыты. |
Регистры | |
общего назначения | 32 |
Плавающая точка | 32 |
MIPS ( микропроцессор без взаимосвязанных конвейерных этапов ) [1] представляет собой семейство компьютера с сокращенным набором команд (RISC) архитектур набора команд (ISA). [2] : А-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-инструкций , предназначенный для распространенных 3D-задач. [6] MDMX (MaDMaX), который представляет собой более обширный набор целочисленных команд SIMD , использующий 64-битные регистры с плавающей запятой, MIPS16e, который добавляет сжатие к потоку команд, чтобы программы занимали меньше места, [7] и MIPS MT, который добавляет возможность многопоточности . [8]
Курсы компьютерной архитектуры в университетах и технических школах часто изучают архитектуру MIPS. [9] Эта архитектура сильно повлияла на более поздние RISC-архитектуры, такие как Alpha . В марте 2021 года MIPS объявила, что разработка архитектуры MIPS завершилась, поскольку компания осуществляет переход на RISC-V . [10]
История
[ редактировать ]Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( февраль 2020 г. ) |
Первая версия архитектуры MIPS была разработана компанией MIPS Computer Systems для ее микропроцессора R2000 , первой реализации MIPS. И MIPS, и R2000 были представлены вместе в 1985 году. [11] [ не удалось пройти проверку ] Когда был представлен MIPS II, MIPS был переименован в MIPS I , чтобы отличить его от новой версии. [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 до тех пор, пока в 1999 году не был представлен MIPS32. . [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 в конечном итоге был реализован с помощью ряда встроенных микропроцессоров. Quantum Effect Design (1993) компании R4600 и его производные широко использовались в высокопроизводительных встроенных системах, а также в недорогих рабочих станциях и серверах. (1994 г.) компании MIPS Technologies R4200 был разработан для встраиваемых систем, ноутбуков и персональных компьютеров. Производная версия 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 и Tandem Computers (среди прочих) на рабочих станциях, серверах и суперкомпьютерах. R5000 и R7000 нашли применение в высокопроизводительных встраиваемых системах, персональных компьютерах, а также в недорогих рабочих станциях и серверах. Производная версия R5000 от Toshiba, R5900, использовалась в Emotion Engine от Sony Computer Entertainment , который использовался в игровой консоли PlayStation 2 .
MIPS V , анонсированный 21 октября 1996 года на Microprocessor Forum 1996 вместе с расширением MIPS Digital Media Extensions (MDMX), был разработан для повышения производительности преобразований 3D-графики. [12] В середине 1990-х годов невстроенные микропроцессоры MIPS в основном использовались в графических рабочих станциях от Silicon Graphics. MIPS V был дополнен расширением MDMX только для целых чисел, чтобы обеспечить полную систему для повышения производительности приложений 3D-графики. [13] Реализации MIPS V так и не были представлены. 12 мая 1997 года компания Silicon Graphics анонсировала микропроцессоры H1 («Зверь») и H2 («Капитан»). Первый должен был стать первой реализацией MIPS V и должен был быть представлен в первой половине 1999 года. [14] Проекты H1 и H2 позже были объединены и в конечном итоге отменены в 1998 году. Хотя никаких реализаций MIPS V не было, MIPS64 Release 1 (1999) был основан на MIPS V и сохранил все его функции в качестве дополнительной функции сопроцессора 1 (FPU). называется Парно-Одиночный.
Когда в 1998 году MIPS Technologies была выделена из Silicon Graphics, она переориентировалась на рынок встраиваемых систем. В MIPS V каждая последующая версия была строгой надстройкой предыдущей версии, но это свойство оказалось проблемой. [ нужна ссылка ] и определение архитектуры было изменено, чтобы определить 32-битную и 64-битную архитектуру: MIPS32 и MIPS64. Оба были представлены в 1999 году. [15] MIPS32 основан на MIPS II с некоторыми дополнительными функциями MIPS III, MIPS IV и MIPS V; MIPS64 основан на MIPS V. [15] NEC , Toshiba и SiByte (позже приобретенные Broadcom ) получили лицензии на MIPS64, как только о нем было объявлено. Philips , LSI Logic , IDT , Raza Microelectronics, Inc. , Cavium , Loongson Technology и Ingenic Semiconductor С тех пор к ним присоединились . MIPS32/MIPS64 Release 5 был анонсирован 6 декабря 2012 года. [16] число четыре считается несчастливым . По словам директора по маркетингу продукции MIPS, четвертый выпуск был пропущен, поскольку во многих азиатских культурах [17]
В декабре 2018 года компания Wave Computing, новый владелец архитектуры MIPS, объявила, что MIPS ISA будет иметь открытый исходный код в рамках программы, получившей название MIPS Open Initiative. [18] Программа была предназначена для открытия доступа к самым последним версиям как 32-битных, так и 64-битных разработок, делая их доступными без каких-либо лицензионных или лицензионных отчислений, а также предоставляя участникам лицензии на существующие патенты MIPS. [19] [20] [21]
В марте 2019 года одна версия архитектуры была доступна по бесплатной лицензии. [22] но позже в том же году программу снова закрыли. [23]
В марте 2021 года Wave Computing объявила о прекращении разработки архитектуры MIPS. Компания присоединилась к фонду RISC-V, и будущие разработки процессоров будут основаны на архитектуре RISC-V. [10] [24] Несмотря на это, некоторые лицензиаты, такие как Loongson, продолжают самостоятельно создавать новые расширения MIPS-совместимых ISA. [25]
В январе 2024 года Loongson выиграла дело о правах на использование архитектуры MIPS. [26]
Дизайн
[ редактировать ]Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( февраль 2020 г. ) |
MIPS — это модульная архитектура, поддерживающая до четырех сопроцессоров (CP0/1/2/3). В терминологии MIPS CP0 — это сопроцессор управления системой (важная часть процессора, которая определяется реализацией в MIPS I–V), CP1 — это дополнительный модуль с плавающей запятой (FPU), а CP2/3 — это дополнительные сопроцессоры, определяемые реализацией. (MIPS III удалил CP3 и повторно использовал его коды операций для других целей). Например, в PlayStation игровой консоли CP2 — это механизм преобразования геометрии (GTE), который ускоряет обработку геометрии в компьютерной 3D-графике.
Версии
[ редактировать ]МИПС I
[ редактировать ]MIPS — это архитектура загрузки/сохранения (также известная как архитектура регистр-регистр ); За исключением инструкций загрузки/сохранения, используемых для доступа к памяти , все инструкции работают с регистрами.
Регистры
[ редактировать ]MIPS I имеет тридцать два 32-битных регистра общего назначения (GPR). Зарегистрироваться $0 жестко привязан к нулю, и записи в него отбрасываются. Зарегистрироваться $31 — это регистр связи. пара 32-битных регистров HI и LO Для инструкций целочисленного умножения и деления, которые выполняются асинхронно с другими инструкциями, предусмотрена . Существует небольшой набор инструкций для копирования данных между регистрами общего назначения и регистрами HI/LO.
Счетчик программ имеет 32 бита. Два младших бита всегда содержат ноль, поскольку инструкции MIPS I имеют длину 32 бита и выровнены по естественным границам своих слов.
Форматы инструкций
[ редактировать ]Инструкции делятся на три типа: R (регистрация), I (немедленное) и J (прыжок). Каждая инструкция начинается с 6-битного кода операции. В дополнение к коду операции инструкции R-типа определяют три регистра: [27] поле суммы смены и функциональное поле; Инструкции I-типа указывают два регистра и 16-битное непосредственное значение; Инструкции J-типа следуют за кодом операции с 26-битной целью перехода. [2] : А-174
Ниже приведены три формата, используемые для основного набора команд:
Тип | -31- формат (биты) -0- | |||||
---|---|---|---|---|---|---|
Р | код операции (6) | рупий (5) | рт (5) | улица (5) | шамт (5) | функция (6) |
я | код операции (6) | рупий (5) | рт (5) | немедленный (16) | ||
Дж | код операции (6) | адрес (26) |
Инструкции процессора
[ редактировать ]MIPS I имеет инструкции, которые загружают и сохраняют 8-битные байты, 16-битные полуслова и 32-битные слова. только один режим адресации Поддерживается : база + смещение. Поскольку MIPS I представляет собой 32-битную архитектуру, загрузка величин менее 32 бит требует, чтобы данные были расширены либо со знаком, либо с расширением нуля до 32 бит. Инструкции загрузки с суффиксом «без знака» выполняют нулевое расширение; в противном случае выполняется расширение знака. Инструкции загрузки берут базу из содержимого георадара (rs) и записывают результат в другой георадар (rt). Инструкции сохранения исходят из содержимого GPR (rs) и данных сохранения из другого GPR (rt). Все инструкции загрузки и сохранения вычисляют адрес памяти путем суммирования базы с немедленным расширенным знаком 16-битным числом. MIPS I требует, чтобы все обращения к памяти были выровнены по естественным границам слов, в противном случае сигнализируется исключение. Для поддержки эффективного невыровненного доступа к памяти существуют инструкции загрузки/сохранения слов с суффиксом «left» или «right». Все инструкции по загрузке сопровождаются слот задержки загрузки . Инструкция в слоте задержки загрузки не может использовать данные, загруженные инструкцией загрузки. Слот задержки загрузки может быть заполнен инструкцией, не зависящей от нагрузки; 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). Расстояние сдвига получается либо из георадара (rs), либо из 5-битной «величины сдвига» (поле «sa»).
MIPS I имеет инструкции для умножения и деления целых чисел со знаком и без знака. Эти инструкции получают свои операнды из двух GPR и записывают свои результаты в пару 32-битных регистров, называемых HI и LO, поскольку они могут выполняться отдельно (и одновременно) с другими инструкциями ЦП. При умножении старшая и младшая половины 64-битного произведения записываются в HI и LO (соответственно). При делении частное записывается в LO, а остаток в HI. Для доступа к результатам предусмотрена пара инструкций (Move from HI и Move from LO) для копирования содержимого HI или LO в георадар. Эти инструкции взаимосвязаны: чтение HI и LO не продолжается после незавершенной арифметической инструкции, которая будет записывать в HI и LO. Другая пара инструкций (Move to HI или Move to LO) копирует содержимое GPR в HI и LO. Эти инструкции используются для восстановления исходного состояния HI и LO после обработки исключений. Инструкции, которые читают HI или LO, должны быть разделены двумя инструкциями, которые не записывают HI или LO.
За всеми инструкциями потока управления MIPS I следует слот задержки перехода . Если слот задержки ветвления не заполнен инструкцией, выполняющей полезную работу, заменяется no. Инструкции ветвления MIPS I сравнивают содержимое GPR (rs) с нулевым или другим GPR (rt) как целые числа со знаком и выполняют переход, если указанное условие истинно. Управление передается по адресу, вычисленному путем смещения 16-битного смещения влево на два бита, расширения знака 18-битного результата и добавления 32-битного результата с расширенным знаком к сумме счетчика программы (адрес инструкции) и 8 10 . Переходы имеют две версии: абсолютные и косвенные по регистру. Абсолютные переходы («Jump» и «Jump and Link») вычисляют адрес, на который передается управление, путем сдвига 26-битного instr_index влево на два бита и объединения 28-битного результата с четырьмя старшими битами адреса инструкцию в слоте задержки ветвления. Регистр-косвенные переходы передают управление инструкции по адресу, полученному от GPR (rs). Адрес, полученный от GPR, должен быть выровнен по слову, иначе после выполнения инструкции в слоте задержки ветвления будет сигнализироваться исключение. Инструкции перехода и перехода, которые связывают (за исключением «Регистр перехода и связи»), сохраняют обратный адрес в GPR 31. Команда «Регистр перехода и связи» позволяет сохранить обратный адрес в любом записываемом GPR.
У MIPS I есть две инструкции для программного обеспечения, сигнализирующие об исключении: системный вызов и точка останова. Системный вызов используется программным обеспечением пользовательского режима для выполнения вызовов ядра; а точка останова используется для передачи управления отладчику через обработчик исключений ядра. Обе инструкции имеют 20-битное поле кода, которое может содержать информацию, специфичную для операционной среды, для обработчика исключений.
MIPS имеет 32 регистра с плавающей запятой. Два регистра объединены в пары для чисел двойной точности. Регистры с нечетными номерами нельзя использовать для арифметических операций или ветвления, просто как часть пары регистров двойной точности, в результате чего для большинства инструкций можно использовать 16 регистров (перемещение/копирование и загрузка/сохранение не затрагиваются).
Одинарная точность обозначается суффиксом .s, а двойная точность обозначается суффиксом .d.
МИПС II
[ редактировать ]MIPS II удалил слот задержки загрузки. [3] : 41 и добавил несколько наборов инструкций. Для многопроцессорной обработки с общей памятью «Синхронизировать общую память» , «Загрузить связанное слово» и «Сохранить условное слово» . были добавлены инструкции [28] Был добавлен набор инструкций «Ловушка при условии». Эти инструкции вызвали исключение, если оцененное условие истинно. Всем существующим инструкциям ветвления были присвоены версии , вероятные для ветвления , которые выполняли инструкцию в слоте задержки ветвления только в том случае, если ветвление было выполнено. [3] : 40 Эти инструкции в некоторых случаях улучшают производительность, позволяя полезным инструкциям заполнить слот задержки ветвления. [3] : 212 Были добавлены инструкции загрузки и сохранения двойного слова для COP1–3. Как и в случае с другими инструкциями доступа к памяти, эти загрузки и сохранения требовали естественного выравнивания двойного слова.
В набор инструкций для сопроцессора с плавающей запятой также было добавлено несколько инструкций. Была добавлена совместимая со стандартом IEEE 754 инструкция извлечения квадратного корня с плавающей запятой. Он поддерживал операнды как одинарной, так и двойной точности. Был добавлен набор инструкций, преобразующих числа с плавающей запятой одинарной и двойной точности в 32-битные слова. Они дополняли существующие инструкции преобразования, позволяя задавать режим округления IEEE с помощью инструкции вместо регистра управления и состояния с плавающей запятой.
МИПС III
[ редактировать ]MIPS III — это обратно совместимое расширение MIPS II, в которое добавлена поддержка 64-битной адресации памяти и целочисленных операций. 64-битный тип данных называется двойным словом, и MIPS III расширил регистры общего назначения, регистры HI/LO и программный счетчик до 64 бит для его поддержки. Были добавлены новые инструкции для загрузки и хранения двойных слов, для выполнения над ними операций сложения, вычитания, умножения, деления и сдвига целых чисел, а также для перемещения двойного слова между регистрами GPR и регистрами HI/LO. Для многопроцессорной обработки с общей памятью «Загрузить связанное двойное слово » и «Сохранить условное двойное слово» . были добавлены инструкции [28] Существующие инструкции, первоначально предназначенные для работы с 32-битными словами, были переопределены, где это необходимо, для расширения знака 32-битных результатов, чтобы позволить большинству инструкций обрабатывать слова и двойные слова одинаково. Среди этих переопределенных инструкций была Load Word . В MIPS III он расширяет слова до 64 бит. В дополнение к Load Word была добавлена версия с нулевым расширением.
Неспособность формата инструкции R указать полное расстояние сдвига для 64-битных сдвигов (его 5-битное поле величины сдвига слишком узкое, чтобы указать расстояние сдвига для двойных слов) потребовало, чтобы MIPS III предоставил три 64-битные версии каждого сдвига MIPS I. инструкция. Первая версия представляет собой 64-битную версию исходных инструкций сдвига, используемую для указания постоянных расстояний сдвига от 0 до 31 бита. Вторая версия аналогична первой, но добавляет 32 10 к значению поля величины сдвига, так что можно указать постоянные расстояния сдвига в 32–63 бита. Третья версия получает расстояние сдвига из шести младших битов георадара.
MIPS III добавил уровень привилегий супервизора между существующими уровнями привилегий ядра и пользователя. Эта функция затронула только определенный реализацией процессор управления системой (сопроцессор 0).
MIPS III удалил инструкции поддержки сопроцессора 3 (CP3) и повторно использовал его коды операций для новых инструкций двойного слова. Остальные сопроцессоры получили инструкции по перемещению двойных слов между регистрами сопроцессора и GPR. Плавающие регистры общего назначения (FGR) были расширены до 64 бит, а требование к инструкциям использовать только регистры с четными номерами было удалено. Это несовместимо с более ранними версиями архитектуры; бит в регистре управления/состояния операций с плавающей запятой используется для работы модуля операций с плавающей запятой (FPU) MIPS III в режиме, совместимом с MIPS I и II. Регистры управления плавающей запятой не были расширены для совместимости. Единственными новыми добавленными инструкциями с плавающей запятой были те, которые копируют двойные слова между ЦП и FPU, преобразуют числа с плавающей запятой одинарной и двойной точности в целые двойные слова и наоборот.
МИПС IV
[ редактировать ]MIPS IV — четвертая версия архитектуры. Это расширенная версия MIPS III, совместимая со всеми существующими версиями MIPS. [29] : А-1 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 добавлен новый тип данных, Paired Single (PS), который состоял из двух чисел с плавающей запятой одинарной точности (32 бита), хранящихся в существующих 64-битных регистрах с плавающей запятой. Варианты существующих инструкций с плавающей запятой для арифметики, сравнения и условного перемещения были добавлены для работы с этим типом данных в режиме SIMD. Добавлены новые инструкции по загрузке, перестановке и конвертации данных PS. [3] : 426–429 Это был первый набор команд, использующий SIMD с плавающей запятой с существующими ресурсами. [13]
МИПС32/МИПС64
[ редактировать ]В первом выпуске MIPS32, основанном на MIPS II, были добавлены условные перемещения, инструкции предварительной выборки и другие функции 64-битных процессоров семейств R4000 и R5000. [15] В первом выпуске MIPS64 добавлен режим MIPS32 для запуска 32-битного кода. [15] Инструкции MUL и MADD ( умножение-сложение ), ранее доступные в некоторых реализациях, были добавлены в спецификации MIPS32 и MIPS64, как и инструкции управления кэшем . [15] В целях управления кэшем оба SYNC
и SYNCI
были подготовлены инструкции. [30] [31]
В MIPS32/MIPS64 Release 6 в 2014 году добавлено следующее: [32]
- новое семейство ветвей без слота задержки:
- безусловные переходы (BC) и ветвления и ссылки (BALC) с 26-битным смещением,
- условный переход по нулевому/ненулевому значению со смещением 21 бит,
- полный набор знаковых и беззнаковых условных ветвей сравнивает два регистра (например, BGTUC) или регистр с нулем (например, BGTZC),
- полный набор ветвей и ссылок, которые сравнивают регистр с нулем (например, BGTZALC).
- Инструкции перехода по индексу без слота задержки, предназначенные для поддержки больших абсолютных адресов.
- инструкции для загрузки 16-битных немедленных значений в позиции бита 16, 32 или 48, что позволяет легко генерировать большие константы.
- Инструкции загрузки относительно ПК, а также генерация адресов с большими (относительно ПК) смещениями.
- инструкции по перевороту битов и выравниванию байтов (ранее доступные только с расширением DSP).
- инструкции умножения и деления были переопределены таким образом, чтобы для получения результата они использовали один регистр).
- инструкции, генерирующие значения истинности, теперь генерируют все нули или все единицы вместо простой очистки/установки 0-бита,
- инструкции, использующие значение истинности, теперь интерпретируют только нули как ложь, а не просто смотрят на 0-бит.
Удалены редко используемые инструкции:
- некоторые условные ходы
- ветвления вероятных инструкций (устарело в предыдущих выпусках).
- инструкции по перехвату целочисленного переполнения с 16-битным немедленным
- Инструкции целочисленного аккумулятора (вместе регистры HI/LO, перенесены в расширение DSP для конкретного приложения)
- инструкции невыровненной загрузки (LWL и LWR) (требуется, чтобы большинство обычных операций загрузки и сохранения поддерживали невыровненный доступ, возможно, посредством перехвата и с добавлением новой инструкции (BALIGN))
Реорганизована кодировка инструкций, освободив место для будущих расширений.
микроМИПС
[ редактировать ]Архитектуры 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 предоставляют функции, которые повышают эффективность и производительность определенных рабочих нагрузок, таких как цифровая обработка сигналов .
- МИПС микроконтроллер
- Улучшения для приложений микроконтроллеров. MCU ASE (расширение для конкретного приложения) было разработано для расширения поддержки контроллера прерываний , уменьшения задержки прерывания и улучшения функции управления периферией ввода-вывода, обычно необходимой в конструкциях микроконтроллерных систем.
- Раздельная генерация приоритетов и векторов
- Поддерживает до 256 прерываний в режиме EIC (внешний контроллер прерываний) и восемь контактов аппаратного прерывания.
- Предоставляет 16-битный адрес смещения вектора.
- Предварительная выборка вектора исключений прерывания
- Автоматизированный пролог прерываний — добавляет оборудование для сохранения и обновления состояния системы перед процедурой обработки прерываний.
- Автоматический эпилог прерывания – восстанавливает состояние системы, ранее сохраненное в стеке, для возврата из прерывания.
- Цепочка прерываний – поддерживает обслуживание ожидающих прерываний без необходимости выхода из исходной процедуры прерывания, сохраняя циклы, необходимые для хранения и восстановления нескольких активных прерываний.
- Поддерживает спекулятивную предварительную выборку адреса вектора прерывания. Уменьшает количество циклов обслуживания прерываний за счет перекрытия доступа к памяти с очисткой конвейера и приоритезацией исключений.
- Включает в себя атомарные инструкции по установке/очистке битов, которые позволяют без перерыва изменять биты в регистре ввода-вывода, которые обычно используются для мониторинга или управления внешними периферийными функциями, обеспечивая безопасное выполнение действия.
- МИПС16
- MIPS16 — это специальное расширение для MIPS от I до V, разработанное LSI Logic и MIPS Technologies , анонсированное 21 октября 1996 года вместе с его первой реализацией — процессором LSI Logic TinyRISC. [33] MIPS16 впоследствии был лицензирован NEC Electronics , Philips Semiconductors и Toshiba (среди прочих); и реализован как расширение архитектур MIPS I, II, III. MIPS16 уменьшает размер приложения до 40% за счет использования 16-битных инструкций вместо 32-битных, а также повышает энергоэффективность, скорость попадания в кэш инструкций и эквивалентен по производительности своей базовой архитектуре. [34] Он поддерживается инструментами разработки аппаратного и программного обеспечения от MIPS Technologies и других поставщиков. MIPS16e — это улучшенная версия MIPS16, впервые поддерживаемая MIPS32 и MIPS64 Release 1. MIPS16e2 — это улучшенная версия MIPS16, которая поддерживается MIPS32 и MIPS64 (вплоть до Release 5). В выпуске 6 его заменили на microMIPS.
- Цифровая обработка сигналов MIPS (DSP)
- DSP ASE — это дополнительное расширение набора инструкций MIPS32/MIPS64 Release 2 и более поздних версий, которое можно использовать для ускорения широкого спектра «медиа» вычислений, особенно аудио и видео. Модуль DSP содержит набор инструкций и состояний в целочисленном конвейере и требует минимальной дополнительной логики для реализации в ядрах процессора MIPS. Вторая версия ASE была представлена во второй половине 2006 года. Эта версия добавляет дополнительные инструкции к исходной ASE, но в остальном обратно совместима с ней. [35] В отличие от основной части архитектуры MIPS, это довольно нерегулярный набор операций, многие из которых выбраны из-за особого соответствия некоторому ключевому алгоритму. Его основные новые особенности (по сравнению с оригинальным MIPS32): [36]
- Насыщающая арифметика (при переполнении вычислений выдайте представимое число, ближайшее к непереполненному ответу).
- Арифметика с фиксированной запятой для знаковых 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 8-битных, 8 16-битных, 4 32-битных и 2 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 — это расширение для конкретного приложения (ASE), разработанное Gemplus International и MIPS Technologies для повышения производительности и снижения потребления памяти программным обеспечением для смарт-карт . Поддерживается только MIPS32, поскольку смарт-картам не требуются возможности процессоров MIPS64. Лишь немногие смарт-карты используют SmartMIPS.
- Расширение цифровых медиа MIPS (MDMX)
- Ускорения мультимедийных приложений, которые были распространены в 1990-х годах в системах RISC и CISC.
- МИПС-3D
- Дополнительные инструкции по улучшению производительности приложений 3D-графики
Соглашения о вызовах
[ редактировать ]MIPS имеет несколько соглашений о вызовах, особенно на 32-битной платформе.
O32 ABI является наиболее часто используемым ABI благодаря своему статусу исходного System V ABI для MIPS. [37] [38] Он основан строго на стеке и имеет всего четыре регистра. $а0 - $a3 доступен для передачи аргументов. Пространство в стеке резервируется на случай, если вызывающей стороне потребуется сохранить свои аргументы, но регистры не сохраняются там вызывающей стороной. Возвращаемое значение сохраняется в регистре $v0 ; второе возвращаемое значение может быть сохранено в $в1 . ABI сформировался в 1990 году и последний раз обновлялся в 1994 году. Эта кажущаяся медлительность, а также устаревшая модель с плавающей запятой, состоящая всего из 16 регистров, способствовала распространению многих других соглашений о вызовах. Он определен только для 32-битного MIPS, но GCC создал 64-битный вариант под названием O64. [39]
Для 64-разрядной версии чаще всего используется N64 ABI от Silicon Graphics. Самым важным улучшением является то, что теперь для передачи аргументов доступны восемь регистров; он также увеличивает количество регистров с плавающей запятой до 32. Существует также версия ILP32 под названием N32, которая использует 32-битные указатели для меньшего кода, аналогично x32 ABI . Оба работают в 64-битном режиме процессора. [39] ABI N32 и N64 передают первые восемь аргументов функции в регистрах. $а0 - $а7 ; последующие аргументы передаются в стек. Возвращаемое значение (или указатель на него) сохраняется в регистрах. $v0 ; второе возвращаемое значение может быть сохранено в $в1 . В ABI N32 и N64 все регистры считаются 64-битными.
Было предпринято несколько попыток заменить O32 32-битным ABI, который больше напоминает N32. На конференции 1995 года был предложен MIPS EABI, 32-битная версия которого была очень похожа. [40] EABI вдохновила MIPS Technologies предложить более радикальный ABI «NUBI», дополнительно повторно использующий регистры аргументов для возвращаемого значения. [41] MIPS EABI поддерживается GCC, но не LLVM, и ни один из них не поддерживает NUBI.
Для всех O32 и N32/N64 адрес возврата хранится в $ра зарегистрироваться. Это устанавливается автоматически с помощью инструкций JAL (переход и соединение) или JALR (регистр перехода и соединения). Пролог функции (неконечной) подпрограммы MIPS передает адрес возврата (в $ra ) в стек. [42] [43]
И в 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 , который обычно зарезервирован для использования ядром, но это не стандартно.
The $k0 и Регистры $k1 ( $26 – $27 ) зарезервированы для использования ядром и не должны использоваться приложениями, поскольку эти регистры могут быть изменены ядром в любой момент из-за прерываний, переключения контекста или других событий.
Имя | Число | Использовать | Callee должен сохранить? |
---|---|---|---|
$ноль | $0 | константа 0 | — |
$ в | $1 | ассемблер временный | Нет |
$v0 - $v1 | $2 – $3 | значения для возврата функций и оценки выражений | Нет |
$а0 – $а3 | $4 – $7 | аргументы функции | Нет |
$t0 – $t7 | $8 – $15 | временные работники | Нет |
$s0 – $s7 | $16 – $23 | сохраненные временные | Да |
$t8 – $т9 | $24 – $25 | временные работники | Нет |
$к0 – $k1 | $26 – $27 | зарезервировано для ядра ОС | — |
$gp | $28 | глобальный указатель | Да (кроме кода PIC) |
$сп | $29 | указатель стека | Да |
$фп | $30 | указатель кадра | Да |
День | $31 | обратный адрес | — |
Имя | Число | Использовать | Callee должен сохранить? |
---|---|---|---|
$ноль | $0 | константа 0 | — |
$ в | $1 | ассемблер временный | Нет |
$v0 - $v1 | $2 – $3 | значения для возврата функций и оценки выражений | Нет |
$а0 – $a7 | $4 – $11 | аргументы функции | Нет |
$t4 – $t7 | $12 – $15 | временные работники | Нет |
$s0 – $s7 | $16 – $23 | сохраненные временные | Да |
$t8 – $т9 | $24 – $25 | временные работники | Нет |
$к0 – $k1 | $26 – $27 | зарезервировано для ядра ОС | — |
$gp | $28 | глобальный указатель | Да |
$сп | $29 | указатель стека | Да |
$s8 | $30 | указатель кадра | Да |
День | $31 | обратный адрес | — |
Регистры, которые сохраняются во время вызова, — это регистры, которые (по соглашению) не будут изменены системным вызовом или вызовом процедуры (функции). Например, $s-регистры должны быть сохранены в стек процедурой, которая должна их использовать, и $сп и $fp всегда увеличиваются константами и уменьшаются обратно после завершения процедуры с ними (и с памятью, на которую они указывают). Напротив, $ra изменяется автоматически при любом обычном вызове функции (использующей jal), а $t-регистры должны быть сохранены программой перед вызовом любой процедуры (если программе нужны значения внутри них после вызова).
Соглашение о вызовах пользовательского пространства для позиционно-независимого кода в Linux дополнительно требует, чтобы при вызове функции Регистр $t9 должен содержать адрес этой функции. [45] Это соглашение восходит к дополнению System V ABI для MIPS. [46]
Использование
[ редактировать ]Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( февраль 2020 г. ) |
Части этой статьи (относящиеся к 2010-м годам) необходимо обновить . ( август 2020 г. ) |
Процессоры 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. [47]
К концу 2010-х годов машины MIPS все еще широко использовались на рынках встроенных устройств, включая автомобильную промышленность, беспроводные маршрутизаторы, модемы LTE (в основном через MediaTek ) и микроконтроллеры (например, Microchip Technology PIC32M ). Они в основном исчезли из личного, серверного и прикладного пространства.
Симуляторы
[ редактировать ]Открытые виртуальные платформы (OVP) [48] включает в себя свободно доступный для некоммерческого использования симулятор OVPsim , библиотеку моделей процессоров, периферийных устройств и платформ, а также API, позволяющие пользователям разрабатывать собственные модели. Модели в библиотеке имеют открытый исходный код, написаны на C и включают 32-битные ядра MIPS 4K, 24K, 34K, 74K, 1004K, 1074K, M14K, microAptiv, interAptiv, proAptiv и диапазон ядер MIPS 64-бит 5K. . Эти модели создаются и поддерживаются компанией Imperas. [49] и в сотрудничестве с MIPS Technologies были протестированы и получили знак MIPS-Verified. Примеры платформ на базе MIPS включают в себя как «голое железо», так и платформы для загрузки немодифицированных двоичных образов Linux. Эти платформы-эмуляторы доступны в виде исходного кода или двоичных файлов, они быстрые, бесплатны для некоммерческого использования и просты в использовании. OVPsim разработан и поддерживается компанией Imperas , он очень быстр (сотни миллионов инструкций в секунду) и создан для работы с многоядерными однородными и гетерогенными архитектурами и системами.
Существует свободно доступный симулятор MIPS32 (более ранние версии моделировали только R2000/R3000) под названием SPIM для использования в образовании. ЭдуМИПС64 [50] — это графический кроссплатформенный симулятор процессора MIPS64 под лицензией GPL, написанный на Java/Swing. Он поддерживает широкий набор MIPS64 ISA и позволяет пользователю графически видеть, что происходит в конвейере, когда программа ассемблера запускается ЦП.
МАРС [51] Hennessy — это еще один эмулятор MIPS на основе графического пользовательского интерфейса, разработанный для использования в сфере образования, в частности для использования с компьютерной организацией и дизайном .
ВебМИПС [52] — это симулятор MIPS на основе браузера с визуальным представлением обычного конвейерного процессора. Этот симулятор весьма полезен для отслеживания регистров во время пошагового выполнения.
QtMips обеспечивает простую 5-этапную визуализацию конвейера, а также визуализацию принципа кэширования для базовых курсов компьютерной архитектуры. [53] [54] [55] Он доступен как в виде веб-приложения , так и в виде загружаемой программы для Windows, Linux и macOS .
Более продвинутые бесплатные эмуляторы доступны в проектах 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).
Симулятор Создателя [56] [57] [58] [59] [60] портативен и позволяет пользователю изучать различные языки ассемблера разных процессоров (у Creator есть примеры с реализацией инструкций MIPS32 и RISC-V).
WepSIM [61] [62] представляет собой симулятор на основе браузера, в котором микропрограммируется подмножество инструкций MIPS. Этот симулятор очень полезен для изучения того, как работает процессор.( микропрограммирование. Архивировано 26 июля 2022 г., в Wayback Machine , Подпрограммы MIPS. Архивировано 26 июля 2022 года в Wayback Machine . перерывы. Архивировано 20 августа 2022 года в Wayback Machine . системные вызовы. Архивировано 26 июля 2022 года в Wayback Machine .и т. д.)
См. также
[ редактировать ]- ДЛКС
- Список процессоров с архитектурой MIPS
- Процессоры с архитектурой MIPS
- Конвейер (вычисления)
- Фонд Прпл
Ссылки
[ редактировать ]- ^ Паттерсон, Дэвид (2014). Компьютерная организация и дизайн (PDF) . Эльзевир. стр. 4.16–4. ISBN 978-0-12-407726-3 . Архивировано (PDF) из оригинала 4 сентября 2019 г. Проверено 28 ноября 2018 г.
- ^ Перейти обратно: а б Прайс, Чарльз (сентябрь 1995 г.). Набор инструкций MIPS IV (версия 3.2), MIPS Technologies, Inc.
- ^ Перейти обратно: а б с д и ж г час Свитман, Доминик (1999). См. Запуск MIPS . Morgan Kaufmann Publishers, Inc. ISBN 1-55860-410-3 .
- ^ «Архитектура MIPS32» . МИПС . Архивировано из оригинала 21 марта 2020 года . Проверено 20 марта 2020 г.
- ^ «Архитектура MIPS64» . МИПС . Архивировано из оригинала 2 февраля 2020 года . Проверено 20 марта 2020 г.
- ^ «МИПС-3D ASE» . Технологии воображения . Архивировано из оригинала 3 января 2014 года . Проверено 4 января 2014 г.
- ^ «МИПС16е» . МИПС . Архивировано из оригинала 16 января 2021 года . Проверено 20 марта 2020 г.
- ^ «Многопоточность MIPS» . МИПС . Архивировано из оригинала 26 октября 2020 года . Проверено 20 марта 2020 г.
- ^ Калифорнийский университет в Дэвисе. «Страница «Справочники и инструменты ECS 142 (компиляторы)»» . Архивировано из оригинала 21 марта 2011 года . Проверено 28 мая 2009 г.
- ^ Перейти обратно: а б Терли, Джим (8 марта 2021 г.). «Подождите, что? MIPS становится RISC-V» . Электронный инженерный журнал . Архивировано из оригинала 21 марта 2021 года . Проверено 28 марта 2021 г.
- ^ «Процессор MIPS» . www.d.umn.edu . Архивировано из оригинала 17 мая 2023 года . Проверено 17 мая 2023 г.
- ^ «Silicon Graphics представляет улучшенную архитектуру MIPS, чтобы возглавить интерактивную цифровую революцию» (пресс-релиз). Silicon Graphics, Inc., 21 октября 1996 г. Архивировано из оригинала 6 июня 1997 г.
- ^ Перейти обратно: а б Гвеннап, Линли (18 ноября 1996 г.). «Цифровые технологии, MIPS с добавлением мультимедийных расширений» (PDF) . Отчет микропроцессора . 10 (15): 24–28. Архивировано (PDF) из оригинала 20 июля 2011 г.
- ^ «Silicon Graphics представляет новую дорожную карту высокопроизводительного микропроцессора MIPS» (пресс-релиз). 12 мая 1997 года.
- ^ Перейти обратно: а б с д и «MIPS Technologies, Inc. совершенствует архитектуру для поддержки растущей потребности в повторном использовании и интеграции IP» (пресс-релиз). Деловой провод . 3 мая 1999 года. Архивировано из оригинала 1 декабря 2018 года . Проверено 11 февраля 2016 г.
- ^ «Последняя версия архитектуры MIPS включает виртуализацию и функциональные возможности SIMD-ключей для обеспечения следующего поколения продуктов на базе MIPS» (пресс-релиз). МИПС Технологии . 6 декабря 2012 г. Архивировано из оригинала 13 декабря 2012 г.
- ^ «MIPS пропускает четвертую версию из-за тендерной войны» . ЭЭ Таймс . 10 декабря 2012 г. Архивировано из оригинала 17 апреля 2014 г.
- ^ «Wave Computing расширяет лидерство в сфере ИИ, ориентируясь на границы облака за счет приобретения MIPS» . 15 июня 2018 года. Архивировано из оригинала 25 ноября 2020 года . Проверено 19 декабря 2018 г.
- ^ «Wave Computing® запускает открытую инициативу MIPS для ускорения инноваций в известной архитектуре MIPS®» . 17 декабря 2018 года. Архивировано из оригинала 28 июля 2021 года . Проверено 19 декабря 2018 г.
- ^ «Процессор MIPS ISA будет с открытым исходным кодом в 2019 году — Phoronix» . Архивировано из оригинала 6 марта 2021 года . Проверено 18 декабря 2018 г.
- ^ Ёсида, Джунко (17 декабря 2018 г.). «MIPS становится открытым исходным кодом» . ЭЭ Таймс . Архивировано из оригинала 5 июля 2022 года . Проверено 18 июля 2022 г.
- ^ «Архитектура MIPS R6 теперь доступна для открытого использования» . 28 марта 2019 года. Архивировано из оригинала 4 августа 2020 года . Проверено 16 декабря 2019 г.
- ^ «Wave Computing завершает свою открытую инициативу MIPS с немедленным эффектом и нулевым предупреждением» . 15 ноября 2019 года. Архивировано из оригинала 7 марта 2021 года . Проверено 16 декабря 2019 г.
- ^ «Wave Computing и MIPS выходят из банкротства главы 11» (пресс-релиз). 1 марта 2021 года. Архивировано из оригинала 13 мая 2021 года . Проверено 11 марта 2021 г.
- ^ Шилов Антон (25 августа 2021 г.). «Loongson разрывает MIPS: использует старый код для новых процессоров» . Аппаратное обеспечение Тома . Архивировано из оригинала 25 января 2022 года . Проверено 1 декабря 2021 г.
- ^ Коннацер, Мэтью (19 января 2024 г.). «Китайский производитель микросхем Loongson выигрывает дело о правах на архитектуру MIPS — новая архитектура ЦП компании во многом напоминает существующую MIPS» . Аппаратное обеспечение Тома . Архивировано из оригинала 19 января 2024 года . Проверено 19 января 2024 г.
- ^ Харрис, Дэвид Мани; Харрис, Сара Л. (2013). "Архитектура". Цифровой дизайн и компьютерная архитектура . Эльзевир. стр. 294–369. дои : 10.1016/b978-0-12-394424-5.00006-9 . ISBN 9780123944245 .
R-тип — это сокращение от типа регистра. Инструкции R-типа используют три регистра в качестве операндов: два в качестве источников и один в качестве назначения.
- ^ Перейти обратно: а б «ПРИМЕЧАНИЯ ПО ПРИМЕНЕНИЮ Примитивы синхронизации MIPS R4000» (PDF) . п. 5. Архивировано (PDF) оригинала 27 декабря 2023 г. Проверено 27 декабря 2023 г.
- ^ Набор инструкций MIPS IV (PDF) (редакция 3.2). МИПС Технологии . Сентябрь 1995 г. Архивировано (PDF) из оригинала 27 ноября 2022 г. . Проверено 24 августа 2022 г.
- ^ «Набор инструкций MIPS R5» (PDF) . п. 59-62. Архивировано (PDF) оригинала 15 декабря 2023 г. Проверено 15 декабря 2023 г.
- ^ «Спецификация протокола когерентности MIPS®, редакция 01.01» (PDF) . п. 26,25,57. Архивировано (PDF) из оригинала 4 сентября 2018 г. Проверено 15 декабря 2023 г.
- ^ «MIPS — ведущие на рынке решения для IP-процессоров RISC-процессоров» . imgtec.com . Архивировано из оригинала 9 марта 2016 года . Проверено 11 февраля 2016 г.
- ^ «Silicon Graphics представляет компактный микропроцессорный код MIPS RISC для высокой производительности при низких затратах» (пресс-релиз). 21 октября 1996 г.
- ^ Свитман, Доминик (2007). См. MIPS Run (2-е изд.). Сан-Франциско, Калифорния: Издательство Morgan Kaufmann. стр. 425–427. ISBN 978-0-12-088421-6 .
- ^ «Использование коллекции компиляторов GNU (GCC): встроенные функции MIPS DSP» . gcc.gnu.org . Архивировано из оригинала 20 апреля 2017 года.
- ^ «Архитектура набора команд — LinuxMIPS» . www.linux-mips.org . Архивировано из оригинала 20 апреля 2017 года.
- ^ Свитман, Доминик (2007). См. MIPS Run, 2-е издание . Морган Кауфманн. ISBN 978-0-12088-421-6 .
- ^ «Краткий справочник по набору инструкций MIPS32» . Архивировано (PDF) из оригинала 25 января 2022 г. Проверено 17 августа 2020 г.
- ^ Перейти обратно: а б «История MIPS ABI» . Архивировано из оригинала 26 августа 2018 года.
- ^ Эрик Кристофер (11 июня 2003 г.). "Документация mips eabi" . [электронная почта защищена] (список рассылки). Архивировано из оригинала 7 мая 2020 года . Проверено 19 июня 2020 г.
- ^ «НУБИ» . Архивировано из оригинала 29 июля 2021 года . Проверено 17 августа 2020 г.
- ^ Карен Миллер (2006). «Соглашения об использовании регистров MIPS» . Архивировано из оригинала 25 октября 2020 года.
- ^ Хэл Перкинс (2006). «Соглашение о вызовах MIPS» (PDF) . Архивировано (PDF) из оригинала 30 сентября 2020 г.
- ^ Справочник MIPSpro N32 ABI (PDF) . Кремниевая графика . Архивировано из оригинала (PDF) 17 декабря 2021 года . Проверено 17 августа 2020 г.
- ^ «Код PIC — LinuxMIPS» . www.linux-mips.org . Архивировано из оригинала 21 сентября 2018 года . Проверено 21 сентября 2018 г.
- ^ «Дополнение к процессору MIPS RISC для бинарного интерфейса приложения System V, 3-е издание» (PDF) . стр. 3–12. Архивировано (PDF) из оригинала 12 ноября 2020 г. Проверено 17 августа 2020 г.
- ^ Рубио, Виктор П. «Реализация FPGA RISC-процессора MIPS для обучения компьютерной архитектуре» (PDF) . Университет штата Нью-Мексико . Архивировано (PDF) из оригинала 15 апреля 2012 г. Проверено 22 декабря 2011 г.
- ^ «OVP: Быстрое моделирование, бесплатные модели с открытым исходным кодом. Виртуальные платформы для разработки программного обеспечения» . Ovpworld.org. Архивировано из оригинала 8 июня 2012 года . Проверено 30 мая 2012 г.
- ^ «Имперас» . Имперас. 3 марта 2008 года. Архивировано из оригинала 14 июня 2012 года . Проверено 30 мая 2012 г.
- ^ «ЭдуМИПС64» . Эдумипс.орг. Архивировано из оригинала 7 мая 2012 года . Проверено 30 мая 2012 г.
- ^ «Симулятор MARS MIPS — Университет штата Миссури» . Courses.missouristate.edu. Архивировано из оригинала 2 мая 2012 года . Проверено 30 мая 2012 г.
- ^ «WebMIPS — МОДЕЛИРОВАНИЕ ЦП MIPS в режиме онлайн» . Архивировано из оригинала 31 декабря 2012 года . Проверено 13 января 2012 г. (онлайн-демонстрация) «Архивная копия» . Архивировано из оригинала 10 октября 2011 года . Проверено 13 января 2012 г.
{{cite web}}
: CS1 maint: архивная копия как заголовок ( ссылка ) (источник) - ^ QtMips - симулятор процессора MIPS для образовательных целей на GitHub
- ^ Кочи, Карел (2018). Графический симулятор ЦП с визуализацией кэша (PDF) (MSc). Чешский технический университет в Праге . Архивировано (PDF) из оригинала 19 ноября 2020 г. Проверено 25 января 2021 г.
- ^ Гизопулос, Димитрис (6 декабря 2020 г.). «Основы QtMips-v3» (PDF) . Афинский национальный университет имени Каподистрии . Проверено 25 января 2021 г. [ мертвая ссылка ]
- ^ Камамас-Алонсо, Диего; Гарсия-Карбалейра, Феликс; Дель-Посо-Пуналь, Элиас; Матеос, Алехандро Кальдерон (29 мая 2024 г.). «CREATOR: Образовательная интегрированная среда разработки для программирования RISC-V» . Доступ IEEE : 1–17. дои : 10.1109/ACCESS.2024.3406935 . ISSN 2169-3536 . Проверено 24 июля 2024 г.
- ^ «CREATOR: Дидактический и универсальный симулятор программирования на ассемблере» (на испанском языке). 23 июля 2021 года. Архивировано из оригинала 29 сентября 2021 года . Проверено 29 сентября 2021 г.
- ^ Камамас-Алонсо, Диего; Гарсия-Карбалейра, Феликс; Дель-Посо-Пуналь, Элиас; Матеос, Алехандро Кальдерон (2 августа 2022 г.). Новый универсальный симулятор для обучения программированию на ассемблере . XLVII Латиноамериканская компьютерная конференция (CLEI) 2021 г. (на испанском языке). стр. 1–9. дои : 10.1109/CLEI53233.2021.9640144 . ISBN 978-1-6654-9503-5 . S2CID 245387555 . Проверено 2 августа 2022 г.
- ^ «Пример CREATOR Web с MIPS32» . Архивировано из оригинала 29 сентября 2021 года.
- ^ Исходный код CREATOR на GitHub.
- ^ «Пример WepSIM с MIPS32» . ВепСИМ . Архивировано из оригинала 25 июля 2022 года . Проверено 25 июля 2022 г.
- ^ Исходный код WepSIM на GitHub.
Дальнейшее чтение
[ редактировать ]- Фаркуар, Эрин; Филип Банс (1994). Справочник программиста MIPS . Издательство Морган Кауфманн. ISBN 1-55860-297-6 .
- Паттерсон, Дэвид А ; Джон Л. Хеннесси (2004). Организация и проектирование компьютера: аппаратно-программный интерфейс . Издательство Морган Кауфманн . ISBN 1-55860-604-1 .
- Свитман, Доминик (1999). См. Запуск MIPS . Издательство Морган Кауфманн. ISBN 1-55860-410-3 .
- Свитман, Доминик (2007). См. MIPS Run, 2-е издание . Издательство Морган Кауфманн. ISBN 978-0-12-088421-6 .
Внешние ссылки
[ редактировать ]- Процессоры MIPS. Архивировано 11 мая 2022 г. на Wayback Machine.
- Диаграмма истории архитектуры MIPS на Wayback Machine (архивировано 30 мая 2013 г.)
- Онлайн-эмулятор MIPS. Архивировано 5 марта 2022 г. на Wayback Machine.
- Инструкции MIPS — набор инструкций MIPS. Архивировано 7 апреля 2022 г. на Wayback Machine.