?

Log in

No account? Create an account
Украинец подсказал британцу сделать вебинар для разработчиков IoT для сельского хозяйства - Юрий Панчул [entries|archive|friends|userinfo]
Money can buy bandwidth. Latency requires bribing God.

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Украинец подсказал британцу сделать вебинар для разработчиков IoT для сельского хозяйства [Sep. 22nd, 2016|08:07 am]
Yuri Panchul
Пути технологии неисповедимы. Три месяца назад к нам в Silicon Valley приехал бизнесмен из Украины Александр Романишин. Я пошел с Александром на выставку для разработчиков IoT, где мы встретили Дэвида Гарольда из британской части Imagination Technologies (компании, которая спроектировала PowerVR GPU внутри Apple iPhone).

Александр увидел у Дэвида демо платы MIPS Creator ci40 для "умных ферм", и минут двадцать рассказывал Дэвиду, что все правительство Украины начиная с Порошенко лично желает в порядке нахождения экономического будущего страны скрестить электронные технологии и сельское хозяйство. (Александр - старший менеджер аудит-компании, который делает анализ и поддержку сделок M&A)

Дэвид воспринял все это максимально буквально и сегодня утром я получил от начальника Дэвида письмо, откуда узнал, что они в Великобритании сделали онлайн вебинар по использованию MIPS Creator ci40 для построения системы умной ирригации, и соратники Александра могут зарегистрироваться для этого семинара, который состоится в среду 28 сентября в 11 утра по Silicon Valley / в 21.00 по киевскому времени:

svod_160525_144017



По этому поводу я хочу копнуть глубже внутрь чипа и рассказать про историю и особенности процессорного ядра в показываемом в вебинаре устройстве. Внутри 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


Да, и не забываем регистрироваться на вебинар:







Какие аспекты данного поста для вас интересны?

Украина
1(6.2%)
Приложения Internet of Things
5(31.2%)
Различные типы микроархитектур (организации конвейера) при единой архитектуре (системе команд)
2(12.5%)
Аппаратная поддержка многопоточности на одном ядре
2(12.5%)
Многоядерность с менеджером когерентности
1(6.2%)
Многоядерный Линукс
4(25.0%)
Из-за бугра плюете?
1(6.2%)
LinkReply

Comments:
(Deleted comment)
From: veremeenko_alex
2016-09-22 03:13 pm (UTC)
Неужели скорость принятия решений в ирригации требует специальных чипов?

(Reply) (Thread)
[User Picture]From: lifewalker
2016-09-22 03:26 pm (UTC)
Вот я тоже удивился. По сегодняшней моде я бы подумал, что решение выглядит так: сначала с кучи датчиков микроконтроллер снимает показания и раз в полчаса через сотовый модуль отправляет на сервер, сервер делает могучий data science с ещё тысячей таких датчиков в полях, а потом обратно через сотовый модуль говорит каждому контроллеру чего когда поливать. И для этого тому контроллеру едва ли нужно много мозгов.
(Reply) (Parent) (Thread)
From: veremeenko_alex
2016-09-22 03:57 pm (UTC)
я тоже так подумал, но может у них все хитрее
(Reply) (Parent) (Thread)
[User Picture]From: vic_nikob
2016-09-22 03:14 pm (UTC)
Молодцы! И читать тебя интересно, спасибо
(Reply) (Thread)
[User Picture]From: rex_evol
2016-09-22 04:02 pm (UTC)
У него самый отличный опросник в жж. Всегда знаю, как отвечу. "Из-за бугра плюете?".
(Reply) (Parent) (Thread)
[User Picture]From: vic_nikob
2016-09-22 04:06 pm (UTC)
:-)
(Reply) (Parent) (Thread)
From: realurix
2016-09-22 04:27 pm (UTC)
Если пересчитать количество обрабатываемых бит/сек мозгом человека и процессором 8*Xeon:4GGz, то они будут примерно равны. Интересно, а можно на архитектуре MIPS 34K сэмулировать хотя бы простого муравья, не говоря уже за лягушек и других более высокоорганизованных животных?

Edited at 2016-09-22 04:28 pm (UTC)
(Reply) (Thread)
[User Picture]From: panchul
2016-09-22 04:31 pm (UTC)
*** Если пересчитать количество обрабатываемых бит/сек мозгом человека и процессором 8*Xeon:4GGz, то они будут примерно равны ***

А как считали?
(Reply) (Parent) (Thread)
From: realurix
2016-09-22 04:47 pm (UTC)
В мозгу примерно 50 млрд. нейронов. Скорость работы нейрона примерно 20 бит/сек. Итого 1000 млрд/сек.
У Xeon-а 1 ядро выполняет примерно 4 млрд операций/сек, разрядность слова 64. Ядер 8. 8*4*64=2048 млрд бит/сек.

У 8-ми ядерного Xeon-4GGz производительность примерно в 2 раза выше, чем у человеческого мозга при максимальной загрузке.

Возникает вопрос: а туда ли мы идём? Америкозы вот не смогли ни создать полупроводники, ни полететь первыми в космос. Зачем они весь мир в тупик направляют? Если "Буран" на процессоре а-ля PDP-11 смог не только в автоматическом режиме слетать в космос, но и самостоятельно выбрать схему посадки и рассчитать оптимальную траекторию посадки, а по прошествии 30 лет ни один самолёт Boeing и Airbus не могут самостоятельно садиться и самостоятельно лететь при том, что они гораздо более предпочтительны с точки зрения аэродинамики, то это говорит о многом.
(Reply) (Parent) (Thread)
[User Picture]From: coralsteel
2016-09-22 06:54 pm (UTC)
Боюсь спросить насчет что стоит в летальном оружии для Украины... что то многоядерное и многопоточное...
(Reply) (Thread)
[User Picture]From: mister_hyister
2016-09-22 07:51 pm (UTC)
Героям Майдана партию списанных револьверов "Смит-Вессон" подвезли? Из них вполне можно убить.
(Reply) (Parent) (Thread)
[User Picture]From: coralsteel
2016-09-23 12:27 pm (UTC)
А это мысль.
Один поток на камеру широкого обзора.
Второй на камеру на прицел.
Третий поток управляет шаговыми двигателями вверх-вниз, вправо-влево. "мышь не проскочит"
(Reply) (Parent) (Thread)