14-нанометровая система на кристалле FinFET Exynos 8890
Вчера на специализированной конференции по микроэлектронике Hot Chips в Калифорнии инженеры Samsung впервые показали на презентации чертежи таинственных процессорных ядер M1 (кодовое название Mongoose), которые работает в смартфонах S7 и S7 Edge.
В международных версиях этих Android-смартфонов установлен 14-нанометровая система на кристалле FinFET Exynos 8890. На ней четыре стандартных ядра ARM Cortex-A53 (1,6 ГГц) и четыре проприетарных ядра M1, работающих на частотах 2,3 ГГц и 2,6 ГГц.
Американская группа разработчиков разработала M1 с нуля за три года по собственному проекту. В бенчмарках Exynos 8890 уступает микросхеме iPhone 6S A9 по производительности на одном ядре, но выигрывает в многоядерных задачах.
План ядра M1. Изображение: Samsung
Одна из составляющих ядра M1 — встроенный предсказатель переходов (branch predictor), который предсказывает, будет ли выполнен условный переход в исполняемой программе. Предсказание ветвлений позволяет сократить время простоя конвейера, за счёт предварительной загрузки и исполнения инструкций, которые должны выполниться после выполнения инструкции условного перехода. Прогнозирование ветвлений критически важно, потому что позволяет оптимально использовать вычислительные ресурсы процессора.
Прогнозирование ветвлений через предсказатель переходов — вполне стандартная функция в процессорах. Уже в первых процессорах SPARC и MIPS использовался примитивный статичный метод предсказания ветвлений, когда в конвейер всегда загружаются инструкции, расположенные после инструкции условного перехода. В современных процессорах реализованы более продвинутые методы динамического предсказания переходов:
- с анализом общей истории переходов (бимодальный счётчик, адаптивный двухуровневый предсказатель, глобальное предсказание перехода);
- с анализом собственной истории переходов для каждого условного перехода (локальное предсказание перехода);
- гибридный предсказатель, который выбирает результаты наиболее успешных предсказателей, в том числе предсказателя для цикла;
- предсказатель косвенных переходов, у которых может быть больше двух ветвлений.
Так вот, оказывается, в ядре M1 инженеры Samsung реализовали предсказание ветвлений с помощью нейросети. Это относительно новый тип предсказателя переходов. Впервые его предложил использовать в теоретической работе профессор Лучан Винтан (Lucian Vintan) в 1999 году (научная статья "Towards a High Performance Neural Branch Predictor"). Спустя два года был разработан первый предсказатель переходов на персептронах, который теоретически можно было реализовать в аппаратном обеспечении (научная статья "Fast Path-Based Neural Branch Prediction", автор — профессор Даниэль Хименез (Daniel A. Jimenez) из Рутгерского университета в США).
Ключевым преимуществом предсказателя на нейросети является линейный рост ресурсов при увеличении анализа истории переходов (в классических предсказателях потребление ресурсов растёт экспоненциально при увеличении истории). По этой причине предсказатель на нейросети более эффективен. Уже первая нейросеть из работы Даниэля Хименеза демонстрировала прирост эффективности 5,7% по сравнению с гибридным предсказателем Скотта Макфарлинга.
В последующие годы тот же Даниэль Хименез и другие исследователи работали над устранением недостатков предсказателя переходов, в том числе большой задержкой при вычислениях.
Новейшие идеи для предсказателей переходов исследователи предлагают на конкурсе Championship Branch Prediction, последний из которых проходил в июне 2016 года в рамках симпозиума по компьютерной архитектуре ISCA 2016 в Сеуле.
Несмотря на бурные научные исследования в этой области, до сих пор не было известно ни об одном массовом процессоре, в котором реализован предсказатель переходов на персептронах. Дело не в том, что FinFET Exynos 8890 с ядрами M1 в смартфонах S7 и S7 Edge — первый такой процессор. Просто разработчики Samsung и других компаний держат информацию в секрете, и это можно понять. Предсказатели переходов — один из наиболее охраняемых секретов в полупроводниковой отрасли. Производители часто даже не патентуют свои предсказатели переходов, чтобы не выдать секрета конкурентам, а также потому, что потом трудно будет доказать факт нарушения патента, учитывая сложнейшую логику в современных проприетарных процессорах.
Слайд из презентации Samsung на конференции Hot Chips. На нём изображён модуль предсказателя переходов с использованием нейросети. Изображение: Samsung
Samsung — первая компания, которая официально объявила об использовании нейросети в своём предсказателе переходов. Эксперты в микроэлектронной индустрии говорят, что похожая технология, по всей видимости, используется в предсказателях Jaguar и Bobcat в чипах AMD. Неудивительно, что нынешний вице-президент Samsung и директор по разработке процессоров Samsung, глава научно-исследовательского центра Samsung в Остине (Техас) Брэд Берджесс (Brad Burgess) раньше возглавлял проект по разработке микроархитектуры Bobcat в компании AMD.
Вполне вероятно, что Intel и AMD втихую используют предсказатели на персептронах в десктопных и серверных процессорах. Как уже было сказано, эта информация держится в секрете и даже не патентуется.
Samsung первым нарушил обет молчания. Возможно, разработчики микроархитектуры Exynos просто решили похвастаться.
Поделиться с друзьями
amarao
Желтизна.
На хабре Ализар обнаружил хабр! Не обнаружена, а анонсирована, объявлена, опубликована, раскрыта.
Boctopr
— Ты читай! Читай!
— Нэ-ай-ди кэ-лэ-а-дэ… О!.. Клад — это то, что покладено?
— Не покладено, а положено!
— Нет! Не положено, а закопано!
— Не закопано, а зарыто!
«Клад» (С) мультфильм режиссёра Юрия Бутырина.
mukizu
По-моему это просто дословный перевод http://www.theregister.co.uk/2016/08/22/samsung_m1_core/ «spotted deep inside»
amarao
Желтушный перевод желтушного заголовка.
mphys
Желутшным редактором
kumbr_87
Теперь Желтушного сайта
Siper
«Ученые были в шоке когда это узнали. Galaxy S7 думает как человек и предсказывает будущее.»
BubaVV
Без регистрации и СМС
romxx
"… вы не поверите, что случилось дальше!"
PowerMetall
Leo7777
Сейчас очень модно говорить о нейросетях
nikitastaf1996
И ведь это только «iphone» среди Нокий и Моторолл.Очень интересной вещью может стать neural net based operating system которая постоянно обучается и подстраивается под поведение пользователя.
GreyhoundWeltall
И ведь это только «iphone» среди Нокий и Моторолл.
Это как?
nikitastaf1996
Читать как — начало.Iphone «возглавил» революцию смартфонов.
gsaw
не революцию, а восстание
GreyhoundWeltall
Возглавил? Революцию? Смартфонов?
Не смешите мои тапочки. Айфон популяризировал несколько концептов (тач-управление, магазин приложений, понятие «экосистемы» для устройств). В лучшем случае, раскрутил несколько менее известных/популярных понятий.
А используется он в большинстве случаев для того же, для чего использовались мобилки и раньше — простой телефонный функционал и «потребление контента» (словосочетание-то какое мерзкое).
EmoCoder
Ну так и за счет чего в итоге?
AllexIn
За счет более эффективного предсказания переходов при выполнении многоядерных задач.
EmoCoder
А какое отношение имеет предсказание переходов к многопоточности? (:
Portnov
Гипотеза: это связано через переключение задач при исполнении на одном ядре. Предиктор, скорее всего, анализирует набор инструкций, которые сейчас в конвейере процессора (если бы он читал инструкции прямо из ОЗУ, он был бы слишком тормозным). А когда происходит переключение задач, конвейер процессора сбрасывается (по крайней мере раньше так было, думаю что и сейчас так же). Соответственно, если задачи часто переключаются, то в среднем команд в конвейере меньше, и у предиктора меньше данных для работы, и он хуже работает. Зато, если предиктор особо умный, то он может своей эффективностью компенсировать снижение производительности от частого переключения задач.
1_admin_1
Глупости. Прошлый 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. Чисто мои рассуждения, могу быть не прав, так что не пинайте :) С радостью услышу — в чем я ошибаюсь.
Psychosynthesis
Я тоже не претендую на роль специалиста, но постараюсь чуть-чуть дополнить ваш комментарий.
Начну с того, что сравнивать две архитектуры нужно уточняя чуть конкретнее. Причины проигрыша в том или ином случае могут быть совершенно разные. Например сравнивать A6 с Cortex A53 вообще некорректно ввиду разной разрядности ядер. Да, в общем-то и А7 с Cortex A57 по «транзисторному бюджету» и энергопотреблению сравнивать тоже бессмысленно, ввиду разного техпроцесса. Возможно вы имели ввиду площадь ядер, тогда сравнение чуть более уместно, но я всё же не думаю что инженеры прямо вот так бездумно «пихают» в чипы два «лишних» ядра. Ещё один довод в пользу неверности вашей теории — если я правильно понимаю, в A7 встроенное графическое ядро, а в SoC на Cortex A5x нужно «запихать» ещё и видеоядро. Впрочем, опять же, если я правильно понимаю текущее состояние отрасли, чаще предпочитают ставить видеопроцессор в отдельном чипе. Надеюсь понятно что в этом случае сравнивать эти SoC вообще бессмысленно.
Да и вообще, где-то может использоваться более быстрая память, дающая процентов 5% прироста. Ну и т.п.
Вообще сравнивать производительность и энергоэффективность двух чипов нужно и с большой оглядкой на ПО. Где-то система неэффективно использует ядра, например, не вовремя отключая оные, или занижая частоту и замедляя вычисления, тогда как выгоднее было бы быстро выполнить вычисления на высокой частоте, ну т.п. Примеры на пальцах, поскольку я не большой знаток, но думаю суть изложена верно.
Напоследок хотелось бы сказать о любителях проводить сравнения подобных систем из разряда «я тут поставил популярный бенч на андроид и другой популярный бенч на яблоко, и безапелляционно заявляю, что X быстрее Y», думаю даже не расписывая разность архитектур используемых ОС и разнообразие алгоритмов всевозможных бенчей, понятна ценность подобных сравнений. К сожалению не многие авторы достаточно разбираются в вопросе чтобы им можно было верить на слово.
По моему убеждению, быстродействие и энергоэффективность систем зависят от такого количества факторов, что объективная оценка конкретно самих чипов потребует как минимум запуска их в отладочных платах с использованием одинаковой среды и одинаковых алгоритмов тестирования. Причём нужно ещё отдельно продумать алгоритмы, чтобы было однозначно понятно у кого лучше именно с многопоточностью и т.п. И это потребует весьма высокой квалификации, полагаю даже что люди, которые в состоянии грамотно это сделать, с очень низкой вероятностью будут писать выкладывать подобные статьи просто так.
Извините за многобукав. В чём не прав, буду рад услышать здравую критику.
encyclopedist
Видеопроцессор на отдельном чипе на мобильные устройства никто не ставит.
А техпроцесс является такой же неотъемлемой частью продукта, как архитектура ядра.
Psychosynthesis
Ну, с чипами я ошибся потому что в большинстве источников про графические процессоры пишут «чип», хотя, получается это ядра, а не чипы. Я так понимаю, они по сути тоже являются архитектурой, а уже производители чипов покупают эту архитектуру как и архитектуру вычислительных ядер, а уже потом заказывают производство SoC по собственному дизайну?
Второе ваше утверждение всё же неверно. Первый попавшийся пример:
Kirin 620 и Kirin 650 от HiSilicon, оба на ядре Cortex-A53, только первый 28nm, а второй 16nm.
Я думаю есть какие-то границы, в пределах которых можно масштабировать техпроцесс ядер. Например, очевидно, что если ядро разработанное под процесс 20nm и гигагерцовые частоты изготовить про процессу 100мкм, оно может и не заработать вообще, в силу ряда причин, вроде частоты и размера элементов и т.п. ну и всякие совсем уж технологические нюансы, типа дефектов при травлении для слишком маленьких элемнтов при уменьшении процесса (пример на пальцах)… В общем, я полагаю масштабироваться ядра всё же могут в небольших пределах.
AllexIn
Своим сарказмом вы намекаете на то, что каждому потоку выделяется отдельное ядро? Ну так нет. Потоки еще и скачут между ядрами постоянно. И в таких условиях предсказение переходов — нетривиальная задача имеющая важное значение для производительности.
kosmos89
О госпади! Переключение потоков происходит не больше сотни раз в секунду. Сброс конвейера сто раз в секунду — это ничто.
h31
В Линуксе — от 100 раз в секунду до 1000. Настраивается при сборке.
kosmos89
На частоте 1ГГц один сборс на один миллион инструкций? При длине конвейера даже 20 стадий, это падение на 0,002%. Какие мелочи!
nmi77
Возможно за счет того что ядер в 4 раза больше.
dimkss
Мне кажется, что с ростом использования нейросетей, мы будем все меньше понимать что именно происходит внутри конретного процессора.
И это интересно.
dipsy
Особенно интересно будет это отлаживать. И ещё ситуация «у меня на машине всё работает» приобретает новый смысл, просто у вас процессор с IQ ниже среднего.
h31
Неправильно предсказанный переход — вполне штатная ситуация. То есть от того, что решит нейросеть, в данном случае будет зависеть только производительность. Более того, это вообще не проблема, потому что в обычных процессорах (без жесткого real-time) производительность зависит от такого количества факторов, что неправильное предсказание переходов будет каплей в море.
myldy
Или ситуация:
«Вы слишком непредсказуемы для машины»
Saffron
Суперскаляр уже давно такой — издержки архитектуры. Вместо того, чтобы делать компилятор под процессор, сделали виртуальную машину, прослойку между процессором и абстрактным набором команд.
tmin10
Вот тут-то будущий скайнет и размахнётся: никакой программист не сможет сказать, почему нейронная сеть, которая раньше работала нормально, вдруг приняла решение, которого от неё не ждали.
Mad__Max
Ну так и программистов особо не будет. Будут в основном «тренеры» (специалисты занимающиеся обучением нейронных сетей).
DimasSup
Вот значит почему мой компьютер за 3 года начал так тормозить…
gsaw
кризис среднего возраста, перегорел, хочет заняться чем то новым.
Celtis
А чем эта сеть обучена? И обучается ли она в процессе эксплуатации?
Не получится ли что ее, грубо говоря, натаскали на сверхбыстрое прохождение известной синтетики?
xRay
Интересный вопрос с учетом того что уже ловили Samsung (Samsung Galaxy S4) на подобных фокусах для бенчмарков
NeoCode
На такие вещи в общем напрашивается специальный бит в коде команды, который бы указывал, будет ли данный переход выполняться часто (например возврат в начало цикла) или редко (переход по исключению). А выставлять его должен компилятор на основе анализа кода и возможно с помощью какой-то обратной связи с инструментами профилирования.
Byteman
VLIW?
tyomitch
Этот бит уже есть — это бит знака в поле смещения.
Для переходов без истории предсказывается, что переход назад будет выполняться (потому что это скорее всего цикл), а переход вперёд не будет выполняться (потому что это скорее всего выход из цикла). Соответственно, компилятор переставляет базовые блоки таким образом, чтобы редко выполняемые переходы вели вперёд, а часто выполняемые — назад.
encyclopedist
На x86 есть специальные префиксы, которые указывают именно то, что вы пишете. Только они не давным давно (со времен кажется P4) игнорируются процессорами, потому как аппаратное предсказание уже работает лучше чем доверять этим битам. Например, с помощью бита не получится описать регулярный паттерн, а современные предсказатели его распознают очень хорошо. Ну и даже если это предусмотреть, то эти подсказки статические, а аппаратное предсказание — динамическое, зависящее от конкретной ситуации.
tyomitch
Лучше всего работает сочетание обоих подходов: если перехода нет в истории — пользоваться статическим предсказанием, если есть в истории — динамическим.
Nagg
Особенно актуально для всяких синглтредовых жаваскриптов и игр.
В общем, 8 ядер с нейронными сетями, а айфон (прошлогодний) все равно будет быстрее на невооруженный глаз.
VioletGiraffe
Т. е. RISC-процессор ARM превращается в суперскалярный Интел х86 с ОоО? Окей.
encyclopedist
Это как вы такой вывод сделали? RISC никак не противоречит суперскалярности, out-of-order, предсказанию переходов и т.д.
Mad__Max
Тем более Интел х86 остается х86 в основном снаружи. А внутри уже давным давно что-то RISC-подобное.
Saffron
> Производители часто даже не патентуют свои предсказатели переходов, чтобы не выдать секрета конкурентам, а также потому, что потом трудно будет доказать факт нарушения патента, учитывая сложнейшую логику в современных проприетарных процессорах.
Так алгоритмы и не патентуются.
encyclopedist
Saffron
В смысле, реализации алгоритмов? Реализация — это программа, её защищает авторское право, а не патент. А патенты на программы бывают только в США, где взятки (лобби) победили здравый смысл.
a5b
Описание аппаратуры (электрической схемы) — это программа?
В патентах могут писать не только о методе, но и об устройстве, реализующем определенный набор методов 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.