Мой гаджет имеет 8 ядер и 64 бита

  1. ВОСЕМЬ РЕДНЕНОВ !!!!!!!!!!!!!!
  2. 64 бита, что в два раза быстрее
  3. 64 бита - скрытая выгода
  4. К концу этого года вы забудете о 64 битах

И я спрошу - и что? В начале я хотел бы объяснить: я не против 8 или даже 16 ядер, также как я не против 2 или 4 ядер. Аналогично с архитектурой 32 и 64 бит.

Меня побудило поведение продюсеров во время ярмарок MWC в Барселоне написать эту колонку. Я понимаю технологическое развитие и правила, регулирующие маркетинговую деятельность, но мне трудно согласиться обмануть клиентов и пользователей пустыми лозунгами. Это не новинка почти во всех отраслях рынка, но по некоторым причинам я бы ожидал большего от производителей бытовой электроники. Немного уважения к получателю.

Немного уважения к получателю

ВОСЕМЬ РЕДНЕНОВ !!!!!!!!!!!!!!

Самая важная особенность нового смартфона? Восемь ядер! Восемь! Понимаете ли вы?! Восемь ядер! Посмотрите на стенды и рекламные листовки, и мы поймем, что происходит. Конечно, я не говорю, что производитель должен скрывать количество ядер процессора, но любой среднестатистический знающий человек понимает, что их количество является вторичным или даже третичным элементом. И я говорю не только об одноядерной синхронизации, но прежде всего об архитектуре, тепловых параметрах, графическом процессоре (в конце концов, у графики также есть ядра, почему почти никто не говорит об этом?). А ядра DSP? Почему их никто не считает? Исправлена ​​функция обработки и ядра этого аппарата? Тоже нет ... Многое зависит от архитектуры, набора инструкций процессора, оптимизации времени, но этих элементов недостаточно для «маркетинга». Их сложно продать. А 8 ядер? ВОСЕМЬ РЕДНЕНЕ !!! Это впечатляет. Несмотря на то, что я не против 8-ядерных процессоров, стоит иметь дело с определенным мифом. 8 ядер с частотой 1,5 ГГц не дадут нам эффективность одного ядра с частотой 12 ГГц. Очень (очень ОЧЕНЬ) приложения могут использовать более двух ядер (одновременно), и большинство из них полностью используют только одно.

Это выглядит немного лучше с операционной системой, в которой работают многие процессы и потоки, но тогда, даже в этом случае, 8 ядер тянут слишком большую пушку. Принимая во внимание однопоточное приложение, один поток не может поддерживаться на нескольких ядрах одновременно. Это правда, что он может быть запущен на разных ядрах одно за другим, но это не одновременно. Такие производители, как Qualcomm, создали технологию, которая позволяет вам запускать поток на нескольких ядрах одновременно, но он разделен на подпотоки, и эффективность, которую мы получаем от этого, незначительна. Если вы хотите в полной мере использовать процессорные ядра, разработчики должны будут написать приложения с асинхронными потоками, которые позволят им выполнять параллелизм, что пока редко (за исключением некоторых игр). И это не из-за лени программистов - многие алгоритмы и фрагменты кода просто не могут быть распараллелены с использованием текущей парадигмы программирования.

64 бита, что в два раза быстрее

Нет, это не так, хотя продюсеры хотели бы, чтобы у вас сложилось впечатление, что это правильно. Тема 32 и 64 бит намного сложнее. В одном лагере утверждается, что 64-разрядные данные необходимы только для адресации более 4 ГБ ОЗУ, поскольку это невозможно на 32-разрядном процессоре. Второй лагерь пытается убедить нас в том, что 64-битный переход волшебным образом ускорит работу системы и приложений. На мой взгляд, обе группы в корне не правы. Большинство читателей, вероятно, обнаружили, что 32-разрядный процессор не может адресовать более 4 ГБ памяти ( на практике еще меньше из-за зарезервированного адресного пространства).

Откуда это ограничение? Из простого описания: 32 бита определяют количество ячеек, которые должны быть адресованы. Существует 32 варианта 32-битного адреса, то есть непосредственно адресованных 4 294 967 296 (4 G) ячейкам памяти. Но действительно ли это непреодолимая проблема для 32-битной архитектуры? Не обязательно. Решения по увеличению адресного пространства известны давно, например, с помощью сегментации памяти или виртуализации - с использованием PAE ( Расширение физического адреса ). Это решение позволяет процессору получать доступ к более чем 4 ГБ ОЗУ, но не меняет размер виртуального адресного пространства для одного процесса - каждый процесс в памяти будет дополнительно ограничен пределом в 4 ГБ. Речь идет не только о проблемах, связанных с размером оперативной памяти.

Давайте перейдем к 64-битной архитектуре. Процессоры используют два типа чисел для выполнения таких операций, как добавление, умножение, перемещение и копирование данных в память - целые числа и числа с плавающей запятой (десятичные дроби). Если процессор может обрабатывать эти операции для целочисленных последовательностей длиной до 16 бит, это 16-битный процессор. Если до 32 бит - 32-битный процессор. И так далее. 32-битный процессор также использует 32 бита для указания областей памяти, в то время как 64-битный процессор использует для этого 64 бита. Это означает, что одна программа (или, скорее, процесс) может адресовать только 4 ГБ для конкретного 32-разрядного чипа, даже если весь процессор (а не один процесс) может адресовать больше. 64-разрядный процессор с 64-разрядным адресным пространством может адресовать до 16 эксабайт памяти для каждого отдельного процесса. Сколько это стоит? Много, намного, намного больше, чем вам когда-либо понадобится.

Для большинства приложений чистое преимущество 64-битного процессора незаметно. Большинству приложений не нужно выполнять 64-разрядные операции или обращаться к более чем 4 ГБ ОЗУ (да, я знаю), а современные смартфоны имеют максимум 4 ГБ памяти, которая может быть успешно обработана 32-разрядным процессором. На практике 64-разрядные приложения могут иногда работать медленнее, чем их 32-разрядные аналоги, из-за того, что использование этих 64-разрядных индикаторов памяти увеличивает потребление ресурсов приложения с точки зрения стека, оперативной памяти и кэш-памяти. Преимущества? Есть, но преимущества в настоящее время - практически неизмеримы. Эта архитектура предоставляет больше регистров, которые в два раза шире, что теоретически способствует увеличению производительности приложений, которые скомпилированы для 64 бит.

64 бита - скрытая выгода

Самое большое преимущество перехода на 64-битную архитектуру не прямое. Это связано с переходом на новый улучшенный набор команд для процессоров ARM, а именно с перехода с архитектуры ARMv7 на архитектуру ARMv8. v7 был с нами почти десятилетие и почти требовал улучшенного преемника. ARMv8 оптимизирует заказы, избавляется от этих неоптимальных, заменяя их более эффективными. Некоторые заказы в некоторой степени адаптированы к новым приложениям и их потребностям, включая эффективное шифрование и обработку сигналов. Удвоенное количество регистров в этой архитектуре позволяет реже ссылаться на память - и это не 64-битная, а ARMv8. Подводя итог, можно сказать, что ARMv8 делает 64-битные процессоры более эффективными, а не просто увеличивает длину регистров в два раза. Верно, что нет v8 без 64 ​​бит, но маркетинговый акцент на «64» определенно преувеличен.

Верно, что нет v8 без 64 ​​бит, но маркетинговый акцент на «64» определенно преувеличен

Значит ли реальное преимущество 64 бит заметно и измеримо? И да, и нет. Наиболее важным будет время процессора и его внутренняя архитектура, а не длина реестра. 64-битный Snapdragon 410 будет заметно медленнее, чем 32-битный Snapdragon 805. При столкновении с ГГц, литографическим процессом, типом ядер, графическим процессором и внутренней архитектурой, ни у более длинного регистра, ни у ARMv8 нет шансов. Конечно, переход на 64-битные и, прежде всего, только на ARMv8 был неизбежен и, безусловно, позитивен, но мы не должны присваивать это магическое значение. Следует помнить, что для полноценного использования 64-битных систем нам нужна 64-битная операционная система (например, Lollipop) и 64-битные приложения, скомпилированные / написанные для этой архитектуры.

Android сделал первый шаг, хотя это не обошлось без спотыканий, и многие люди жалуются на производительность 64-битной системы и отсутствие полной обратной совместимости. Приложения все еще являются проблемой. Это правда, что их создатели, вероятно, скоро оптимизируют их для 64-битных чипов, но проблема действительно в другом. Приложения Android основаны на основной мере Java. Загружая .apk, мы скачиваем действительно сжатый архив с кодом и библиотеками, а система компилируется с помощью JiT (Just in Time - Dalvik) или AoT (Ahead of Time - ART). Если ART в Lollipop не принесет внутреннюю оптимизацию в собственный 64-битный код, усилия производителей будут напрасны. И на данный момент, у Google есть проблема с этим, поскольку он показывает много синтетических тестов.

К концу этого года вы забудете о 64 битах

Маркетологи любят термин 64-бит и октакор . Однако такие условия быстро перестают быть захватывающими, так же как мегапиксели и мегагерцы перестали нас волновать. Переключение с 32 на 64 бита или с 4 на 8 ядер не приведет к удвоению производительности, поскольку 20 мегапикселей не будут «вдвое лучше», чем 10 мегапикселей. 20 мегапикселей это ... всего двадцать миллионов точек на матрице. Только так много. Как 64-битные и 8 ядер. Здесь нет волшебства, вопреки тому, что многие маркетологи из крупнейших мировых технологических компаний пытаются убедить нас. И несмотря ни на что, я наивно хотел бы, чтобы они относились к своим клиентам серьезно и с уважением.

Самая важная особенность нового смартфона?
Понимаете ли вы?
В конце концов, у графики также есть ядра, почему почти никто не говорит об этом?
А ядра DSP?
Почему их никто не считает?
Исправлена ​​функция обработки и ядра этого аппарата?
А 8 ядер?
Откуда это ограничение?
Но действительно ли это непреодолимая проблема для 32-битной архитектуры?
Сколько это стоит?