Интернет Таблетка Nokia 770 - впечатления

КПК с Linux, установка Linux на iPaq и другие модели, программы
Siarhei Siamashka
Студент (1 lvl)
Сообщения: 47
Зарегистрирован: Чт мар 16, 2006 14:45

Сообщение Siarhei Siamashka » Сб июн 17, 2006 00:10

geometer писал(а):А кстати, как его нужно было компилировать? В смысле, с какими ключиками?
Ключи оптимизации практически не имеют значения при измерении скорости работы памяти, поскольку используются довольно большие буфера (несколько мегабайт) и практически все время процессор проводит внутри библиотечных функций (memcpy/memset) либо функций, полностью написанных на ассемблере (memsetXX/memcpyXX), т.е. оптимизатору там влезть негде. В последних дополнительных тестах идет работа с блоками памяти маленького размера (до 16 и до 512 байт соответственно), поэтому там работа оптимизатора видна, но эти тесты нужны лишь для того, чтобы убедиться, что новые оптимизированные функции и на маленьких блоках работают по крайней мере не хуже (хотя там не все честно - новые функции инлайнятся :) ).

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

Маленькое лирическое отступление, с чего все это собственно началось. Я пытаюсь портировать UFO2000 на Nokia 770. UFO2000 использует библиотеку Allegro для работы с графикой. Для тех архитектур, для которых нет оптимизированного кода на ассемблере, используется универсальный, но медленный код на C, что-то вроде:

Код: Выделить всё

while (size--) { *dst++ = *src++; }
Так вот, оказывается, что данный код работает крайне медленно на ARM и его скорость сильно зависит от того, какой размер данных копируется за раз. Т.е. копирование побайтно примерно в 4 раза медленнее, чем копирование 32-бітных значений. В нашем случае копируются 16-битные значения (информация о пикселях), поэтому скорость приведенного выше кода заметно ниже, чем у стандартного библиотечного memcpy (примерно в 2 раза). Я попробовал поэкспериментировать с ассемблером, и к моему удивлению, оказалось, что мне удалось даже обогнать стандартные библиотечные функции, о чем я и поделился со всеми в списке рассылки :)
В частности, для UFO2000 все это приводит к росту FPS с 10-11 до 18-20, что должно заметно сказаться на играбельности. Для самой Nokia 770 быстрая работа с памятью наверное совсем не помешала бы в коде GTK (при очистке/копировании областей экрана).

PS. Судя по всему, эти оптимизации копирования памяти полезны только для OMAP, для XSCALE все наоборот. Хотя, возможно и для XSCALE можно добиться нормального быстродействия, если поэкспериментировать с командой PLD - software prefetch (на нокии от нее нет никакого эффекта).
Siarhei Siamashka (ssvb on #maemo, irc.freenode.net)
currently taking part in porting MPlayer to Nokia 770/N800

sash
Доктор (4 lvl)
Сообщения: 338
Зарегистрирован: Пт июл 04, 2003 13:33

Сообщение sash » Пн июн 19, 2006 04:13

intel xscale manual recomenduet cikli tipa

while (size--) { ... }

v pxa27x dlja vremennih registrov v operacijah kopirovanija mozhno zajuzat 64bitnie wmmx registry.

Siarhei Siamashka
Студент (1 lvl)
Сообщения: 47
Зарегистрирован: Чт мар 16, 2006 14:45

Сообщение Siarhei Siamashka » Пн июн 19, 2006 18:54

sash писал(а):intel xscale manual recomenduet cikli tipa

while (size--) { ... }
Для переменной со знаком, наверное, так будет еще быстрее:
while (--size >= 0) { ... }
v pxa27x dlja vremennih registrov v operacijah kopirovanija mozhno zajuzat 64bitnie wmmx registry.
Но в этом случае получится, что код будет только на Intel'ах работать. Кстати, я на нокии проверял DSP инструкции для загрузки/сохранения 64-битных данных, ускорения по сравнению с обычным LDM/STM на глаз не заметно, но зато необходимо обеспечивать 64-битное выравнивание и автоматически требуем как минимум armv5.

Конечно, хотелось бы обеспечить быструю работу на всех процессорах (для того, чтобы сделать патч для библиотеки Allegro), потому как на OMAP и StrongARM работает быстро, а на XScale - на копировании памяти полный завал :( http://maemo.org/pipermail/maemo-develo ... 03373.html

Поскольку чистая запись (memsetXX) работает нормально, есть какие-то проблемы с чтением на XScale. Наверное тут какой-то хитрый нюанс с логикой работы кэша и контроллера памяти. Кстати, на нокии чтение памяти всегда работает быстро, практически независимо от размера временной переменной, может там есть толковый hardware prefetch, которого нет у интела? В этом случае software prefetch с помощью PLD мог бы помочь. Хотя не знаю, еще буквально пару месяцев назад вообще не имел никакого представления о программировании для мобильных устройств и ARM архитектуре, имел опыт работы только с x86/amd64 ассемблером.
Siarhei Siamashka (ssvb on #maemo, irc.freenode.net)
currently taking part in porting MPlayer to Nokia 770/N800

Аватара пользователя
Kirill Limping
Академик (6 lvl)
Сообщения: 1371
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение Kirill Limping » Ср авг 02, 2006 00:06

Свежий обзор на английском, с учетом 2006 edition:
http://kvet.ch/articles/2006/07/29/revi ... net-tablet
Garmin iQue 3600, 60CSx | T39m | Dell x51v @WM 6 | BT-338 | Nokia E61 | Handspring Visor Deluxe | были Psion'ы, Zaurus'ы Gtalk: k.limping

Kit@
Новенький (0 lvl)
Сообщения: 2
Зарегистрирован: Вс ноя 19, 2006 17:07

Сообщение Kit@ » Вс ноя 19, 2006 17:08

День добрый всем владельцам Internet Tablet от нокии. Полазил по сети и нигде не мог найти места где общаются владельцы сего забавного аппарата(((( Есть предложение организовать свой форум для общения.
Предлагаю перебраться сюда http://770.fanforum.ru/index.php :)

Аватара пользователя
igorekk
Модератор
Сообщения: 3788
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение igorekk » Вс ноя 19, 2006 18:12

Рано пока на этот форум идти :) Пустой он.

Kit@
Новенький (0 lvl)
Сообщения: 2
Зарегистрирован: Вс ноя 19, 2006 17:07

Сообщение Kit@ » Пн ноя 20, 2006 19:04

Ему три дня от роду. И он так и останется пустой если все будут ждать пока он станет полный ))))

Закрыто

Вернуться в «КПК и смартфоны на Linux: Zaurus, планшеты Nokia, прочее»