Pull to refresh

Comments 53

Желтизна.

На хабре Ализар обнаружил хабр! Не обнаружена, а анонсирована, объявлена, опубликована, раскрыта.
— Ты читай! Читай!
— Нэ-ай-ди кэ-лэ-а-дэ… О!.. Клад — это то, что покладено?
— Не покладено, а положено!
— Нет! Не положено, а закопано!
— Не закопано, а зарыто!

«Клад» (С) мультфильм режиссёра Юрия Бутырина.
По-моему это просто дословный перевод http://www.theregister.co.uk/2016/08/22/samsung_m1_core/ «spotted deep inside»
Желтушный перевод желтушного заголовка.
Желутшным редактором
«Ученые были в шоке когда это узнали. Galaxy S7 думает как человек и предсказывает будущее.»
Без регистрации и СМС
"… вы не поверите, что случилось дальше!"
ШОК!!! Инженеры фирмы Samsung даже и не подозревали, что...
[ПРОДОЛЖЕНИЕ ДОСТУПНО ТОЛЬКО ПОДПИСЧИКАМ]
Сейчас очень модно говорить о нейросетях
UFO landed and left these words here
И ведь это только «iphone» среди Нокий и Моторолл.

Это как?
UFO landed and left these words here
не революцию, а восстание
Возглавил? Революцию? Смартфонов?
Не смешите мои тапочки. Айфон популяризировал несколько концептов (тач-управление, магазин приложений, понятие «экосистемы» для устройств). В лучшем случае, раскрутил несколько менее известных/популярных понятий.

А используется он в большинстве случаев для того же, для чего использовались мобилки и раньше — простой телефонный функционал и «потребление контента» (словосочетание-то какое мерзкое).
В бенчмарках Exynos 8890 уступает микросхеме iPhone 6S A9 по производительности на одном ядре, но выигрывает в многоядерных задачах. Теперь стало понятно, за счёт чего.


Ну так и за счет чего в итоге?
За счет более эффективного предсказания переходов при выполнении многоядерных задач.
А какое отношение имеет предсказание переходов к многопоточности? (:
Гипотеза: это связано через переключение задач при исполнении на одном ядре. Предиктор, скорее всего, анализирует набор инструкций, которые сейчас в конвейере процессора (если бы он читал инструкции прямо из ОЗУ, он был бы слишком тормозным). А когда происходит переключение задач, конвейер процессора сбрасывается (по крайней мере раньше так было, думаю что и сейчас так же). Соответственно, если задачи часто переключаются, то в среднем команд в конвейере меньше, и у предиктора меньше данных для работы, и он хуже работает. Зато, если предиктор особо умный, то он может своей эффективностью компенсировать снижение производительности от частого переключения задач.
Глупости. Прошлый Exynos, который на Cortex A53+A57 тоже был медленнее в однопотоке, и быстрее в многопотоке, чем Apple Ax процессоры. И там никаких нейросетей не было.

Главная проблема у Apple — это энергоэффективность. Им надо быть жутко энергоэффективными, по емкости батарейки iPhone сильно проигрывает тем же Galaxy. Особенно если говорить про iPhone 6s (который не Plus) и SE.
И в результате Apple поставила ставку на большую производительность на один такт. Получились большие жирные ядра на малой частоте. Поскольку ядра жирные — их много не ставят в SoC.

А есть Cortex A57. Ядра по транзисторному бюджету значительно меньше, производительность на такт ниже, но зато их можно запихнуть больше.

Только вот энергопотребление с повышением частоты — не линейная функция, а вот с увеличением количества ядер — вполне себе линейная. В результате, 4 более медленных ядра получаются производительнее. Просто по той причине, что у Apple их два, и чтобы добиться такой же производительности в многопотоке им прийдется значительно поднять частоту (производительность на такт отличается, но не в разы), а это менее выгодно в энергетическом плане, чем поставить по больше ядер.

Ну и можете заменить A57 на M1, суть особо не поменяется. Да, новый процессор прибавил в однопотоке значительно, но основной смысл тот же, производительность на такт — всё ещё меньше, чем у Apple, но ядер больше, поэтому в многопотоке Apple соревноваться тяжело.

P.S. Чисто мои рассуждения, могу быть не прав, так что не пинайте :) С радостью услышу — в чем я ошибаюсь.
Я тоже не претендую на роль специалиста, но постараюсь чуть-чуть дополнить ваш комментарий.

Начну с того, что сравнивать две архитектуры нужно уточняя чуть конкретнее. Причины проигрыша в том или ином случае могут быть совершенно разные. Например сравнивать A6 с Cortex A53 вообще некорректно ввиду разной разрядности ядер. Да, в общем-то и А7 с Cortex A57 по «транзисторному бюджету» и энергопотреблению сравнивать тоже бессмысленно, ввиду разного техпроцесса. Возможно вы имели ввиду площадь ядер, тогда сравнение чуть более уместно, но я всё же не думаю что инженеры прямо вот так бездумно «пихают» в чипы два «лишних» ядра. Ещё один довод в пользу неверности вашей теории — если я правильно понимаю, в A7 встроенное графическое ядро, а в SoC на Cortex A5x нужно «запихать» ещё и видеоядро. Впрочем, опять же, если я правильно понимаю текущее состояние отрасли, чаще предпочитают ставить видеопроцессор в отдельном чипе. Надеюсь понятно что в этом случае сравнивать эти SoC вообще бессмысленно.

Да и вообще, где-то может использоваться более быстрая память, дающая процентов 5% прироста. Ну и т.п.

Вообще сравнивать производительность и энергоэффективность двух чипов нужно и с большой оглядкой на ПО. Где-то система неэффективно использует ядра, например, не вовремя отключая оные, или занижая частоту и замедляя вычисления, тогда как выгоднее было бы быстро выполнить вычисления на высокой частоте, ну т.п. Примеры на пальцах, поскольку я не большой знаток, но думаю суть изложена верно.

Напоследок хотелось бы сказать о любителях проводить сравнения подобных систем из разряда «я тут поставил популярный бенч на андроид и другой популярный бенч на яблоко, и безапелляционно заявляю, что X быстрее Y», думаю даже не расписывая разность архитектур используемых ОС и разнообразие алгоритмов всевозможных бенчей, понятна ценность подобных сравнений. К сожалению не многие авторы достаточно разбираются в вопросе чтобы им можно было верить на слово.

По моему убеждению, быстродействие и энергоэффективность систем зависят от такого количества факторов, что объективная оценка конкретно самих чипов потребует как минимум запуска их в отладочных платах с использованием одинаковой среды и одинаковых алгоритмов тестирования. Причём нужно ещё отдельно продумать алгоритмы, чтобы было однозначно понятно у кого лучше именно с многопоточностью и т.п. И это потребует весьма высокой квалификации, полагаю даже что люди, которые в состоянии грамотно это сделать, с очень низкой вероятностью будут писать выкладывать подобные статьи просто так.

Извините за многобукав. В чём не прав, буду рад услышать здравую критику.

Видеопроцессор на отдельном чипе на мобильные устройства никто не ставит.


А техпроцесс является такой же неотъемлемой частью продукта, как архитектура ядра.

Ну, с чипами я ошибся потому что в большинстве источников про графические процессоры пишут «чип», хотя, получается это ядра, а не чипы. Я так понимаю, они по сути тоже являются архитектурой, а уже производители чипов покупают эту архитектуру как и архитектуру вычислительных ядер, а уже потом заказывают производство SoC по собственному дизайну?

Второе ваше утверждение всё же неверно. Первый попавшийся пример:
Kirin 620 и Kirin 650 от HiSilicon, оба на ядре Cortex-A53, только первый 28nm, а второй 16nm.

Я думаю есть какие-то границы, в пределах которых можно масштабировать техпроцесс ядер. Например, очевидно, что если ядро разработанное под процесс 20nm и гигагерцовые частоты изготовить про процессу 100мкм, оно может и не заработать вообще, в силу ряда причин, вроде частоты и размера элементов и т.п. ну и всякие совсем уж технологические нюансы, типа дефектов при травлении для слишком маленьких элемнтов при уменьшении процесса (пример на пальцах)… В общем, я полагаю масштабироваться ядра всё же могут в небольших пределах.
Своим сарказмом вы намекаете на то, что каждому потоку выделяется отдельное ядро? Ну так нет. Потоки еще и скачут между ядрами постоянно. И в таких условиях предсказение переходов — нетривиальная задача имеющая важное значение для производительности.
О госпади! Переключение потоков происходит не больше сотни раз в секунду. Сброс конвейера сто раз в секунду — это ничто.
В Линуксе — от 100 раз в секунду до 1000. Настраивается при сборке.
На частоте 1ГГц один сборс на один миллион инструкций? При длине конвейера даже 20 стадий, это падение на 0,002%. Какие мелочи!
Возможно за счет того что ядер в 4 раза больше.
Мне кажется, что с ростом использования нейросетей, мы будем все меньше понимать что именно происходит внутри конретного процессора.
И это интересно.
Особенно интересно будет это отлаживать. И ещё ситуация «у меня на машине всё работает» приобретает новый смысл, просто у вас процессор с IQ ниже среднего.
Неправильно предсказанный переход — вполне штатная ситуация. То есть от того, что решит нейросеть, в данном случае будет зависеть только производительность. Более того, это вообще не проблема, потому что в обычных процессорах (без жесткого real-time) производительность зависит от такого количества факторов, что неправильное предсказание переходов будет каплей в море.
Или ситуация:
«Вы слишком непредсказуемы для машины»
Суперскаляр уже давно такой — издержки архитектуры. Вместо того, чтобы делать компилятор под процессор, сделали виртуальную машину, прослойку между процессором и абстрактным набором команд.

Вот тут-то будущий скайнет и размахнётся: никакой программист не сможет сказать, почему нейронная сеть, которая раньше работала нормально, вдруг приняла решение, которого от неё не ждали.

Ну так и программистов особо не будет. Будут в основном «тренеры» (специалисты занимающиеся обучением нейронных сетей).
В классических предсказателях потребление ресурсов растёт экспоненциально при увеличении истории. По этой причине предсказатель на нейросети более эффективен.

Вот значит почему мой компьютер за 3 года начал так тормозить…
кризис среднего возраста, перегорел, хочет заняться чем то новым.
А чем эта сеть обучена? И обучается ли она в процессе эксплуатации?
Не получится ли что ее, грубо говоря, натаскали на сверхбыстрое прохождение известной синтетики?
Интересный вопрос с учетом того что уже ловили Samsung (Samsung Galaxy S4) на подобных фокусах для бенчмарков
На такие вещи в общем напрашивается специальный бит в коде команды, который бы указывал, будет ли данный переход выполняться часто (например возврат в начало цикла) или редко (переход по исключению). А выставлять его должен компилятор на основе анализа кода и возможно с помощью какой-то обратной связи с инструментами профилирования.
Этот бит уже есть — это бит знака в поле смещения.
Для переходов без истории предсказывается, что переход назад будет выполняться (потому что это скорее всего цикл), а переход вперёд не будет выполняться (потому что это скорее всего выход из цикла). Соответственно, компилятор переставляет базовые блоки таким образом, чтобы редко выполняемые переходы вели вперёд, а часто выполняемые — назад.

На x86 есть специальные префиксы, которые указывают именно то, что вы пишете. Только они не давным давно (со времен кажется P4) игнорируются процессорами, потому как аппаратное предсказание уже работает лучше чем доверять этим битам. Например, с помощью бита не получится описать регулярный паттерн, а современные предсказатели его распознают очень хорошо. Ну и даже если это предусмотреть, то эти подсказки статические, а аппаратное предсказание — динамическое, зависящее от конкретной ситуации.

Лучше всего работает сочетание обоих подходов: если перехода нет в истории — пользоваться статическим предсказанием, если есть в истории — динамическим.
В бенчмарках Exynos 8890 уступает микросхеме iPhone 6S A9 по производительности на одном ядре, но выигрывает в многоядерных задачах.

Особенно актуально для всяких синглтредовых жаваскриптов и игр.
В общем, 8 ядер с нейронными сетями, а айфон (прошлогодний) все равно будет быстрее на невооруженный глаз.
Т. е. RISC-процессор ARM превращается в суперскалярный Интел х86 с ОоО? Окей.

Это как вы такой вывод сделали? RISC никак не противоречит суперскалярности, out-of-order, предсказанию переходов и т.д.

Тем более Интел х86 остается х86 в основном снаружи. А внутри уже давным давно что-то RISC-подобное.
> Производители часто даже не патентуют свои предсказатели переходов, чтобы не выдать секрета конкурентам, а также потому, что потом трудно будет доказать факт нарушения патента, учитывая сложнейшую логику в современных проприетарных процессорах.

Так алгоритмы и не патентуются.
  1. В США таки патентуются.
  2. Реализации патентуются во всем мире.
В смысле, реализации алгоритмов? Реализация — это программа, её защищает авторское право, а не патент. А патенты на программы бывают только в США, где взятки (лобби) победили здравый смысл.

Описание аппаратуры (электрической схемы) — это программа?
В патентах могут писать не только о методе, но и об устройстве, реализующем определенный набор методов Methods and apparatus (processor comprising… BTB + indirect branch prediction logic… method comprising… storing a target address and a bimodal hysteresis counter… A computing system comprising: a memory to store an instruction corresponding to an indirect branch; and a processor core comprising:… BTB + indirect branch prediction logic) или instruction processing apparatus.

Only those users with full accounts are able to leave comments. Log in, please.