что такое mips процессор

Сегодня MIPS стал Open Source, против RISC-V и ARM. Как Россия повлияла на стратегию американской процессорной компании

То, о чем говорили сторонники Open Source с 1980-х — свершилось! Сегодня архитектура процессоров MIPS стала Open Source. Учитывая, что такие компании как Broadcom, Cavium, китайский ICT и Ingenic платили MIPS за архитектурную лицензию (право сделать совместимую по системе команд микроархитектурную реализацию) миллионы долларов (иногда более десяти миллионов), это историческая веха. Теперь у RISC-V нет преимущества в этом аспекте, да и ARM придется оправдываться. У MIPS до сих пор есть технические преимущества перед RISC-V — лучшая плотность кода у nanoMIPS, лучшая поддержка аппаратной многопоточности, лучшие бенчмарки на high-end ядрах, более полная экосистема. И 8 миллиардов выпущенных чипов на основе MIPS.

Вот команда разработчиков 64-битного процессорного ядра MIPS I6400 «Samurai» и MIPS I6500 «Daimyo» в Сан-Франциско. Это ядро лицензировала в частности японская компания автомобильной электроники DENSO, поставщик Тойоты:

А вот представители российской компании ЭЛВИС-НеоТек вместе с русскими, украинскими и казахстанским разработчиком ядер MIPS и софтвера для него. ЭЛВИС-НеоТек является как лицензиатом ядер MIPS, так и разработчиком собственного по микроархитектуре ядра, совместимого с архитектурой MIPS. А также аппаратных блоков видео-обработки и алгоритмов распознавания:

Российское MIPS-коммьюнити оказано непосредственное влияние на этот шаг:

Сегодня я разговаривал с президентом MIPS Артом Свифтом. До нынешнего поста Арт был вице-председателем комитета по маркетингу RISC-V, вице-президентом Sun, DEC и Cirrus Logic. Я спросил у Арта, чем же отличается Open MIPS от не ставшего популярным Open SPARC.

Арт ответил, что Sun Microsystems была открытой только на словах и не очень любила строить коммьюнити. А вот мы в Open MIPS будем заниматься именно построением коммьюнити. Причем методы построения всемирного коммьюнити будут основаны на опыте строительства MIPS-коммьюнити в России (!), а точнее на работе с российскими компаниями (ЭЛВИС-НеоТек, Байкал Электроникс, НИИСИ, НИИМА Прогресс) и университетами, которые проводили семинары по MIPSfpga (МИЭТ, МФТИ, ИТМО, МИФИ, МГУ, СГАУ, НГТУ, ТГУ, КПИ и другие).

Немного истории. Истоки MIPS — в Стенфорде начала 1980-х годов. В 1984 году была основана компания MIPS Computer Systems, которая потом неоднократно меняла владельцев (Silicon Graphics, MIPS Technologies, Imagination Technologies, Wave Computing). В том же 1984 году возникла и компания ARM. Вот основатель MIPS Джон Хеннесси с первым чипом:

Впоследствие MIPS использовался в ранних игровых приставках Nintendo64 и Sony Playstation. Вот девушка Ирина в музее компьютеров рядом с рабочими станциями Silicon Graphics, которые использовались для съемок первых реалистично-графических голливудских фильмов, включая «Парк Юрского Периода». Эти же компьютеры упомянуты в романе русского писателя Виктора Пелевина «Поколение П». Внутри — процессор MIPS R4000:

А вот — встреча в прошлом году в Москве участников семинаров по MIPSfpga, образовательной программы, в которой университетские исследователи могут модицифировать реальный промышленный процессор MIPS interAptiv UP, синтезировать его для ПЛИС и посмотреть, как он работает, в том числе в потактовом режиме. В центре — Роберт Оуэн, менеджер образовательных программ Imagination Technologies, слева от него — Станислав Жельнио, автор российского учебного ядра schoolMIPS (его можно найти на GitHub):

В вот российский компьютер на основе процессора КОМДИВ-64, с вариантом архитектуры MIPS + спроектированной в России микроархитектурой + разработанными в России векторными расширениями архитектуры:

А вот Максим Горбунов, менеджер из НИИСИ, где был спроектирован КОМДИВ-64. Максим — второй слева, между специалистом по образовательным программам из российского Самсунга Татьяной Волковой и специалистом по образованию школьников из МФТИ Андреем Огневым:

Вот в офисе лицензиата MIPS Байкал Электроникс. Процессор Байкал-Т1 на основе MIPS P5600 «Apache» используется сейчас в российских контроллерах станков и сетевых устройствах:

А вот в Киевском Политехническом Институте на хакатоне MIPSfpga. Победители этого хакатона впоследствие получили бронзу на европейском финале конкурса Innovate FPGA, организованного Интелом:

Этот хакатон также вошел в презентации и статьи про практику MIPSfpga в университетах:

MIPS вдохновил создателей специализированных вычислительных устройств, например David Wentzlaff, который читает курс по продвинутой процессорной архитектуре в Принстоне и на Курсере:

Устройство, которое разработано Девидом, предстваляло из себя сетку (mesh) из 64 процессоров. Интересно, что сейчас Wave Computing, компания, частью которой является MIPS, тоже работает над сеткой, но из десятков тысяч процессорных элементов. Эта архитектура предназначена для ускорителя нейросетей, чипа на 7 нанометров, который Wave Computing разрабатывает совместно с Broadcom. Вот в офисе Wave Computing в Campbell, California. Слева специалист по функциональной верификации и UVM Jon Wang, а справа старший директором по Custom Design Steve Dilbeck. Стив — большой авторитет в asynchronous design, dynamic logic и разных эффектах на уровне транзисторов, когда размеры опускаются до 7 нанометров, а частоты поднимаются выше 6 гигагерц:

Читайте также:  что делать если тебя не зовут гулять друзья

Вот слайд из презентации по нейроускорителю:

Источник

MIPS (архитектура)

Из Википедии — свободной энциклопедии

MIPS (сокращение от названия соответствующего проекта Стэнфордского университета англ. Microprocessor without Interlocked Pipeline Stages [1] ) — система команд и микропроцессорных архитектур, разработанных компанией MIPS Computer Systems (в настоящее время Wave Computing [2] ) в соответствии с концепцией проектирования процессоров RISC (то есть для процессоров с упрощенным набором команд). Ранние модели процессора имели 32-битную структуру, позднее появились его 64-битные версии. Существует множество модификаций процессора, включая MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS32 и MIPS64, из них действующими являются MIPS32 (для 32-битной реализации) и MIPS64 (для 64-битной реализации). MIPS32 и MIPS64 определяют как набор регистров управления, так и набор команд.

Существует несколько наборов команд: MIPS32, MIPS64, microMIPS и nanoMIPS. Помимо этого, доступны дополненные наборы инструкций и модели процессоров, например, MIPS-3D, включающий в себя набор SIMD-команд для обработки чисел с плавающей запятой, предназначенный для решения простых 3D-задач, MDMX (MaDMaX) — с ещё более широкими возможностями — набором SIMD-команд и использующий 64-битные регистры с плавающей запятой для работы с целыми числами, MIPS16e, который сжимает поток команд, чтобы уменьшить объём памяти, занимаемый программами, а также MIPS MT, обеспечивающий многопотоковый режим обработки.

Архитектуру MIPS часто изучают в программе курса «Компьютерная архитектура» в университетах и технических лицеях. Эти процессоры значительно повлияли на более поздние RISC-архитектуры, в частности на Alpha.

В настоящее время различные реализации MIPS используются в основном во встроенных системах, например, в смартфонах, маршрутизаторах, шлюзах, а также до 2010-х в игровых консолях, таких, как Sony PlayStation 2 и Sony PlayStation Portable. До конца 2006 года они применялись и в компьютерах SGI. К концу 1980-х и 1990-х эта архитектура широко использовалась многими компаниями, среди них Digital Equipment Corporation, NEC, Pyramid Technology, Siemens Nixdorf и Tandem Computers. С середины до конца 1990-х годов каждым третьим микропроцессором на рынке был процессор под управлением MIPS.

Источник

Изучаем MIPS-ассемблер

Как говорит Википедия, MIPS – микропроцессор, разработанный компанией MIPS Computer Systems (в настоящее время MIPS Technologies) и впервые реализованный 1985 году. Существует большое количество модификаций этой архитектуры, созданных специально для 3D-моделирования, быстрой обработки чисел с плавающей запятой, многопотоковых вычислений. Различные варианты этих процессоров использутся в роутерах Cisco и Mikrotik, смартфонах, планшетах и игровых консолях.

Инструкции MIPS достаточно просты для понимания, и именно с него рекомендуется начинать изучение ассемблера. Чем сейчас, собственно, и займёмся.

Структура программы на MIPS-ассемблере

Типы в MIPS-ассемблере

Вот сравнительная таблица основных типов в C++ и в MIPS:

Как можно увидеть в таблице, выбор типа в для переменной в MIPS основывается только на объёме памяти, который будет занимать эта переменная. Обратите внимание, что MIPS в этом плане не различает signed- и unsigned-переменные.

Метки (символы)

Основные директивы

Немного глубже мы рассмотрим типы данных по мере их использования в коде.

Регистры

Инструкции MIPS

Примечание. C этого момента мы будем рассматривать MIPS-процессор, его инструкции и дополнения на примере замечательного симулятора MIPS под названием MARS, который можно загрузить отсюда. Имплементация MIPS в этом симуляторе полностью соответствует стандартам.

В коде в начале статьи мы уже выделили все функциональные части программы и определили инструкции и псевдоинструкции как то, что не является комментарием, символом (меткой) или директивой. Псевдоинструкции также называют макросами, они трансформируются в одну или несколько инструкций во время выполнения кода. Вот пример макроса:

переходит в набор инструкций:

Как видно, MIPS-программы всегда записываются по одной инструкции на строчку.

Типы инструкций

Также существуют инструкции для сопроцессоров, но их мы рассмотрим позже.

Инструкция syscall

Весь ввод и вывод происходит через консоль MARS’a.

Арифметические инструкции

Кстати, imm16 по умолчанию интерпретируются как позитивные. Например:

Если нужно добавить отрицательное значение, то нужно явно это указать:

А теперь можно протестировать получившийся код в MARS. Загрузите черновик вот отсюда и откройте его в MARS:

Читайте также:  что делать если у кота гон

Продолжение следует

В следующей статье рассмотрим логические инструкции, а также умножение и деление целых чисел. В ней же попробуем работать с памятью и стеком. А пока предлагаю вам попробовать переписать вот этот код на MIPS-ассемблер:

Источник

Почему MIPS — всего лишь цифра

Показатель MIPS (миллион операций в секунду) не всегда отражает реальную вычислительную способность устройства. В этой статье объясняется, почему так происходит. Статья представляет собой сокращенный перевод [1].

Традиционно производительность микроконтроллеров (МК) оценивается с помощью показателя MIPS. Однако не существует двух одинаковых архитектур МК или систем на кристалле (СнК), и в различных приложениях для повышения производительности применяется разная степень интеграции.
В этой статье рассматриваются некоторые архитектурные особенности систем МК/СнК в контексте типовых вычислительных проблем для объяснения причин того, почему MIPS далеко не всегда отражают реальную производительность устройств и как к этому следует относиться. Особое внимание уделено МК и СнК, работающим на частотах ниже 100 МГц. Поскольку для этих устройств не установлен стандарт вычислительной производительности, их трудно сравнивать.

В этом частотном диапазоне МК обычно используют 8-, 16- или 32-разрядную архитектуру. Существуют и другие различия по типам архитектур — Harvard/Von Neumann, RISC/CISC (с сокращенным или полным набором команд) и т.д., каждая из которых позволяет создавать интересные варианты систем. В каждом МК для выполнения разных команд требуется различное количество машинных циклов.
Рассмотрим следующий пример. Предположим, что тактовая частота устройства равна 20 МГц, и машинный цикл состоит из двух циклов тактового генератора. При этом для выполнения различных команд требуется 1–6 машинных циклов. Какова производительность такого устройства в MIPS?
Разделив тактовую частоту на два, получим возможное значение производительности — 10 млн. машинных циклов. Как перевести это значение в MIPS, зависит от позиции интерпретатора. Если вы занимаетесь маркетингом, то выберете самый хороший вариант: предполагая, что каждая команда выполняется за один цикл, можно утверждать, что производительность устройства составляет 10 MIPS. Если вам требуется определить теоретический минимум вычислительной способности, то вы будете исходить из того, что каждая команда выполняется за 6 циклов. В этом случае производительность того же самого устройства составит 1,66 (10/6) MIPS. Для типовых приложений реальное значение, как правило, находится где-то между максимальным и минимальным показателями в зависимости от архитектуры конкретного устройства.
В этой статье предполагается, что количество машинных циклов является единственным параметром, определяющим, сколько команд может выполнить устройство. Теперь давайте посмотрим, как флэш-память влияет на вычислительную способность устройства. Как правило, флэш-память не может работать с данными на частоте выше 20 МГц. Следовательно, если блок центрального процессора (ЦП) работает быстрее, но ему требуется извлекать команды из флэш-памяти, ее быстродействие становится основным ограничивающим фактором.
Для решения этой проблемы либо увеличивается разрядность шины флэш-памяти, чтобы она стала шире шины данных, либо создается буфер команд для поддержки скорости их выполнения. Это реализуется при условии, что ЦП выбирает следующую команду еще при выполнении текущей. Но такой подход хорошо работает только с линейными кодами. К сожалению, реальные программные коды редко бывают линейными. При каждом ответвлении в программе необходимо перестраивать буфер команд.
Другой способ повышения производительности заключается в добавлении кэш-памяти. Речь идет о том, что если одно устройство (МК или СнК) эффективно управляет флэш-памятью, а второму это не удается, при выполнении одинакового программного кода и одном цикле мы получим совершено разные цифры по их производительности.

Многие МК и СнК имеют опцию прямого доступа к памяти (DMA), позволяющую улучшить производительность за счет разгрузки ЦП. Как оценить влияние DMA на производительность в MIPS? Для ответа на этот вопрос рассмотрим типовой случай применения последовательного периферийного интерфейса (SPI) в режиме ведущего устройства (master mode).
Хорошо известно, что SPI обеспечивает максимальную пропускную способность при обмене данными между периферийными устройствами, такими как память, Ethernet, беспроводные трансиверы, внутри систем, построенных на базе МК или СнК.
Сделаем следующие предположения:
1. Быстродействие SPI: 8 Мбит/с.
2. Размер пакета: 128 байт.
3. Требования к пропускной способности данных: 160 мкс/пакет.

При быстродействии SPI равном 8 Мбит/с для передачи 1 байта требуется 1 мкс. Следовательно, для передачи 128 байт необходимо 128 мкс. Если предположить, что на пакет приходятся 160 мкс, остается 160 — 128 = 32 мкс для управления SPI. Это время следует равномерно распределить между 128 байтами, поскольку система должна загружать новый байт данных каждую микросекунду. Разделив 32 мкс на 128, получаем, что на управление SPI при передаче одного байта данных приходится 250 нс.
В примерах на рисунке 1 контроллер DMA позволяет снизить требования по тактовой частоте устройств МК/СнК на 160 МГц. В результате требования к производительности ЦП снижаются на 200 МГц. Если считать, что один цикл равен MIPS, то применение опции DMA в этом приложении эквивалентно использованию процессора с вычислительной способностью 200 MIPS.

Читайте также:  что такое тарировка топливного бака

Эффективное значение в MIPS в случае применения контроллера DMA в значительно степени зависит от требований к пропускной способности. Если мы рассмотрим предельный случай для данного приложения и будем считать, что не существует каких-либо временных ограничений на передачу одного пакета данных, то окажется, что контроллер DMA сможет уменьшить число циклов ЦП на 50 циклов на байт, что при передаче пакета из 128 байт приведет к снижению количества циклов на 6400. Если для поддержки SPI на частоте 8 МГц МК должен работать с частотой 16 МГц и пакет из 128 байт передается один раз в секунду, без контроллера DMA производительность МК/СнК должна составлять 16006400 команд в секунду, а при использовании контроллера DMA — 16000000 команд в секунду. Очевидно, что в этом случае влияние контроллера DMA незначительное.

В системах МК/СнК сопроцессор используется не всегда. Он позволяет распараллелить обработку определенных трудоемких задач, что разгружает ЦП и увеличивает эффективную производительность процессора в MIPS.
Рассмотрим приложение, в котором на вход подаются аудиоданные, преобразуемые в цифровой код при помощи АЦП с частотой опроса 44,1 тыс. выб./с. Для подавления сетевой частоты 50 или 60 Гц воспользуемся цифровым режекторным фильтром. При заданной частоте опроса интервал между выборками составляет 22,7 мкс, а порядок фильтра с конечной импульсной характеристикой (FIR) равен 128. В примере на рисунке 2 сопроцессор позволяет снизить требования к быстродействию ЦП на 44,1 MIPS. Отметим, что в рассматриваемом примере использовался простой КИХ-фильтр. Если необходимы более сложные фильтры, требования к производительности в MIPS существенно увеличиваются (сотни MIPS).

Программируемые цифровые устройства также оказывают влияние на величину производительности в MIPS. Некоторые системы МК/СнК имеют в своем составе программируемые цифровые логические схемы, например, CPLD (сложные ПЛИС) или FPGA (программируемые матричные БИС), которые реализуют функции ЦП на аппаратном, а не на традиционным программном уровне.
Во всех приведенных примерах разница по производительности довольно велика, поэтому проведения точных расчетов не потребовалось. Если же разница составляет 10–20% и требуется выбрать основной компонент приложения, рекомендуется оценить реальный выигрыш в производительности с помощью комплекта разработчика.

Источник

Архитектура процессоров. MIPS, Sparc, ARM и PowerPC

Архитектура PowerPC лежит в основе процессоров Playstation 3 и xBox 360. Ни MIPS, ни ARM на эту роль не годятся, процессоры Intel тоже, а об AMD и говорить не приходится.

Продолжение статьи об истории развития архитектур процессоров. Чтение лучше начать с первой части.

MIPS-архитектура: «Pentium 4» восьмидесятых годов


Регистровые окна SPARC


Условные инструкции ARM

Архитектура ARM (Advanced RISC Machines) разработана в 1983-85 годах в компании Acorn Computers. Команда Роджера Вильсона и Стива Фербера взяла за основу набора инструкций ARM некогда популярный, а ныне забытый процессор MOS Technology 6502 и снабдила его специальным четырехбитным кодом условия, которым можно было дополнить любую инструкцию.

Если (условие) то Выполнить1 иначе Выполнить 2

вместо того, чтобы записать традиционную конструкцию

2. Если условие выполнено, то идти к 5

используя условные инструкции, можно записать

1. Вычислить условие и поставить Флаг1 по результатам вычисления

2. Выполнить1 при условии выставленного Флаг1

3. Выполнить2 при условии невыставленного Флаг1

Еще ряд дополнений в ARM предусматривал введение инструкций, одновременно выполняющих несколько простых операций, тем самым избавляя регистры процессора от необходимости сохранять результаты промежуточных вычислений и увеличивая вычислительную плотность кода. Этот подход нетипичен для RISC-процессоров, поскольку плохо вписывается в «основную идею» их максимального упрощения, но в конечном счете он привел к тому, что процессоры Acorn при прочих равных получили большую производительность на единицу частоты. Конечно, ARM-подход тоже имеет недостатки (например, необходимость выполнять пустые инструкции), однако в общем и целом он позволяет создавать очень простые процессоры с очень хорошей производительностью.

Архитектура PowerPC

Источник

Строительный портал