HPC.ru lite - Все форумы
Форум: КПК и смартфоны на Linux: Zaurus, планшеты Nokia, прочее
Тема: Быстродействие памяти (оптимизация функций memset/memcpy)
[Ответить]
Siarhei Siamashka [17.03.2006 12:04] Быстродействие памяти (оптимизация функций memset/memcpy):
Зравствуйте, не мог бы кто-нибудь откомпилировать и запустить тестовую программку на Zaurus?
http://maemo.org/pipermail/maemo-developers/2006-March/003269.html
На Nokia 770 данные оптимизированные функции заполнения/копирования памяти (memset8, memcpyt16) работают заметно быстрее стандартных memset/memcpy:
Results from my Nokia 770 (TI OMAP1710 250MHz) are the following:
--- running correctness tests ---
all the correctness tests passed
--- running performance tests (memory bandwidth benchmark) ---:
memset() memory bandwidth: 121.22MB/s
memset8() memory bandwidth: 275.94MB/s
memcpy() memory bandwidth (perfectly aligned): 104.86MB/s
memcpy16() memory bandwidth (perfectly aligned): 113.98MB/s
memcpy() memory bandwidth (16-bit aligned): 70.37MB/s
memcpy16() memory bandwidth (16-bit aligned): 101.31MB/s
--- testing performance for random blocks (size 0-15 bytes) ---
memset time: 0.410
memset8 time: 0.260
--- testing performance for random blocks (size 0-511 bytes) ---
memset time: 2.360
memset8 time: 1.140
Было бы интересно узнать, есть ли ли какой-нибудь эффект на Zaurus. Заранее спасибо.
Strijar [17.03.2006 13:09] :
На моем:
--- running correctness tests ---
all the correctness tests passed
--- running performance tests (memory bandwidth benchmark) ---:
memset() memory bandwidth: 80.35MB/s
memset8() memory bandwidth: 83.55MB/s
memcpy() memory bandwidth (perfectly aligned): 45.29MB/s
memcpy16() memory bandwidth (perfectly aligned): 45.20MB/s
memcpy() memory bandwidth (16-bit aligned): 43.15MB/s
memcpy16() memory bandwidth (16-bit aligned): 38.27MB/s
--- testing performance for random blocks (size 0-15 bytes) ---
memset time: 0.960
memset8 time: 0.880
--- testing performance for random blocks (size 0-511 bytes) ---
memset time: 3.840
memset8 time: 3.670
Так что и без этого все более-менее хорошо 
Siarhei Siamashka [17.03.2006 13:40] :
Спасибо. Получается, код нужно 'затачивать' под каждый процессор индивидуально. Zaurus уже существует достаточно давно, поэтому не удивительно, что там уже все заоптимизировано по максимуму. С другой стороны Nokia 770 - новый девайс и софт для него еще нуждается в доработке и еще есть возможности выжать из него лучшее быстродействие
Nokia об этом теперь знает, наверное функции копирования памяти будут оптимизированы в одной из следующих прошивок.
Кстати, интересно, судя по всему у Nokia 770 несмотря на более слабый процессор, память заметно быстрее. Да и куда им деваться, большой экран требует хорошей скорости прокачки мультимедиа-информации.
albertr [17.03.2006 16:12] :
Siarhei, I sent you PM.
-albertr
Siarhei Siamashka [24.03.2006 20:58] :
2Strijar: Прошу прощения, можно узнать информацию о прошивке и версии ядра? А то что-то результаты немного не сходятся:
http://maemo.org/pipermail/maemo-developers/2006-March/003373.html
sash [24.03.2006 22:31] :
тест какойто подозрительный
вот что у меня вышло, ядра 2.4.20, glibc 2.2.5, pdaXrom 1.1.0beta2
разгона нет
компилировал gcc 3.4.6, процессор xscale
SL-C1000
# ./fastmem-arm-test
--- running correctness tests ---
all the correctness tests passed
--- running performance tests (memory bandwidth benchmark) ---:
memset() memory bandwidth: 238.31MB/s
memset8() memory bandwidth: 238.31MB/s
memcpy() memory bandwidth (perfectly aligned): 100.82MB/s
memcpy16() memory bandwidth (perfectly aligned): 39.35MB/s
memcpy() memory bandwidth (16-bit aligned): 92.79MB/s
memcpy16() memory bandwidth (16-bit aligned): 34.61MB/s
--- testing performance for random blocks (size 0-15 bytes) ---
memset time: 0.650
memset8 time: 0.560
--- testing performance for random blocks (size 0-511 bytes) ---
memset time: 1.690
memset8 time: 1.610
SL-C760
# ./fastmem-arm-test
--- running correctness tests ---
all the correctness tests passed
--- running performance tests (memory bandwidth benchmark) ---:
memset() memory bandwidth: 327.68MB/s
memset8() memory bandwidth: 327.68MB/s
memcpy() memory bandwidth (perfectly aligned): 110.96MB/s
memcpy16() memory bandwidth (perfectly aligned): 47.66MB/s
memcpy() memory bandwidth (16-bit aligned): 99.39MB/s
memcpy16() memory bandwidth (16-bit aligned): 42.20MB/s
--- testing performance for random blocks (size 0-15 bytes) ---
memset time: 0.660
memset8 time: 0.580
--- testing performance for random blocks (size 0-511 bytes) ---
memset time: 1.510
memset8 time: 1.400
Siarhei Siamashka [25.03.2006 10:06] :
sash писал(а):
тест какойто подозрительный
вот что у меня вышло, ядра 2.4.20, glibc 2.2.5, pdaXrom 1.1.0beta2
разгона нет
компилировал gcc 3.4.6, процессор xscale
Да, результаты несколько странные. Получается, что SL-C760 быстрее работает с памятью, чем более новая модель SL-C1000 
Возможны варанты:
1. Ошибка в тесте
2. Оптимизация для SL-C1000 отличается от оптимизации для SL-C760 и glibc 2.2.5 оптимизирован именно для SL-C760
3. Инженеры sharp по каким-то причинам решили сэкономить на памяти в SL-C1000 и она действительно медленнее
Если не сложно, попробуй написать свою тестовую программу, тестирующую быстродействие стандартных функций memset и memcpy и сравнить результаты на SL-C760 и SL-C1000, таким образом можно подтвердить или опровергнуть предположение об ошибке в тесте.
[Ответить]