Александр увидел у Дэвида демо платы MIPS Creator ci40 для «умных ферм», и минут двадцать рассказывал Дэвиду, что все правительство Украины начиная с Порошенко лично желает в порядке нахождения экономического будущего страны скрестить электронные технологии и сельское хозяйство. (Александр — старший менеджер аудит-компании, который делает анализ и поддержку сделок M&A)
Дэвид воспринял все это максимально буквально и сегодня утром я получил от начальника Дэвида письмо, откуда узнал, что они в Великобритании сделали онлайн вебинар по использованию MIPS Creator ci40 для построения системы умной ирригации, и соратники Александра могут зарегистрироваться для этого семинара, который состоится в среду 28 сентября в 11 утра по Silicon Valley / в 21.00 по киевскому времени:
По этому поводу я хочу копнуть глубже внутрь чипа и рассказать про историю и особенности процессорного ядра в показываемом в вебинаре устройстве. Внутри MIPS Creator ci40 стоит чип на основе многопоточного двухядерного кластера MIPS interAptiv, продвинутого отпрыска ядра MIPS 24KEc. Последний сейчас переживает вторую молодость внутри только что вышедшего на рынок Omega2, Linux-компьютера ценой $5 размером с почтовую марку. Чем же MIPS interAptiv внутри MIPS Creator ci40 отличается от MIPS 24KEc внутри Omega2 с точки зрения микроахитектуры и как это задевает программиста?
Сначала пару слов про MIPS 24KEc. В MIPS Technologies есть три линейки ядер, как три медведя в сказке Льва Толстого:
В домике этом жили три медведя. Один медведь был отец, звали его Михаил Иваныч. Он был большой, лохматый и суперскалярный (MIPS P5600, P6600). Другой была медведица. Она была поменьше, но более power-efficient, и звали ее Настасья Петровна (MIPS 24K, interAptiv, I6400). Третий был маленький медвежонок с минимальной die area and very low power consumption, и звали его Мишутка (MIPS M51xx, M62xx).
Короче, MIPS 24K — это основа 32-битной секции средней линейки процессорных ядер MIPS Technologies. У них 8 стадий конвейера (что больше, чем 5 у и меньше, чем 15), есть предсказатель переходов (в отличие от MIPS M51xx, M62xx), но нет суперскалярности (в отличие от MIPS I6400, P5600, P6600).
После MIPS 24K был MIPS 34K, в который была добавлена хардверная поддержка многопоточности (hardware supported multithreading). Это довольно элегантное решение для следущей проблемы.
Дело в том, что в последние десятилетия скорость арифметических вычислений в процессоре росла быстрее скорости доступа к памяти:
В нашу эпоху за время ожидания данных из памяти при промахе кэша, процессор мог бы выполнить десятки арифметических инструкций. Как же сделать чтобы процессор не простаивал (простой такого типа может отнимать до 50% времени выполнения типичной программы)? А вот как:
Пару картинок из статьи в журнале The Microprocessor Report":
Аппаратную поддержку многопоточности на одном ядре не следует путать с многоядерностью. При этом они могут присутствовать как по отдельности, так и в комбинации. MIPS interAptiv (как и его предшественник MIPS 1004K) является многоядерной системой с менеджером когерентности кэшей первого уровня (чтобы в L1 кэшах разных ядер не лежали разные модифицированные данные):
MIPS interAptiv является современной оптимизированной версией линейки которая началась с MIPS 24K. Именно он стоит во встроенном компьютере MIPS Creator ci40. Хотя процессорных ядер в нем два, но многоядерный Линукс воспринимает их как четыре, так как каждое из двух ядер внутри обрабатывает два потока команд — hardware-supported multithreading. Пока один tread ждет во время промаха кэша, другой может работать — этим достигается бОльшая загрузка процессора. В конечном итоге, такая структура приводит к экономии энергопотребления по сравнению с системами с бОльшим количеством однопоточных ядер:
UPD: В комментариях к посту возник интересный вопрос про регистры при multithreading-е. Это мне нужно было упомянуть на слайдах.
Да, в MIPS interAptiv несколько наборов видимых программисту регистров, которые переключаются для каждого thread-а. Это вызывает рост размера процессора примерно на 20%. Но регистры для хвоста конвейера переключать не надо, так как к этому моменту значения операндов уже прочитаны.
Вот документ в котором описывается все что происходит в каждой части конвейера MIPS 34K (в MIPS interAptiv оно очень похоже):
https://imagination-technologies-cloudfront-assets.s3.amazonaws.com/documentation/MD00534-2B-34K-SUM-01.13.pdf
Еще документы оттуда:
https://imgtec.com/mips/classic
Да, и не забываем регистрироваться на вебинар:
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (28)
nckma
22.09.2016 14:04Такие статьи всегда стараюсь внимательно читать, так как сам постоянно думаю о «своем процессоре», но, к сожалению, в таких статьях очень мало действительно технических деталей. Например, говорится, что если один тред остановился из-за промаха кеша, то второй может исполнять свои команды на общем конвейере. Но как? Ведь содержимое регистров одного потока нужно сохранить и восстановить регистры другого потока прежде чем, что-то делать дальше? Неужели это так быстро можно сделать?
leshabirukov
22.09.2016 15:15Можно, в основе аппаратного multithreading-а как раз лежит способность ядра быстро менять контекст (регистровый файл). Ядро CUDA к примеру, может оперировать 64-мя такими контекстами.
nckma
22.09.2016 15:21Так-то да… но это же какой мультиплексор нужно сделать чтобы сделать своп нескольких регистровых файлов…
leshabirukov
22.09.2016 15:58Всё равно выйдет ~1 mux на порт на хранимый бит, полагаю.
nckma
22.09.2016 16:20Ну как же? Если скажем у них 9 потоков, как на слайде, то нужно 9 регистровых файлов.
Если нужно мгновенно (за такт) переключиться на контекст нового треда, то каждый регистр общего назначения может принять одно из 9-ти возможных значений из регистрового файла. Каждый бит регистра получает мультиплексор девять в одному только для переключения контекста. Для 32-х битного регистра таких мультиплексоров 32. Это только регистры общего назначения, а есть еще регистры в конвейере, которые программисту не доступны. Их контекст так же нужно переключать.
Или я чего-то не понимаю?leshabirukov
22.09.2016 16:46Ну да, хранилище будет большое. Я к тому, что коммутатор (мультиплексор) с ростом числа потоков растёт линейно:
mux7 mux5 mux6 mux1 mux2 mux3 mux4 bit1 bit2 bit3 bit4 bit5 bit6 bit7 bit8
и не увеличивает свою долю в хранилище.
YuriPanchul
22.09.2016 16:58+3Да, в MIPS interAptiv несколько наборов видимых программисту регистров, которые переключаются для каждого thread-а. Это вызывает рост размера процессора примерно на 20%. Но регистры для хвоста конвейера переключать не надо, так как к этому моменту значения операндов уже прочитаны.
Вообще мне конечно нужно было описать это в посте. Спасибо за ценный вопрос — я включу его в будущие слайды.
Вот документ в котором описывается все что происходит в каждой части конвейера MIPS 34K (в MIPS interAptiv оно очень похоже):
https://imagination-technologies-cloudfront-assets.s3.amazonaws.com/documentation/MD00534-2B-34K-SUM-01.13.pdf
Еще документы оттуда:
https://imgtec.com/mips/classic/
VySh
22.09.2016 16:47Хм, а зачем своп делать? Аппаратных регистров больше чем программных — каждому потоку своё подмножество.
unabl4
22.09.2016 16:47+1А что, ПЛК (PLC) уже канули в прошлое? Или это модно теперь ИоТ везде применять? Шашечки или ехать-то?
YuriPanchul
22.09.2016 16:50PLC все еще используются, особенно в производстве, но для таких задач системы на встроенных процессорах наверняка дешевле.
orcDamnar
22.09.2016 16:47+4Все круто, но зачем приплетать сюда Порошенка? Или на Украине сейчас казнят, если не вспомнить его в контексте любой статьи?
YuriPanchul
22.09.2016 16:49Из песни слов не выкинешь. Обсуждался интерес украинского правительства к IoT в сельском хозяйстве — значит надо упомянуть.
an24
22.09.2016 22:55-1Так ваше правительство Гройсман возглавляет, если я ничего не путаю. Поэтому вопрос про упоминание Порошенко актуален. Казнят или в тюрьму садят? :)
Кроме того, нужно обязательно упомянуть Путина. Ну что мол, этот отсталый IoT совсем не интересуется, а вот Порошенко тот завсегда за прогресс и европейские ценности :)))
bigbrotherwatchingyou
23.09.2016 07:45Минусаторы, вот лучше бы написали, для чего именно собираются использовать MIPS и IoT в сельском хозяйстве. Что означает «home IoT irrigation system»? Домашняя система полива растений с IoT? Это что ли Ваше «сельское хозяйство»? Из пушки, значит — да по воробьям? Не вижу смысла использовать для этого гигагерцовую технику вкупе с беспроводными технологиями, вполне можно обойтись «малой кровью». А адептам-максималистам хоть самый современный суперкомпьютер дай — они будут на нем пасьянс раскладывать да менюшки и графики в UI рисовать вместо действительно чего то стоящего. И вот особенно нужные интерфейсы для использования в с/х — это JTAG, встроенный звук, видеоускоритель и поддержка HDMI? Про то, что украинские программисты талантливы — не спорю, только применяйте свои таланты во благо, а не ради «делаю, потому что могу»
YuriPanchul
23.09.2016 08:02+1Ну например есть такая хрень под названием precision agriculture. Едет роботический трактор по полю с GPS, втыкает в почву щуп, меряет химический состав почвы. После этого вносит удобрения только там и в таком составе, чтобы возместить локальный дисбаланс. Например в одном месте нужно внести суперфосфат, а в другом мочевину.
Если много лет делать избыток суперфосфата на глинистой почве, то потом будут проблемы — фосфаты плохо вымываются. А если сделать избыток мочевины или сульфата аммония, то растения получат химический ожог.
Для управления трактором, gps и анализом на ходу компьютер на данной плате юудет OK, а какой-нибудь КР580ИК80 не потянет.
bigbrotherwatchingyou
23.09.2016 08:35Гм, а где гарантия, что в 10см от щупа химический состав не будет радикально отличаться от взятой пробы? Чем хуже вариант удаленного централизованного контроля — когда, скажем, результаты заборов проб пересылаются в ЦОД для последующего анализа «на лету» и из него же производится управление «роботическим трактором»?
an24
23.09.2016 08:40Мне кажется, что описанная Вами функциональность может быть реализована на STM32+GPS врукопашную. Можно взять доску с STM32, какую-нибудь Discovery. Там и GPS найдется. Если не хочется писать на низком уровне, то можно на FreeRTOS, она вмещается на STM32. Вообщем, зачем брать какой-то не очень распространенный Creator ci40, если существуют апробированные платформы?
YuriPanchul
23.09.2016 08:58+1В каждый такой пост обязательно приходит поклонник STM32 который удивляются как другие платформы вообще смеют существовать.
Так же как например STM32 F7 является продолжением STM32 F4, F3 итд — так и чип на основе MIPS interAptiv внутри Creator ci40 является продолжением чипов на основе этого же ядра от PMC Sierra, MobilEye (№1 производителя чипов для driver's assistance, используется BMW, Volvo итд), продолжением чипов от Qualcomm/Atheros и MediaTek на основе ядер MIPS 1004K/34K/24K итд.
Короче и в том, и в другом случае речь идет о сотнях миллионов или миллиардов чипов. Так что вопрос апробированности тут не так актуален.an24
23.09.2016 10:07+1Нашел пару ваших постов, где Вы признаетесь, что работаете в группе, которая проектирует ядра MIPS. Посему прошу прощение, так как сразу не понял, что это маркетинговый текст. Не буду Вам мешать продвигать платформу.
YuriPanchul
23.09.2016 10:13+1Не, вы можете и мешать, если хотите. Я же разработчик, а не маркетер. Для споров такого рода у меня есть таблички сравнений тех или иных ядер ARM и MIPS, отрывки из The Microprocessor Report и т.д.
kalobyte
23.09.2016 17:20а разве есть такие шупы? и анализ там делается за полсекунды?
я видел только шупы для измерения ph воды
bigbrotherwatchingyou
Ну точно, в сельском хозяйстве Украины очень не хватает многоядерных гигагерцовых систем, других проблем у них нет. Ардуино освойте в полной мере для начала в с/х, вместо того, чтобы забивать MIPSами гвозди в штакетнике.
YuriPanchul
Ардуино в качестве хаба или контролирующего компьютера для большой сети сенсоров не потянет. А уровень украинских программистов достаточно хороший для приложений этого типа. У них не хватает специалистов по микроэлектронике, но я надеюсь на их сотрудничество с росиянами,
kalobyte
зато потянет любой х86 с виндовсом и скадой
но если бабло распилить надо, то конечно высокие нанотехнологии и 6lowpan — тут без этого никак
uuuulala
Всегда хихикаю когда читаю людей, которые (видимо) думают что мир современной электроники состоит из ардуины и ПК, между которыми зияет чёрная пустота.
Ну правда, мир вокруг каждого из нас напичкан девайсами самой разной природы — от счетчика воды на кухне до системы распознавания лиц в метро. Вы правда думаете что для миллионов непохожих друг на друга задач оптимальной является одна и та же аппаратная платформа? Надеюсь, что нет.
kalobyte
я думаю, что управление подобными штуками давно уже реализовано на специальных контроллерах ввода-вывода с протоколом modbus, который работает поверх tcp/ip или rs485, или радио в любом виде
для управления и визуального контроля есть специальный класс софта scada, где задается алгоритм и выведена схема установки
если ты хочеш автоматизировать что-то, то все уже готово и выпускается кучей контор, 95% стоимости установки будет состоять из приводов, датчиков, насосов и всяких труб
так что автоматизация полива или кормления скота похожа
куда можно засунуть этот процессор еще?