Два волнующих вопроса

Здравствуйте, коллеги! Прошу прощения, что в новом году промолчал чуть дольше, чем хотелось бы. Просто после выставки CES, откуда я написал два больших поста в блог Intel на Хабре, меня сначала помотало по разного рода СМИ, требовавшим рассказать им о самых-самых интересных новинках, продемонстрированных в Вегасе, а потом пришло время писать отчет для основного места работы. Так за заботами месяц и прошел. Но вот с наступлением февраля у меня есть два серьезных вопроса и одно маленькое сообщение.

Вы, наверное, лучше меня знаете, что на CES показали два смартфона на Intel Atom. Первый – reference-дизайн от самой Intel, а второй – практически серийный аппарат Lenovo. Оба работают на Android, но если на Lenovo он был какой-то странный, очень китайский, то на референсном экземпляре вполне обычный, 2.3.7. Так получилось, что в первый день выставки я попал внутрь раньше основного потока посетителей, и тут же ринулся на стенд Intel, где все были еще добрыми и сонными. Воспользовавшись этим, схватил «гуглофон» и начал ставить приложения. Попробовал Angry Birds Rio – работает! Поставил программку Bogr, позволяющую гуртом скачивать всякие истории с bash.org.ru и тому подобных ресурсов – работает! Ну, тут уж «прибежали санитары и зафиксировали нас». И все же у меня осталось полное впечатление не какой-то чуды-юды выставочной, а нормального гуглофона – быстрого, тонкого, с отличным экраном. Обычного такого – в хорошем смысле этого слова.

А еще на CES потихоньку показывали, как очень предварительная версия Windows 8 работает на процессорах ARM. Или, правильнее сказать, запускается, потому что привычные приложения там пока не функционируют.

Между тем, в кулуарах идет жаркая словесная свара. «Ага!», - говорят одни, - «Еще немного, и все с х86 рванут на ARM, даже компьютеры!». «Эгегей!», - вторят им другие, - «Даже если Atom действительно так хорош аппаратно, переделывание приложений для него – слишком большая проблема, и никто этим заниматься не станет!».

И вот какие два вопроса у меня возникли:

1) Что именно придется проделать, чтобы приложение для Android заработало на смартфоне/планшете с x86? Чем подробнее будет ответ, тем лучше. Мне он нужен буквально для заучивания наизусть.

2) Насколько сложно будет портировать Windows на ARM не саму по себе, а целиком, со всеми приложениями? В чем главная загвоздка?

И маленькое сообщение. С 1 февраля я начинаю работать главным редактором «Мира ПК», старейшего IT-журнала на русском языке. Параллельно буду отвечать за молодой сайт DGL.ru, который планирую вскоре довести до состояния матерого. Так что год начинается действительно интересно – во всех смыслах :)
Пожалуйста, обратитесь к странице Уведомление об оптимизации для более подробной информации относительно производительности и оптимизации в программных продуктах компании Intel.

Комментарии

Аватар пользователя Sergey Melnikov (Intel)

О первом вопросе: если приложение написано на чистой яве - все должно работать и так. Если используются нативные JNI библиотеки - нужно будет их перекомпилировать (о частоте использования сказать не могу, но, думаю - нечасто).
На счет второго вопроса: учитывая, что WinNT проектировалась не для x86, то задача обозримая (хоть и большая). Занятно, в структурах потока, доступных программисту, явно фигурируют значения регистров (структура CONTEXT) (Рихтер говорит, что сруктура определена по-разному для различных аппаратных платформ). Встает вопрос, насколько часто в исходном коде Windows используются процессоро-специфичные фишки в местах, для этого не предназначенных.
P.S. Поздравляю))

Аватар пользователя victoria-zhislina (Intel)

Некоторые подробности к ответу smel (ответ, кстати, отличный, спасибо) на первый вопрос, я собираюсь выложить в посте для английского ISN. Как только сделаю, помещу сюда ссылку.
Дополнение по второму вопросу. Проблемы типа "переписать вместо перекомпилировать" будут если приложение использует ассемблерные вставки для скорости (встречается нечасто) либо simd -sse-mmx интринсики =с-функции, реализующие simd в компиляторе (встречается очень часто). Проблемы с производительностью, скорее всего, будут при использовании Float, с многопоточностью, да и еще в куче случаев. А тормозящее приложение под ARM мало кого устроит.

Аватар пользователя Sergey Melnikov (Intel)

Victoria Zhislina, не совсем согласен на счет частоты встречаемости интринсиков. Сколько программировал на работе (не слишком performance-critical: не игры, математика, и подобное), не разу не спускался до уровня интринсиков. Обычно тормоза после профилера находятся в собственном коде либо во вне (например, в запросах к СУБД или записи на винт).
Еще интересный вопрос: инструкции ARM достаточно простые (собственно, RISC), в отличии от многих современных в x86. Как будет соотноситься быстродействие Windows на ARM по отношению к x86. Видимо, необходимо будет провести большую работу по освобождению ЦП от работы, которую можно выполнить на интегрированных специфичеких ядрах (типа декодирования видео).

Аватар пользователя Dmitry Oganezov (Intel)

http://habrahabr.ru/blogs/android_development/137292/

Аватар пользователя Sergey Melnikov (Intel)

Больше всего вопросов возникает про транслятор: "Смысл работы транслятора простой — он интерпретирует ARM код в x86 код, что обеспечивает совместимость приложений с новой архитектурой". Насколько быстро он работает (а если медленно - есть ли в нем смысл) или работает по типу JIT...
Помнится, на КПК Palm была такая же особенность: после перехода на ARM процессоры, они сделали бинарный транслятор в ARM из m68k.

Аватар пользователя vilianov

Гм. У меня ощущение, что браузер Opera меня немного обманывает. Уже два раза отвечал в тему, а тут - ничего.

Большое спасибо за ответы. Помню, один мужчина, взяв меня за пуговку, спросил - "Windows на ARM - это чудесно, но как они сделают эмуляцию SSE?"

А вообще, пожалуй, надо при следующей волне изменений в жизнь найти в себе силы и уйти в программисты. Ну просто чтобы понимать все, о чем вы говорите :)

Аватар пользователя dmitry-nikitin

Этот мужчина наверно хотел сделать умное лицо. Не понимаю, в чём проблема сделать эмуляцию SSE. В SSE например 4 операции производятся одновременно, а в эмуляторе они будут выполняться последовательно. Делов-то...

Аватар пользователя vilianov

А это не будет немного, гм, медленнее?

Аватар пользователя dmitry-nikitin

А вы хотели, чтобы эмуляция работала быстрее? На то она и эмуляция.
К тому ж доля приложений, интенсивно использующих SSE стремится к нулю.