Почему Android-телефоны имеют больше ядер, чем компьютеры?

Ноутбуки обычно имеют не более четырех ядер, и, возможно, более часто встречаются двойные линии. Я недавно переключился с quadcore на dualcore, и я могу подтвердить, что ограниченное количество usecases для quadcore, даже с интенсивными задачами CPU.

С другой стороны, на мобильных телефонах, quadcores, гексакоры и октакоры кажутся обычными. Зачем? Какие задачи могут их использовать?

Я понимаю, что big.LITTLE может быть частью ответа. То есть основным преимуществом столь многих ядер является не возможность одновременного использования всех из них, а использование ядра с потреблением энергии, подходящим для текущей рабочей нагрузки. Однако, например, Snapdragon 625 имеет восемь ядер Cortex-A53, что, похоже, не имеет большого значения. LITTLE.

Возможно, архитектура ARM имеет более низкую точку оптимальной производительности на ватт. То есть, наличие одного ядра, настроенного для оптимальной производительности на ватт, приводит к снижению производительности на ARM, чем к Intel. Таким образом, для обеспечения производительности используются больше ядер. Это всего лишь гипотеза.

Но даже в этом случае я не вижу, какая рабочая нагрузка может эффективно использовать, скажем, восемь ядер на мобильном телефоне. На ноутбуках я могу представить себе несколько таких, как полная (неинкрементальная) компиляция проекта. Но на телефонах?

  • Игры могут быть голодными, но для них обычно требуется производительность GPU, а не процессор, не так ли?
  • Теоретически, несколько ядер могут ускорить компиляцию AOL Lollipop /Marshmallow AOT при установке или при обновлении (т. е. в фазе «Оптимизация приложений 3/121»). Я, однако, не уверен, что это может использовать несколько ядер. Насколько я помню код, за один раз компилируется только одно приложение, но, возможно, в самом процессе компиляции есть некоторый параллелизм.
  • Кроме того, Android 7+ может использовать несколько ядер при компиляции. Но, поскольку он, как сообщается, компилируется при простоя и зарядке, преимущество кажется довольно минимальным. По крайней мере, когда один заряжает телефон в течение ночи - мне действительно все равно, если это займет 30 минут или два часа в таком сценарии.
76 голосов | спросил v6ak 11 J0000006Europe/Moscow 2017, 12:54:12

7 ответов


58

Как вы уже отметили, комбинация big.LITTLE стратегия (технически, HMP , гетерогенные многокомпонентные кластеры ) является основной причиной для стольких (а иногда и многих других) ядер. Мобильное устройство часто работает в нескольких сценариях, включая и тяжелую нагрузку, и легкую нагрузку.

Крайним примером потребительского класса является Helio X20 от MediaTek, в котором есть 2 высокопроизводительных ядра A72, 4 сбалансированных ядра A53 и 4 энергосберегающих ядра A35. Это очень гибко во всех случаях использования. Однако, я думаю, обычно 8 ядер 2 кластера.

Также есть еще один настольный пример: Snapdragon 800 от Qualcomm (S 800, S 801 и S 805). В каждом SoC есть только 4 ядра той же микроархитектуры, с 2 тактами выше и 2 тактами ниже. Qualcomm сделали эти SoCs, потому что они были очень уверены в своей собственной микроархитектуре (Krait 400 и Krait 450).

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

Вторая причина - , как Android использует ресурсы процессора . Android в значительной степени делает свою собственную среду приложений. Он использует ничего, кроме кодов (и API) от Java, но у него есть собственная виртуальная машина Dalvik, которая позже была заменена ART (API Level 21). У APK есть свои исполняемые коды в «нейтральном» формате, похожие на .class файлы на Java. Прежде чем они будут запущены, коды снова скомпилируются в собственные инструкции устройства [1] . Процесс компиляции является многопоточным и может использовать многоядерные процессоры для повышения производительности.
И когда приложение работает, есть несколько других процессов и механиков (например, сборщик мусора), которые работают рядом или параллельно с приложением. Другие ядра могут позволить эффективные процессы поддержки, а также основное приложение.
1. Если вы используете идентификатор типа файла, вы обнаружите, что «оптимизированные» файлы dex находятся в формате ELF, а «нейтральные» файлы dex находятся только в своем собственном формате.

Другая меньшая причина заключается в том, что ядра ARM не могут работать так же быстро, как чип Intel x86 . Микроархитектура Intel x86 может быть датирована 1976 годом, когда началось создание чипа Intel 8086 , что означает, что x86 развивается в течение длительного времени. Одно современное высокопроизводительное ядро ​​ARM Cortex-A73 обладает такой же мощью, как и ядро ​​Intel Clarkdale, принимая Core i5-660 в качестве примера (GeekBench, одноядерный). Это связано с тем, что x86 представляет собой микроархитектуру CISC , а ARM - это микросхема RISC . Вы, конечно же, не хотите, чтобы телефон становился неактивным только с двумя или более активными приложениями. Больше сердечников поможет уменьшить давление. Вот почему двухъядерные SoCs относительно популярны только на смарт-часах. Кому нужна производительность на смарт-часах?

Интересно, что больше ядер приведет к меньшей мощности, чем одно ядро ​​при одной и той же нагрузке . Связь между частотой процессора и потребляемой мощностью более чем линейной, поэтому в два раза частота всегда будет требовать более чем вдвое или даже на 3x или 4 раза больше мощности, при этом производительность менее чем в два раза превышает производительность (из-за других ограничений ресурсов, таких как кеш ). Таким образом, 4 ядра могут легко бить одно ядро ​​при одной и той же нагрузке, обеспечивая лучшую производительность и одновременно требуя меньшей мощности.

Дальнейшее чтение:

ответил iBug 11 J0000006Europe/Moscow 2017, 13:51:16
15

Причина настолько же проста, насколько сложно.

Короткий ответ - «потому что рынок мобильных телефонов никогда не был и не управляется Intel».

Длительный ответ слишком длинный, чтобы возобновиться здесь, но основная идея заключается в том, что Intel доминирует на рынке ПК в течение многих лет всеми возможными способами, вплоть до выплаты и разложения (и штрафа за это) за то, что он ЦП являются первым и единственным выбором для производителей ПК.

Наличие полного контроля над рынком позволило Intel раздувать цены на ЦП, искусственно определяя, какие функции и сколько вычислительной мощности пользователи должны были хотеть, и если вы проанализируете немного истории Intel, вы заметите, что ее основная сила в основном в увеличении частоты процессоров, поэтому он в основном никогда не пытался делать что-то действительно умное или инновационное; и он не нуждался в этом, потому что он может просто сказать людям: «вам не нужны больше ядер, но у меня есть такие сочные новые процессоры, которые работают на частоте 100 МГц». В то же время он мог бы продавать многоядерные процессоры на рынке серверов по нелепо высоким ценам (потому что серверы всегда нуждаются в тоннах параллельной мощности, до такой степени, что существует текущая тенденция в попытке реализовать серверы, которые используют ... угадайте, что? Сотни ваших дешевых телефонных процессоров работают параллельно)

Это, в свою очередь, отразилось на сообществе разработчиков, которое никогда не сталкивалось с важностью параллельного программирования, поэтому многие, если не большинство из них, никогда не беспокоились об использовании более одного потока во времени - или, чтобы выразить это в нетехническом виде, имея в свое время программное обеспечение для выполнения нескольких задач. Что, кстати, имеет смысл, когда 99% базы ваших клиентов имеют два ядра при макс. К сожалению, это привело к легенде о том, что параллельные алгоритмы действительно трудно реализовать и применимы только к небольшому подмножеству проблем.

Вместо этого, наконец, рынок мобильной связи никогда не видел успеха Intel; наоборот, фактически, поскольку это происходит большую часть времени, когда Intel пытается сделать что-то отличное от обычной архитектуры X86. Таким образом, отсутствие влияния и контроля на рынке, другие производители процессоров пошли в направлении, которое было нормальным для возрастов вне рынка ПК: параллельные вычисления.

ответил motoDrizzt 11 J0000006Europe/Moscow 2017, 21:10:24
9

Существует два фактора: один очень практичный и другой исторический.

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

Другая причина в значительной степени историческая. До 2005 года настольные процессоры были единственными ядрами. Улучшение производительности настольных процессоров состояло почти исключительно в создании ядра, которое может выполнять как можно больше инструкций в секунду. Даже сегодня настольное программное обеспечение не может в полной мере использовать преимущества нескольких ядер, которые многие предпочли бы процессор с 4 ядрами по 8-ядерному процессору с ядрами на 20% медленнее.

Получение как можно большего количества производительности из одного ядра потребует огромного количества недвижимости ЦП. Это недвижимость, которая в противном случае могла бы использоваться для обеспечения большего количества ядер. Вот почему новейшие процессоры Intel Kaby Lake максимальны на 4 ядрах, и люди покупают их, потому что каждое ядро ​​быстрее, чем ядра своего предшественника. Для многих это обновление даже от процессоров с более высоким коэффициентом ядра.

Со временем ожидайте увидеть гораздо больше настольного программного обеспечения, полностью оптимизированного для поддержки большего количества ядер. В этом случае инженерные компромиссы начнут отдавать предпочтение большему количеству ядер на более быстрых ядрах на настольных компьютерах. В то время как ядра почти наверняка все еще будут быстрее, вы начнете видеть, как люди предпочитают 8-ядерный процессор по 4-ядерному процессору, даже если каждое ядро ​​на 20% медленнее. Дизайнеры чипов будут следовать за рынком.

ответил David Schwartz 11 J0000006Europe/Moscow 2017, 21:44:32
5

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

Источник: курс компьютерной архитектуры на уровне выпускников.

ответил Tara Eicher 12 J0000006Europe/Moscow 2017, 06:28:59
2

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

Во-вторых, в фоновом режиме на вашем телефоне происходит много вещей: автоматические обновления, загрузка объявлений, антивирусное программное обеспечение, управление модулем GSM и т. д. На ноутбуке все эти задачи едва ли удержутся от одного ядра, но Ядра ARM намного менее мощны, поэтому вы можете захотеть иметь хотя бы пару из них, посвященных фоновым задачам, если вы хотите реагировать на систему.

Наконец, есть маркетинг. Немногие пользователи могут оценить, выиграют ли они от 8 ядер, но 8-ядерный смартфон, безусловно, звучит дороже, чем 2 или 4 ядра.

ответил Dmitry Grigoryev 13 J0000006Europe/Moscow 2017, 13:26:40
1

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

Дизайнеры Android сделали огромную авантюру, решив выбрать Java-программирование и, как следствие, JVM в качестве среды выполнения приложений. Java, благодаря своим принципам проектирования, решает проблему необходимости компиляции и сборки кода для каждой архитектуры ЦП до того, как его можно будет запустить, жертвуя производительностью. Java представляет супертяжелую и громоздкую виртуальную машину, обычно называемую JVM. JVM фактически эмулирует процессор на программном уровне, чтобы избежать необходимости компилировать код отдельно для каждого устройства. Подумайте о JVM как о виртуальном процессоре, который обладает теми же свойствами, независимо от того, работает ли это устройство, поэтому код нужно только компилировать один раз для JVM и затем запускать на каждом устройстве. Это позволяет производителям бросать любое оборудование, которое им нужно, прежде чем беспокоиться о совместимости приложений. Это также позволяет устройствам заполнять рынок как дрянными недорогими устройствами, так и высококачественными высококачественными и в конечном итоге доминировать над ним.

Сам JVM - это просто спецификация, и люди могут развить свою собственную JVM до тех пор, пока она придерживается этой спецификации. Оригинальный андроид JVM назывался Dalvik. В настоящее время Google заменил это на ART.

В чем проблема с JVM? Это тяжелая часть программного обеспечения, которая потребляет множество вычислительных ресурсов. Добавьте к этому некоторые другие свойства языка Java, такие как Garbage Collection и потребление ресурсов JVM, просто становятся слишком много для устройства со скромной аппаратной мощностью. Каждое приложение и системная служба, открытые на вашем устройстве, являются экземпляром ART JVM, и теперь вы можете сделать вывод, что для управления ими все требуется какое-то действительно работоспособное оборудование. Вещь будет еще хуже, когда возникнет необходимость в рисовании пользовательских интерфейсов.

Каждое приложение работает на нескольких потоках. Каждое ядро ​​ЦП может запускать только один поток за раз. Каждое приложение имеет один основной поток, на котором он делает материал, связанный с пользовательским интерфейсом. В приложении может быть много потоков для доступа к файлам, сети и т. Д. Как правило, больше приложений (и системных служб) открываются, чем есть ядра ЦП, и, как результат, обычно существует гораздо больше потоков, чем есть ядра ЦП. Поэтому каждый ядро ​​должен постоянно переключаться между обработкой различных потоков, делая немного каждого из них и переходя к следующему. Это переключение занимает много времени для CPU, и в случае, когда приложения являются, по существу, JVM, эта задача становится еще более исчерпывающей. Увеличивая количество ядер, вы просто сокращаете количество приложений (и, следовательно, потоков), каждое из которых должно беспокоиться и что увеличивает общую производительность.

Основываясь на этом объяснении, можно предположить, что для Android требуется мощное оборудование для бесперебойной работы. Ранние поколения устройств Android были известны отставанием, грохотом и многими другими неудачными вещами. Но на протяжении многих лет эти проблемы в основном решались, полагаясь на мощное оборудование.

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

ответил DarthPaghius 13 J0000006Europe/Moscow 2017, 10:02:29
0

Возобновление всего выше, я могу сказать, что случаи использования ПК и телефона совсем разные. ПК, в большинстве случаев используемый в одном или нескольких приложениях (конечно, браузер с кучей вкладок требует много ядер процессора, может отставать даже на вершине i-3), телефоны, используемые для многозадачности. По крайней мере, сетевое подключение, рисование пользовательского интерфейса, системные триггеры, уведомления. Если вы открываете диспетчер задач на ПК, есть много процессов, но они используют менее нескольких% мощности процессора даже на старом духе Core 2. 4 ядра довольно дешевы (MTK 65x2 стоил 1 $ при запуске для OEM). Это также RISK против CISC, когда последний недостаток производительности на ядро. Энергоэффективность! = Мощный, как мы видим здесь . Многоядерные процессоры идеально подходят для мобильных устройств, потому что нет серьезной тяжелой нагрузки на один протектор и многоцелевого целевого опыта (но мы можем видеть, что для iPhone требуется меньше ядер и оперативной памяти из-за хорошего программного обеспечения как в этом видео или другие )

ответил Flippy 14 J0000006Europe/Moscow 2017, 17:06:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132