HPC.ru lite - Все форумы
Форум: КПК и смартфоны на Linux: Zaurus, планшеты Nokia, прочее
Тема: Интернет Таблетка Nokia 770 - впечатления
Страницы: 1 2 3 4 5 6 [7]

[Ответить]
Siarhei Siamashka [17.06.2006 00:10] :
Ключи оптимизации практически не имеют значения при измерении скорости работы памяти, поскольку используются довольно большие буфера (несколько мегабайт) и практически все время процессор проводит внутри библиотечных функций (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 (на нокии от нее нет никакого эффекта).
sash [19.06.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 [19.06.2006 18:54] :
Для переменной со знаком, наверное, так будет еще быстрее:
while (--size >= 0) { ... }

Но в этом случае получится, что код будет только на Intel'ах работать. Кстати, я на нокии проверял DSP инструкции для загрузки/сохранения 64-битных данных, ускорения по сравнению с обычным LDM/STM на глаз не заметно, но зато необходимо обеспечивать 64-битное выравнивание и автоматически требуем как минимум armv5.

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

Поскольку чистая запись (memsetXX) работает нормально, есть какие-то проблемы с чтением на XScale. Наверное тут какой-то хитрый нюанс с логикой работы кэша и контроллера памяти. Кстати, на нокии чтение памяти всегда работает быстро, практически независимо от размера временной переменной, может там есть толковый hardware prefetch, которого нет у интела? В этом случае software prefetch с помощью PLD мог бы помочь. Хотя не знаю, еще буквально пару месяцев назад вообще не имел никакого представления о программировании для мобильных устройств и ARM архитектуре, имел опыт работы только с x86/amd64 ассемблером.
Kirill Limping [02.08.2006 00:06] :
Свежий обзор на английском, с учетом 2006 edition:
http://kvet.ch/articles/2006/07/29/review-nokia-770-internet-tablet
Kit@ [19.11.2006 17:08] :
День добрый всем владельцам Internet Tablet от нокии. Полазил по сети и нигде не мог найти места где общаются владельцы сего забавного аппарата(((( Есть предложение организовать свой форум для общения.
Предлагаю перебраться сюда http://770.fanforum.ru/index.php
igorekk [19.11.2006 18:12] :
Рано пока на этот форум идти Пустой он.
Kit@ [20.11.2006 19:04] :
Ему три дня от роду. И он так и останется пустой если все будут ждать пока он станет полный ))))
[Ответить]
[< Назад]