Intel для разработчиков Android*, учебная серия - мобильные процессоры Intel

needs_review

1.   Процессоры семейства Medfield

Процессор Intel® Atom™ Z2610 (кодовое название — Medfield), показанный на рис. 1, представляет собой платформу, предназначенную для смартфонов с операционной системой Android. Семейство Medfield разделено на два комплекса — «северный» и «южный». «Северный» комплекс состоит из одноядерного процессора с кодовым названием Saltwell, 32-разрядного двухканального контроллера памяти LPDDR2, трехмерного графического ядра, систем кодирования и декодирования видео, двухмерного графического контроллера, поддерживающего до трех дисплеев и обработчика изображений для получения изображений с камеры. «Южный» комплекс процессора Intel Atom Z2610 содержит все необходимые для смартфона интерфейсы ввода-вывода: механизм безопасности, контроллер хранения данных, поддерживающий карты памяти SD/eMMC, USB-контроллер OTG, сотовый модем 3G, дополнительные интерфейсы беспроводного подключения (CWS), последовательный периферийный интерфейс SPI и универсальный асинхронный интерфейс приема-передачи UART.

Рисунок 1. Блок-схема процессора Medfield

1.1.    Общее устройство процессора Saltwell

Архитектура процессора Saltwell довольно проста. Основная идея, заложенная в этот процессор, заключалась в достижении баланса между производительностью и эффективным потреблением электроэнергии. Процессор использует архитектуру с выполнением инструкций по порядку. Объем кэша первого уровня составляет 64 КБ, а кэша второго уровня — 512 КБ. Поддерживается технология Intel® Burst Performance, позволяющая динамически изменять тактовую частоту процессора. Процессоры Saltwell поддерживают три частотных режима: режим низкой частоты (LFM) — 600 МГц, режим высокой частоты (HFM) — 900 МГц, а также режим пиковой частоты (BFM) — 1,6 ГГц. Процессоры Saltwell поддерживают ряд функций по увеличению энергоэффективности, в том числе кэш 2-го уровня со сверхнизким потреблением: этот кэш служит для хранения данных, пока ЦП находится в состояниях C6, чтобы снизить задержки при возобновлении C состояний. Кроме того, предусмотрены различные механизмы управления питанием и частоты для ярда и остальной части микросхемы, что позволяет с легкостью управлять питанием и частотой с помощью технологии Intel® SIT. Эта технология позволяет полностью отключать ЦП, пока остальные компоненты микросхемы по-прежнему находятся во включенном состоянии (S0).

2.    Различия архитектуры процессоров Saltwell и ARM (Cortex A15)

Как сказано в книге «Break Away with Intel® Atom™ Processors: A guide to Architecture Migration», архитектура процессоров Intel Atom существенно отличается от архитектуры ARM. В таблице 1 показаны основные различия между архитектурами Saltwell и ARM Cortex.

 

Saltwell

ARM Cortex

Технология

32 нм

28 нм

Архитектура

Выполнение инструкций по порядку

Внечередное исполнение инструкций

Число ступеней конвейера

16

15

Кэш 1-го уровня

64 Кб

Настраиваемый, до 64 Кб

Кэш 2-го уровня

512 Кб

До 4 Мб

Набор инструкций

IA32, Intel® Streaming SIMD Extensions, Intel® Supplemental Streaming SIMD Extensions 3

ARM, Thumb

Поддержка многоядерности/многопоточности

Одно ядро Intel® с технологией Hyper-Threading

Несколько ядер

Технология безопасности

Intel® Smart & Secure Technology (Intel® S&ST)

TrustZone*

Таблица 1. Общие различия архитектур Saltwell и ARM (Cortex A15)

2.1.1.  Архитектура

Как уже было сказано, архитектура процессоров Saltwell схожа с архитектурой других процессоров семейства Intel Atom. Используется архитектура с упорядо-ченной обработкой инструкций. В процессорах с выполнением инструкций по порядку все инструкции выполняются в том порядке, в котором они принимаются; в процессорах с внеочередной обработкой можно выполнять несколько инструкций одновременно и затем перестраивать их порядок в конвейере. Процессоры ARM построены на основе архитектуры с внеочередным исполнением. Одно из преимуществ этой архитектуры заключается в возможности выполнения инструкций с минимальными задержками. Но при этом возрастает сложность устройства ядра. Исключение логики, занимающейся перестройкой порядка инструкций в конвейере, позволило снизить потребление энергии процессорами Intel Atom.

2.1.2.  Целочисленный конвейер

В процессорах Intel Atom используется конвейер, состоящий из 6 ступеней. Подробные сведения см. в таблице 2.

Этап

Ступени конвейера

Получение инструкции

3

Декодирование инструкции

3

Выдача инструкции

3

Доступ к данным

3

Выполнение

1

Запись

3

Таблица 2. Этапы обработки инструкций и ступени конвейера в процессорах Intel® Atom™.

Общее количество целочисленных ступеней конвейера в процессоре Intel Atom составляет, таким образом, 16. Три дополнительные ступени требуются для выполнения инструкций с плавающей запятой. Самые современные процессорры ARM имеют 15 целочисленных ступеней конвейера. Конвейер в процессоре ARM обладает более высокой производительностью, но меньшей энергоэффективностью. Процессор Saltwell может декодировать до 2 инструкций за такт, тогда как в самых современных процессорах ARM применяется суперскалярная архитектура с возможностью одновременного выполнения 3 инструкций.

2.1.3.  Наборы инструкций

Наборы инструкций ARM всегда 32-разрядные и выравниваются по 4-байтовой границе; наборы инструкций IA32 могут иметь разный размер и не требуют выравнивания. Еще одно различие между ARM и IA32 заключается в том, как именно выполняются инструкции. В ARM ко всем инструкциям применяется условное выполнение, чтобы снизить издержки при обработке ветвлений и вероятность неверных предсказаний при ветвлении. Существуют флаги условий, которым должна удовлетворять каждая инструкция для выполнения; в противном случае инструкция помечается как NOP и исключается. В архитектуре Intel также существуют условные инструкции (так называемые «условные MOV-инструкции»). Все прочие инструкции архитектуры IA32 не поддерживают условное выполнение.

2.1.4.  Поддержка мультиядерности/мультипоточности

Как отмечено выше, процессоры Saltwell поддерживают технологию мультипоточности Intel® Hyper-Threading (Intel HT), где задачи выполняются с использованием общих ресурсов. Более подробное описание этой технологии приводится в следующем разделе. В многоядерной архитектуре ARM каждое ядро использует собственные ресурсы для выполнения задач. Согласованностью работы ядер управляет AMBA 4 AXI* — интерфейс, связанный с ядром напрямую.

2.1.5.  Технологии безопасности

В процессорах Medfield используется подсистема безопасности Intel S&ST, представляющая собой полнофункциональную программно-аппаратную архитектуру. Эта подсистема совместима с отраслевыми стандартами, она поддерживает AES, DES, 3DES, RSA, ECC, SHA-1/2 и цифровое управление правами. Также поддерживаются 1000-разрядные однократные пароли и безопасная загрузка. В процессоре ARM система безопасности реализована иначе. Там нет отдельного контроллера подсистемы безопасности, как в решении Intel. В процессорах ARM применяется технология TrustZone, при использовании которой ресурсы системы, такие как процессорное время и память, разделяются на две области: обычную область и безопасную область. Эта архитектура построена на трех следующих основных принципах. 1. Предоставить платформу безопасности, дающую возможность разработчикам настраивать необходимые функции в зависимости от предполагаемых сценариев использования. 2. Сэкономить использованные ресурсы микросхемы и энергию в случаях, когда для безопасных задач не требуется выделенный процессор. 3. Предотвратить вторжение во время отладки в защищенные задачи в безопасной области и в незащищенные задачи в обычной области путем реализации единого компонента отладки.

3.    Технология мультипоточности Intel® Hyper-Threading Technology

Технология мультипоточности Intel® Hyper-Threading Technology позволяет программам работать с одним физическим процессором как несколькими логическими. В процессорах Saltwell мульти¬поточность применяется для повышения производительности. Благодаря наличию второго потока в процессоре с выполнением инструкций по порядку образуется возможность выполнять несколько инструкций за один тактовый цикл, распределяя ресурсы между двумя потоками. При этом производительность — по сравнению с однопоточным процессором возрастает на 50 %, как показано на рис. 2.Рисунок 2: Преимущества технологии Intel® Hyper-Threading Technology.

При использовании мультипоточности процессор имеет дублирующиеся копии архитектуры, включающие регистры общего назначения, контрольные регистры, регистры программируемого контроллера прерываний APIC, а также регистры состояния компьютера1. Именно дублирование архитектуры дает возможность программам работать с одноядерным процессором как с двумя логическими процессорами. Кэш, блоки выполнения, блоки предсказания, логика управления и шины — все эти ресурсы совместно используются двумя потоками. При этом существует вероятность нехватки ресурсов и несбалансированности нагрузки между потоками. Впрочем, большинство современных наборов разработки, такие как Dalvik и JavaScript, уже обладают поддержкой многопоточных сред, что позволяет разработчикам без особого труда создавать приложения, способные воспользоваться преимуществами гиперпоточности. Разработчики приложений для Android также могут использовать программу Intel® VTune Performance Tool для анализа нагрузки и использования ресурсов в своих приложениях.

4.    Совместимость приложений. Native Development Kit и двоичный транслятор

Система Android портирована на платформу x86, и все ее дальнейшие версии будут выпускаться как для x86, так и для ARM. Таким образом, запуск ОС на платформе Intel Atom не представляет затруднений. Но в некоторых случаях может потребоваться повторная компиляция существующих приложений Android как с изменением исходного кода, так и без его изменений.

Рисунок 3. Платформа Android

Следует полагать, что приблизительно 75–80 % (это часто указываемое значение) приложений в магазине Google Play работают с помощью виртуальной машины Dalvik и используют платформу Android (см. рис. 3). В большинстве случаев приложения ВМ Dalvik написаны на языке Java с помощью набора Android SDK и работают на любых процессорах. В частности, на платформе Intel Atom такие приложения работают без необходимости внесения каких-либо изменений или портирования. Если же приложения содержат код C или C++, разработчикам потребуется перекомпилировать код с помощью последней версии набора Android Native Development Kit (NDK).[1]

В большинстве случаев достаточно просто заново скомпилировать проект, поддерживающий платформы x86 (x86), ARMv5 (armeabi) и ARMv7 (armeabi-v7a). Компиляция для платформы x86 (в GCC с флагами компилятора «-march=i686 –msse3 –mstackrealign –mfpmath=sse»)[2] создаст код, рассчитанный в точности на функциональность процессоров Intel Atom. Переписывать исходный код (с последующей перекомпиляцией) потребуется только для приложений, использующих определенные возможности конкретных процессоров ARM.

Итоговый пакет приложения APK может включать три версии машинных кодов для архитектур x86, ARMv5 и ARMv7. В процессе установки распаковывается и устанавливается на целевую платформу только подходящая версия кода.

Остальные приложения представляют собой либо приложения ВМ Dalvik, использующие библиотеки JNI, созданные для ARM, либо приложения Native Development Kit (NDK), которые не были скомпилированы для платформы x86. Такие приложения раньше нельзя было запускать на платформе Intel Atom из за вызовов встроенных библиотек (особенно для определенных версий ARM).

Корпорации Intel и Google вместе создали способ, гарантирующий запуск таких приложений на платформе Intel Atom «как есть», без портирования. Корпорация Intel предоставляет двоичный преобразователь (BT), преобразующий код ARM в код x86 «на лету» во время выполнения, как показано на рис. 4. Это решение позволяет запускать приложения, использующие библиотеки JNI, и приложения NDK, которые не были портированы на платформу x86. При этом устройство доступно для программ как поддерживающее два двоичных интерфейса приложений (ABI): x86 и ARMv5. Это можно наблюдать в build.prop следующим образом:

ro.product.cpu.abi=x86

...
ro.product.cpu.abi2=armeabi

Рисунок 4. Двоичная трансляция

Если приложения NDK не были заново собраны для платформы x86, то двоичный преобразователь преобразует версию armeabi в x86. Это же касается и приложений ВМ Dalvik, запрашивающих библиотеки JNI на базе ARM. Преобразованный процесс оптимизирован и полностью прозрачен для конечных пользователей.

Благодаря сочетанию всех этих усилий обеспечивается работа приблизительно 90 % приложений в магазине Google Play без какой-либо доработки.

 



[1] Дополнительные сведения для разработчиков о портировании приложений на платформу Intel Atom см. по адресу http://software.intel.com/ru-ru/android

[2] Флаги компилятора указаны в документации NDK на странице  “ndk/docs/CPU-ARCH-ABIS.html” page.

Reportez-vous à notre Notice d'optimisation pour plus d'informations sur les choix et l'optimisation des performances dans les produits logiciels Intel.