реклама на сайте
подробности

 
 
> Скорость работы с памятью AT91RM9200...
Paramedic
сообщение Jun 19 2007, 07:14
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Использую AT91RM9200 + SDRAM. Приходится работать с изображениями и часто переливать данные из SDRAM и обратно. Протестировал скорость записи и выяснил что на запись слова в SDRAM тратится порядка 6-7 тактов MCK. По-моему это многовато. Нужно как-то повышать производительность.
Вообще SDRAM должна быстрее работать?
Это контроллер SDRAM в выбранном арме такой фиговый или я не так его использую?
Положение ещё усугубляет то, что на отладочной плате чипы памяти какие-то странные, не могу найти даташит, написано на них 8MX16TI и ещё вверху на одном буквы AHC а на другом AGM (что тоже настораживает). Аргуссофт сказал что это прямые аналоги микроновских MT48LC8M16A2.
Если я поставлю вместо SDRAM быструю статическую RAM, на сколько я смогу ощутить прирост производительности при активной работе с памятью?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlexBoy
сообщение Jun 19 2007, 11:07
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 19-12-05
Из: Kiev
Пользователь №: 12 394



Цитата(Paramedic @ Jun 19 2007, 10:14) *
Нужно как-то повышать производительность.
Вообще SDRAM должна быстрее работать?

Сильно улучшит ситуацию, если включите все кеши: инструкций и данных, причем данных в режим WriteBack. Соответственно придется задействовать MMU.
У меня общая производительность получалась на уровне 200-го пня.
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Jun 19 2007, 11:35
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Цитата(AlexBoy @ Jun 19 2007, 15:07) *
Сильно улучшит ситуацию, если включите все кеши: инструкций и данных, причем данных в режим WriteBack. Соответственно придется задействовать MMU.
У меня общая производительность получалась на уровне 200-го пня.

Всё так и делаю. Вы мне однажды помогли настроить кэши и менеджер памяти соответствующим образом, когда я мучился с тестом производительности. Спасибо Вам! Тогда мне удалось достичь 100 DMIPS при исполнении кода из SDRAM. Но почему-то мне кажется что это не предел производительности. Может быть проблема в "плохой" SDRAM или всё-таки в кривизне моих рук надо искать причину? smile.gif
Go to the top of the page
 
+Quote Post
AlexBoy
сообщение Jun 19 2007, 11:54
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 19-12-05
Из: Kiev
Пользователь №: 12 394



Цитата(Paramedic @ Jun 19 2007, 14:35) *
Но почему-то мне кажется что это не предел производительности. Может быть проблема в "плохой" SDRAM или всё-таки в кривизне моих рук надо искать причину? smile.gif

Вспомнил. Попробую запустить у себя тест, если будет сильно отличаться выложу исходники. Мне хватало скорости делать полноэкранную анимацию 800х600 15fps.
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Jun 19 2007, 12:27
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Цитата(AlexBoy @ Jun 19 2007, 15:54) *
Вспомнил. Попробую запустить у себя тест, если будет сильно отличаться выложу исходники. Мне хватало скорости делать полноэкранную анимацию 800х600 15fps.


Буду благодарен за тест.
А по поводу 800х600 15fps - это 139 нс на пиксел. Это просто вычитывание из памяти и вывод на экран или ещё какая-то раскодировка? Сколько байт данных на пиксел?
Go to the top of the page
 
+Quote Post
AlexBoy
сообщение Jun 19 2007, 12:42
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 19-12-05
Из: Kiev
Пользователь №: 12 394



Цитата(Paramedic @ Jun 19 2007, 15:27) *
Буду благодарен за тест.
А по поводу 800х600 15fps - это 139 нс на пиксел. Это просто вычитывание из памяти и вывод на экран или ещё какая-то раскодировка? Сколько байт данных на пиксел?

Спрайтовая графика, копирование блоков с полупрозрачностью. 1 байт на точку.
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Jun 19 2007, 13:10
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Цитата(AlexBoy @ Jun 19 2007, 16:42) *
Спрайтовая графика, копирование блоков с полупрозрачностью. 1 байт на точку.

Простите за назойливость, а полупрозрачность реализована по таблице? Величина спрайтов большая? Я просто хочу понять насколько интенсивной была работа с SDRAM.
Go to the top of the page
 
+Quote Post
AlexBoy
сообщение Jun 19 2007, 13:24
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 19-12-05
Из: Kiev
Пользователь №: 12 394



Часть по альфа-таблице (16 градаций), часть по цвету. Макс. размер спрайта 120х120 15шт, и мелких около 20шт. В основном проверки и целочисленное сложение, сдвиги. Многое от компилятора зависит, как он сможет оптимизировать. Пользуюсь RVDS2.2.
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Jun 20 2007, 05:12
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Цитата(AlexBoy @ Jun 19 2007, 17:24) *
Часть по альфа-таблице (16 градаций), часть по цвету. Макс. размер спрайта 120х120 15шт, и мелких около 20шт. В основном проверки и целочисленное сложение, сдвиги. Многое от компилятора зависит, как он сможет оптимизировать. Пользуюсь RVDS2.2.

Да, видимо Ваша система пошустрее моей работает с SDRAM... Жду с нетерпением от Вас результатов запуска теста.
Go to the top of the page
 
+Quote Post
AlexBoy
сообщение Jun 25 2007, 11:31
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 19-12-05
Из: Kiev
Пользователь №: 12 394



Цитата(Paramedic @ Jun 20 2007, 08:12) *
Да, видимо Ваша система пошустрее моей работает с SDRAM... Жду с нетерпением от Вас результатов запуска теста.

Как обещал выкладываю проект. Скорость максимальная какую смог выжать. Можно еще уменьшить делитель MCK до 2 (90Mhz), но за надежность не отвечаю. Попробуйте залить готовый test.bin из проекта и сравните с результатом компиляции вышим компилятором. Интересно сравнение компиляторов. Мои результаты:
Core Clock: 180Mhz, Master Clock: 60Mhz

*** CPU Speed Test
71.95 BogoMips
472350 Dhrystone per second, 268 DMIPS

*** Memory Speed Test
Block 1Kb, Speed 353552 Kb/s
Block 2Kb, Speed 357616 Kb/s
Block 4Kb, Speed 361936 Kb/s
Block 8Kb, Speed 364148 Kb/s
Block 16Kb, Speed 358666 Kb/s
Block 32Kb, Speed 130316 Kb/s
Block 64Kb, Speed 113957 Kb/s
Block 128Kb, Speed 112377 Kb/s
Block 256Kb, Speed 112338 Kb/s
Block 512Kb, Speed 112345 Kb/s
Block 1024Kb, Speed 112351 Kb/s
Прикрепленные файлы
Прикрепленный файл  ARM_Speed.zip ( 168.27 килобайт ) Кол-во скачиваний: 134
 
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Jun 25 2007, 12:11
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Цитата(AlexBoy @ Jun 25 2007, 15:31) *
Как обещал выкладываю проект. Скорость максимальная какую смог выжать. Можно еще уменьшить делитель MCK до 2 (90Mhz), но за надежность не отвечаю. Попробуйте залить готовый test.bin из проекта и сравните с результатом компиляции вышим компилятором. Интересно сравнение компиляторов. Мои результаты:
Core Clock: 180Mhz, Master Clock: 60Mhz

*** CPU Speed Test
71.95 BogoMips
472350 Dhrystone per second, 268 DMIPS

*** Memory Speed Test
Block 1Kb, Speed 353552 Kb/s
Block 2Kb, Speed 357616 Kb/s
Block 4Kb, Speed 361936 Kb/s
Block 8Kb, Speed 364148 Kb/s
Block 16Kb, Speed 358666 Kb/s
Block 32Kb, Speed 130316 Kb/s
Block 64Kb, Speed 113957 Kb/s
Block 128Kb, Speed 112377 Kb/s
Block 256Kb, Speed 112338 Kb/s
Block 512Kb, Speed 112345 Kb/s
Block 1024Kb, Speed 112351 Kb/s



Бинарник не запустился - наверное SDRAM разные. В любом случае у Вас цифры почти в три раза лучше. Буду пробовать компилировать Ваш проект. Спасибо огромное. Как запущу - отпишусь.
Go to the top of the page
 
+Quote Post
AlexBoy
сообщение Jun 25 2007, 12:24
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 19-12-05
Из: Kiev
Пользователь №: 12 394



Цитата(Paramedic @ Jun 25 2007, 15:11) *
Бинарник не запустился - наверное SDRAM разные.

Заливали терминалом по Х-модем? порт 11520.8.1
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Jun 25 2007, 13:13
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Цитата(AlexBoy @ Jun 25 2007, 16:24) *
Заливали терминалом по Х-модем? порт 11520.8.1

Если Вы имели ввиду скорость 115200 - то да.


Вот что получилось у меня:

Core Clock: 180Mhz, Master Clock: 60Mhz

*** CPU Speed Test
198121 Dhrystone per second, 112 DMIPS

*** Memory Speed Test
Block 1Kb, Speed 57192 Kb/s
Block 2Kb, Speed 57368 Kb/s
Block 4Kb, Speed 57394 Kb/s
Block 8Kb, Speed 57436 Kb/s
Block 16Kb, Speed 57415 Kb/s
Block 32Kb, Speed 44703 Kb/s
Block 64Kb, Speed 42534 Kb/s
Block 128Kb, Speed 42329 Kb/s
Block 256Kb, Speed 42330 Kb/s
Block 512Kb, Speed 42331 Kb/s
Block 1024Kb, Speed 42331 Kb/s
//----------------------------------------------------------------------------------------------------
Правда пришлось по другому настроить контроллер SDRAM (иначе не заработало):

int i;
volatile int *pSDRAM = (int *)BASE_EBI_CS1_ADDRESS;

//* Configure PIOC as peripheral (D16/D31)
AT91F_SDRC_CfgPIO();

//* Setup MEMC to support CS1=SDRAM
AT91C_BASE_EBI->EBI_CSA |= AT91C_EBI_CS1A;
AT91C_BASE_EBI->EBI_CFGR = (AT91C_EBI_DBPUC & 0x00) | (AT91C_EBI_EBSEN & 0x00);

//* Init SDRAM
//* 1. A minimum pause of 200us is provided to precede any signal toggle
AT91C_BASE_SDRC->SDRC_CR = AT91C_SDRC_NC_9 | AT91C_SDRC_NR_12 | AT91C_SDRC_NB_4_BANKS | AT91C_SDRC_CAS_2
| 0x100 | 0x4000 | 0x8000
| 0x880000
| 0x21000000;


//* 2. A Precharge All command is issued to the SDRAM
AT91C_BASE_SDRC->SDRC_MR = AT91C_SDRC_MODE_PRCGALL_CMD;
*pSDRAM = 0;

//* 3. Eight Auto-refresh are provided
AT91C_BASE_SDRC->SDRC_MR = AT91C_SDRC_MODE_RFSH_CMD;
for(i=0;i<8;i++)
*pSDRAM = 0;

//* 4. A mode register cycle is issued to program the SDRAM parameters
AT91C_BASE_SDRC->SDRC_MR = AT91C_SDRC_MODE_LMR_CMD;
*(pSDRAM+0x80) = 0;

//* 5. Write refresh rate into SDRAMC refresh timer COUNT register
AT91C_BASE_SDRC->SDRC_TR = (AT91C_SDRC_COUNT & 0x2E0);
*pSDRAM = 0;

//* 6. A Normal Mode Command is provided, 3 clocks after tMRD is set
AT91C_BASE_SDRC->SDRC_MR = AT91C_SDRC_MODE_NORMAL_CMD;
*pSDRAM = 0;

Странно, но почему-то в цикл теста CalcBogoMips() программа не попадает, не дожидается и вываливается по while((loops_per_sec <<= 1)). Кстати, где в Вашем коде инициализируется системный таймер?

Сообщение отредактировал Paramedic - Jun 25 2007, 13:15
Go to the top of the page
 
+Quote Post
AlexBoy
сообщение Jun 25 2007, 14:11
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 205
Регистрация: 19-12-05
Из: Kiev
Пользователь №: 12 394



Цитата(Paramedic @ Jun 25 2007, 16:13) *
Правда пришлось по другому настроить контроллер SDRAM (иначе не заработало):
Странно, но почему-то в цикл теста CalcBogoMips() программа не попадает, не дожидается и вываливается по while((loops_per_sec <<= 1)). Кстати, где в Вашем коде инициализируется системный таймер?

Попробуйте использовать мой модуль AT91_SDRAM.c, только заменить AT91C_SDRC_NC_8 на AT91C_SDRC_NC_9, должно пойти.
Таймер инициализируется там-же в CalcBogoMips, просто задается делитель set_systimer_divider(1);
Можно попробовать увеличить задержку delay_long(0x10000), т.к. после установки делителя таймер вначале выдает бяку.
Странные результаты по скорости памяти, почти нет разницы что внутри кеша, что вне.
P.S.
Добейтесь работы моего проекта с минимальными измерениями иначе не поймем отчего тормозит.
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Jun 26 2007, 08:15
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 181
Регистрация: 15-01-07
Пользователь №: 24 436



Цитата(AlexBoy @ Jun 25 2007, 18:11) *
Попробуйте использовать мой модуль AT91_SDRAM.c, только заменить AT91C_SDRC_NC_8 на AT91C_SDRC_NC_9, должно пойти.

Странные результаты по скорости памяти, почти нет разницы что внутри кеша, что вне.
P.S.
Добейтесь работы моего проекта с минимальными измерениями иначе не поймем отчего тормозит.


SDRAM заработала когда заменил T91C_SDRC_NC_8 на AT91C_SDRC_NC_9. Но скорости остались такие же.
И еще: функция AT91F_InitPMC() выполняется успешно, только если закоментировать AT91F_EnableMainClock() и AT91F_SetMasterClock(), в противном случае программа виснет. Частоты PLLA, PLLB и MCKL при коментировании вышеназванных функций выставляются правильные.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Paramedic   Скорость работы с памятью AT91RM9200...   Jun 19 2007, 07:14
- - Gemm   Цитата(Paramedic @ Jun 19 2007, 11:14) Ис...   Jun 19 2007, 07:27
|- - Paramedic   Цитата(Gemm @ Jun 19 2007, 11:27) У меня ...   Jun 19 2007, 07:33
|- - AlexBoy   Цитата(Paramedic @ Jun 26 2007, 11:15) И ...   Jun 26 2007, 09:31
|- - Paramedic   Цитата(AlexBoy @ Jun 26 2007, 13:31) Так ...   Jun 26 2007, 09:39
|- - AlexBoy   Цитата(Paramedic @ Jun 26 2007, 12:39) Не...   Jun 26 2007, 09:55
|- - Paramedic   Цитата(AlexBoy @ Jun 26 2007, 13:55) Поня...   Jun 26 2007, 11:23
|- - AlexBoy   Цитата(Paramedic @ Jun 26 2007, 14:23) Та...   Jun 26 2007, 12:02
|- - Paramedic   Цитата(AlexBoy @ Jun 26 2007, 16:02) Я не...   Jun 27 2007, 07:39
|- - MemoryTest   получил следующее: *** CPU Speed Test 71.95 BogoMi...   Jun 27 2007, 13:50
|- - AlexBoy   Цитата(Paramedic @ Jun 27 2007, 10:39) И ...   Jun 27 2007, 16:07
|- - Paramedic   Цитата(AlexBoy @ Jun 27 2007, 20:07) Инфо...   Jun 28 2007, 04:53
||- - AlexBoy   Цитата(Paramedic @ Jun 28 2007, 07:53) Ко...   Jun 28 2007, 12:49
||- - Paramedic   Цитата(AlexBoy @ Jun 28 2007, 16:49) могё...   Jun 28 2007, 13:05
|- - Paramedic   Цитата(AlexBoy @ Jun 27 2007, 20:07) Инфо...   Jul 2 2007, 07:07
|- - AlexBoy   Цитата(Paramedic @ Jul 2 2007, 10:07) Раз...   Jul 3 2007, 10:54
|- - Paramedic   Цитата(AlexBoy @ Jul 3 2007, 14:54) Забыл...   Jul 3 2007, 11:33
|- - AlexBoy   Цитата(Paramedic @ Jul 3 2007, 14:33) Ког...   Jul 3 2007, 11:44
|- - Paramedic   Цитата(AlexBoy @ Jul 3 2007, 15:44) Рад б...   Jul 3 2007, 12:12
- - sergeeff   Самая шустрая memcpy для ARM, что я видел, в netbs...   Jul 3 2007, 11:54
- - sergeeff   У меня функция из netbsd копирует 1 Mbytes блок за...   Jul 3 2007, 14:50
|- - AlexBoy   Цитата(sergeeff @ Jul 3 2007, 17:50) У ме...   Jul 3 2007, 15:25
- - sergeeff   Попробовал функцию от уважаемого zltigo. У меня он...   Jul 3 2007, 18:51


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 10:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01628 секунд с 7
ELECTRONIX ©2004-2016