Содержание статьи
Рынок мобильных устройств сегодня находится на той стадии развития, когда придумать что-то новое уже сложно, а продавать смартфоны и планшеты необходимо. Так появляются процессоры с восемью ядрами, экраны с заоблачными разрешениями, 20-мегапиксельные камеры и гигабайты оперативной памяти. Если ты считаешь, что все это действительно прогресс, то добро пожаловать в мир маркетинга. Бессмысленного и беспощадного.
Многоядерные процессоры
В мае 2005 года Intel выпустила процессор Pentium D архитектуры x86-64, ставший первым двухъядерным процессором для персональных компьютеров. Через два года двухъядерные процессоры стали стандартом, и на смену идее наращивания тактовой частоты пришла идея увеличения количества процессоров на одном кристалле. Три года назад этому примеру последовали и производители мобильных чипов, и сегодня четыре ядра в мобильном телефоне — это уже стандарт де-факто, который, судя по всему, скоро сменится на стандарт установки шести- и восьмиядерных процессоров. Казалось бы, все замечательно, вот только смысла в таком положении дел нет практически никакого.
Чтобы понять, почему многоядерные процессоры не нужны в мобильной технике, мы должны разобраться с тем, зачем они вообще были придуманы. Изначально многопроцессорные системы использовались исключительно в серверах, где они действительно могли существенно поднять производительность. Достигалось это благодаря двум особенностям серверов: на них приходятся постоянные высокие нагрузки на пределе возможностей железа и операции вычисления часто преобладают над операциями ввода-вывода (это свойственно разным приложениям для расчета траекторий полета ракеты или поиска лекарства от рака).
Это значит, что задачи, исполняемые на многопроцессорных системах, могли быть эффективно распараллелены. Например, задачу поиска строки в большом объеме данных можно достаточно легко разделить на две и более, просто заставив несколько копий задачи искать в своем участке данных. В результате две задачи на двухпроцессорной системе справятся с работой почти в два раза быстрее. Но даже здесь будут некоторые потери из-за ожидания каждой задачей возможности доступа к памяти (процессора два, но память-то одна!), когда одной из задач придется ждать, пока другая закончит запись / чтение памяти. Впрочем, благодаря кешу процессора, молниеносной скорости работы памяти и блоку DMA, потери будут совсем незначительные.
Теперь немного усложним пример и представим себе сервер, который должен получать запрос по сети, затем читать данные с диска и отправлять их в качестве ответа. Эту задачу тоже можно распараллелить, однако здесь потери будут гораздо значительнее, и двукратного роста производительности достичь уже не получится. Почти постоянно задачи будут блокировать друг друга при доступе к диску (который в сравнении с RAM очень медленный), к сетевому адаптеру, при вызове различных функций ядра. Если бы сервер при этом еще издавал звуки, что-то выводил на экран и делал снимок камерой при каждом обращении к нему, то из-за блокировок прирост производительности свелся бы максимум к 20%.
А теперь представим себе смартфон. Особенности его работы:
- Постоянно низкие нагрузки на процессор с редкими всплесками: сама система и приложения проектируются таким образом, чтобы как можно меньше есть процессор, а следовательно, и батарею.
- Преобладание операций ввода-вывода перед вычислениями: приложения в основном заняты ожиданием ввода пользователя, обновлением экрана и получением/отправкой данных по сети.
- Обилие датчиков, сенсоров и других компонентов, к каждому из которых одновременно может получить доступ только одна задача.
- Практически полное отсутствие приложений, умеющих эффективно распараллеливаться на несколько процессоров/ядер.
В таких условиях система не только не сможет эффективно задействовать многоядерный процессор, но и вообще не нуждается в нем. Благодаря крайне низкой нагрузке на процессор и постоянному блокированию задач при обращении к оборудованию, даже одно ядро вполне справится с работой (пока одна задача блокирована, вторая может занять процессор). Один из немногих примеров, когда второе ядро было бы необходимо, — это ускорение графического интерфейса: одно ядро смогло бы заниматься обновлением экрана, а второе в это время выполнять другие задачи. Однако все современные смартфоны уже используют для этого гораздо более эффективный графический процессор.
Другая возможность задействования второго ядра — это запускать на нем разные фоновые задачи, типа индексатора мультимедиафайлов на карте памяти или инсталлятора приложений. В этом случае смартфон можно избавить от редких фризов, которые могут случиться, если фоновый сервис внезапно проснется в самый неподходящий момент (так, кстати, работает Android 4.X). Один плюс один, получаем два ядра.
Третья возможность — игры. Вполне реальный способ занять все четыре, а если очень сильно постараться, то даже восемь ядер. Проблема только в том, что игр, которые это реально делают, практически нет. Правильное распараллеливание игры — нетривиальная задача, и даже на PC до сих пор остается большое количество «двухъядерных» тайтлов, которые вполне себе выдают качественную картинку и спецэффекты в виде физики и воды. Мобильный же рынок всегда вторичен для девелоперов, поэтому здесь оптимизаций для четырех ядер, а уж тем более восьми, особенно ждать не стоит.
В целом для работы смартфонам достаточно всего двух ядер: одно из них используется текущим приложением, а второе — разными сервисными задачами, которые изредка просыпаются, чтобы прошерстить карту памяти, получить данные из сети или сбросить кеш файловой системы. Куда девать остальные два или даже шесть, совершенно непонятно. Даже в случае запуска ресурсоемких задач они останутся незадействованными: видеоплееры используют кодеки GPU для декодинга, игры — одно или два ядра, а все остальные типы приложений спокойно работают на одном.
И да, даже если ты видишь в системном мониторе нагрузку на все четыре ядра, то это вовсе не значит, что они реально нужны. Это всего лишь следствие дизайна современных ОС, которые в случае занятости одного из ядер автоматически переносят задачу на другое. А самое смешное то, что зачастую процесс переноса задачи длится дольше, чем ожидание освобождения первого ядра. Хотя нет, самое смешное — что задачу придется возвращать обратно, когда ядро будет отключено в целях энергосбережения.
Хакер #180. 2014: люди, вирусы, баги, релизы
64-битные процессоры
ОK, возможно, для каких-то довольно странных задач, которые никто выполнять на смартфоне не будет, мобильные 100500-ядерные чипы и могут пригодиться, но вот зачем нужны 64-ядерные процессоры — вопрос куда более интересный. И дело тут в первую очередь в том, что аргументы, которые обосновывают наличие 64-разрядных процессоров на десктопах, нисколько не оправдывают их использование в мобильной технике.
Чтобы разобраться, вновь обратимся к рынку серверов. Придуманы 64-битные процессоры были по двум простым причинам: удвоенная разрядность позволяет эффективно работать с дробными числами высокой точности, что может пригодиться при тех же расчетах падения метеорита. Второе: 64 бита позволяют адресовать 16 экзабайт памяти, что в случае с метеоритом также очень неплохо, не говоря уже о возможности снятия барьера в 4 Гб оперативной памяти, свойственного 32-разрядным процессорам.
Понятно, что считать падение метеорита на смартфоне никто не станет, но память-то лишней никогда не бывает, мы не Биллы Гейтсы, чтобы довольствоваться 640 Кб, и даже на смартфонах хотим больше 4 Гб. И вот здесь начинается самое интересное. Дело в том, что в ARM проблема адресации больших объемов памяти была решена еще в 2011 году, когда была представлена процессорная архитектура Cortex-A15, которая легла в основу процессоров Tegra 4, Exynos 5 и OMAP5430.
В этих чипах для адресации памяти может использоваться модуль LPAE (Large Physical Address Extension), который расширяет шину до 40 бит, поднимая ограничение на объем памяти до 1 Тб. Поддержка LPAE операционной системой (а в ядре Linux она уже давно есть) позволяет последней использовать весь объем памяти, но ограничивает адресное пространство каждого процесса четырьмя гигабайтами, что плохо в случае серверов, которые требуют больших пространств для хранения промежуточных результатов и кешей, но абсолютно приемлемо на смартфоне.
В остальном 64-битные процессоры не имеют применения и скорее создают проблемы, чем решения. Например, объем приложения при компиляции для 64-битного процессора возрастает в среднем на 20%, а разработчики операционной системы при ее портировании должны будут решать массу технических проблем. И все это ради возможности расчета точки падения метеорита или перекодирования видео размером 54 Гб на смартфоне.
4K и Full HD дисплеи
Мой первый смартфон имел разрешение экрана 240 x 320 пикселей, что нисколько меня не беспокоило, пока я не попробовал в работе смартфон с 3,7-дюймовым экраном и разрешением 480 x 854. После него смотреть на собственный гаджет стало совсем противно, и я приобрел новый. Затем последовало обновление на смартфон с разрешением HD и экраном на 4,7 дюйма. Теперь меня заманивают смартфоном с Full HD экраном, говоря о его сверхчеткой передаче изображения.
Здесь действительно нет подвоха. Чем больше плотность пикселей матрицы, тем более четкую и менее зернистую картинку она может сформировать. Просто учитывать эти данные надо не в вакууме, а с расчетом на применение человеком, сетчатка глаза которого имеет собственную разрешающую способность и может воспринимать реальность до определенной глубины.
Когда Apple анонсировала iPhone 4, особый акцент был сделан именно на разрешении экрана. По сравнению с прошлой версией смартфона оно увеличилось ровно в два раза и равнялось 960 x 640 пикселей. При физических размерах экрана в 3,2 дюйма такое разрешение было выше «нормального» разрешения человеческого глаза, и, начиная с расстояния в 25 см, увидеть одиночные пиксели становилось невозможно.
Если перевести соотношение разрешения к размеру экрана в пиксели на дюйм, то разрешающая способность iPhone 4 составляла 326 PPI. По словам нейробиолога Брайана Джонса, это даже выше рекомендуемого значения и пиксели должны быть не видны уже при PPI, равном 287. Немного завысив и округлив эту цифру, мы сможем использовать ее для расчета оптимального разрешения экрана разных устройств. Так, разрешающая способность Nexus 4 с 4,7-дюймовым экраном и разрешением HD равняется 320 PPI, а этого вполне достаточно, чтобы полностью избавить картинку от зернистости.
WWW
Статья нейробиолога Брайана Джонса о том, почему разрешающая способность в 300 PPI достаточна для устранения зернистости: goo.gl/GFuu
Разрешающая способность 10-дюймового планшета с тем же разрешением HD равняется всего 160 PPI, чего явно недостаточно, и поэтому пиксели будут видны даже с расстояния в один метр. Экран новой версии Nexus 10 с разрешением 2560 х 1600 имеет разрешающую способность 300 PPI, что уже нормально. А теперь посмотрим значение PPI для 4,7-дюймового Full HD экрана. Оно равняется числу 468. Это настолько выше разрешающей способности глаза обычного человека, что говорить здесь о «более высокой четкости» просто смешно.
И ладно бы нам просто впихивали воздух. Так этот воздух еще и жрет батарею и процессор. Экран с разрешением выше в полтора-два раза требует для своего обновления в полтора-два раза больше ресурсов видеоускорителя, что в современных условиях, когда мобильные ОС обеспечивают FPS, приближающийся к 60, довольно много.
Чем больше экран — тем лучше
Вместе с разрешениями растут и размеры экранов. Четыре года назад оптимальным считался экран на 3,2 или 3,7 дюйма. Два года назад — 4,7 дюйма. Сегодня вовсю продаются смартфоны, размер экрана которых перевалил за 5 дюймов. Трудно сказать, что будет завтра, но, если тенденция продолжится, совсем скоро все мы будем ходить с планшетами вместо смартфонов.
Я не против смартфонов с большими экранами и не буду говорить о том, что это очередной маркетинговый ход. Для многих задач большие экраны подходят гораздо лучше 3,2-дюймовых, и Galaxy Note с его потрясающим сверхчувствительным стилусом тому подтверждение. Единственное, что хотелось бы уточнить, — это удобство использования, при котором 3–4 дюйма с разгромным счетом выигрывают у своих более крупных собратьев.
Изначально смартфон — это умная замена телефона, то есть девайса, предназначенного для удобного хранения и использования одной рукой. При разработке iPhone, который стал первым массовым сенсорным смартфоном, этот нюанс соблюдался неукоснительно, и путем исследований был найден оптимальный размер в 3,2 дюйма. Ровно такой экран позволял покрыть всю площадь движения большого пальца, позволяя ему без проблем дотянуться до любой точки и комфортно работать со смартфоном одной рукой.
Впоследствии примеру Apple последовали другие компании, однако, поскольку составить конкуренцию iPhone по качеству конечного продукта невозможно, они стали прибегать к разным ухищрениям: постоянно удваивать количество установленной памяти, процессорных ядер и, конечно же, увеличивать размер экрана. Как оказалось, пользователи с радостью шли на удочку и вскоре начали сами требовать все больших размеров дисплея.
Привело все это в конечном итоге к тому, что iPhone остался там, где и был, и почти не потерял пользователей, а вот найти современный топовый смартфон на Android с экраном на 3,7 дюйма уже практически невозможно. Вместо этого нам предлагают «классические» размеры в 4,7 дюйма, а как вариант уменьшения размера используют уловку с уменьшением площади между краем смартфона и экраном.
Последняя, в частности, приводит к тому, что, если попробовать использовать смартфон с большим экраном одной рукой, ты постоянно будешь нажимать ладонью левую нижнюю область, в которой могут находиться и кнопки, и другие элементы управления. Любой пользователь Nexus 4 это подтвердит, как и то, что после него смартфон с меньшим размером экрана оказывается куда более удобным (главное, не лгать самому себе и не оправдывать неудобства).
По сути, большие экраны превратили смартфон в карманный компьютер, больше напоминающий планшет, и убили всю его суть и привлекательность. В самом этом факте нет ничего плохого, вот только для тех, кому нужен «просто смартфон», уже практически не осталось выбора. Небольшие экраны сегодня устанавливают только в iPhone и бюджетные смартфоны других производителей.
INFO
На самом деле я немного слукавил, когда писал о самых наглых продавцах воздуха. Наибольшее зло — это не большие компании, а маленькие китайские фабрики, которые делают защитные пленочки для экранов.
20-мегапиксельная камера
В начале 2012 года Nokia представила смартфон 808 PureView, оснащенный 41-мегапиксельной камерой, которая якобы должна была вывести качество мобильных фотографий на совершенно новый уровень. Однако в результате смартфон не только не стал прорывом, но и, наоборот, окончательно доказал несостоятельность идеи «чем больше мегапикселей — тем лучше» и был высмеян профессиональными фотографами.
Почему это произошло и почему идея наращивания количества мегапикселей несостоятельна? Профессионалу такой вопрос покажется смешным, однако для тех, кто этой камерой фотографирует только египетские пирамиды и заснеженные деревья для инстаграма, он вполне закономерен. Так вот, главное — принцип работы камеры, в которой сенсор зачастую не самая важная вещь.
Два основных компонента камеры мобильного телефона — это миниатюрная CMOS-матрица и линза, установленная перед ней. Задача линзы — преломить свет и правильно направить на матрицу, задача матрицы — уловить свет, преобразовать в электрические сигналы, которые затем будут преобразованы в цифровое изображение специальным DSP-чипом. Качество снимка при этом зависит от слаженной работы всех трех компонентов: линзане должна искажать световой поток слишком сильно, ячейки матрицы должны быть достаточно чувствительными, чтобы при своей миниатюрности улавливать даже небольшие потоки фотонов, а DSP-процессор должен производить качественную постобработку.
И вот здесь начинается самое интересное. Дело в том, что чувствительность матрицы в целом зависит от чувствительности каждой из ее ячеек (пикселей), которая при уменьшении размера (наращивании количества мегапикселей) становится ниже, а требования к качеству линзы резко возрастают, так как теперь она должна более точно направлять световой поток.
Эта особенность в конечном итоге приводит к тому, что на определенном этапе наращивания количества ячеек в матрице (с 8 до 20 мегапикселей, например) конечное качество снимков в итоге почти не возрастает, так как в условиях миниатюрных размеров матрицы создать качественную линзу, способную без искажений направить свет в каждую из ее ячеек, чрезвычайно трудно. Конечная стоимость такой линзы будет больше стоимости самого смартфона, и даже в этом случае она не сможет обеспечить качество, сравнимое с зеркальными фотоаппаратами.
Из всего этого, конечно, не следует, что в смартфоны нужно устанавливать камеры на 0,3 мегапикселя, значение имеет также разрешение конечного изображения, которое должно быть достаточным для того, чтобы снимок можно было распечатать при разрешающей способности принтера в 300 DPI. И здесь 8-мегапиксельной камеры будет вполне достаточно, чтобы сделать снимок размером 20,32 x 25,4 см. Не думаю, что кому-то реально понадобится больше.
Как резюме: качество снимков зависит вовсе не от пикселей, а от той самой линзы и качества матрицы, на что и нужно обращать внимание при выборе смартфона.
Наиболее правильный смартфон с точки зрения здравого смысла — это Moto X, который был выпущен во времена четырехъядерных монстров типа Snapdragon 800, но был основан на двухъядерном чипе и снабжен двумя низкопроизводительными DSP-процессорами для обработки голосовых команд во время сна и «активных уведомлений».
Выводы
Подводя итог, хочу сказать: не стоит винить большие компании в том, что происходит с мобильном рынком. Их задача — удовлетворять спрос, а формируем его мы сами. Именно мы ждем от восьмиядерных процессоров заоблачной производительности, мы верим в суперчеткость Full HD дисплеев, мы используем планшеты вместо смартфонов и пытаемся компенсировать свое неумение фотографировать с помощью 20-мегапиксельных камер.