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

 
 
 
Reply to this topicStart new topic
> Проблемы с Dhrystone на AT91RM9200
Paramedic
сообщение Feb 12 2007, 16:14
Сообщение #1


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

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



Компилирую в ИАР4.41 и загружаю через SAM-ICE тест производительности связки AT91RM9200+32MB_SDRAM (на плате AS-9200 от Аргуссофта) и вот что получаю:
-I- WO MMU & I+D Caches Disabled
-I- 329 Dhrystone per second
-I- 297 Dhrystone per second
-I- 296 Dhrystone per second
-I- 296 Dhrystone per second
-I- WO MMU & I Cache Enabled
-I- 1176 Dhrystone per second
-I- 1067 Dhrystone per second
-I- 1084 Dhrystone per second
-I- 1083 Dhrystone per second
-I- MMU & I Cache Enabled
-I- 1176 Dhrystone per second
-I- 1078 Dhrystone per second
-I- 1079 Dhrystone per second
-I- 1082 Dhrystone per second
-I- MMU & I+D Cache Enabled
-I- 3555 Dhrystone per second
-I- 3185 Dhrystone per second
-I- 3210 Dhrystone per second
-I- 3232 Dhrystone per second
-I- MMU & I+D Caches but I cache reduced (locked elsewhere)
-I- 2092 Dhrystone per second
-I- 1886 Dhrystone per second
-I- 1885 Dhrystone per second
-I- 1882 Dhrystone per second
По-моему маловато. Если кому не сложно, посмотрите в чём может быть дело. Исходники прилагаю.
Прикрепленные файлы
Прикрепленный файл  DHRYSTONE.rar ( 256.98 килобайт ) Кол-во скачиваний: 27
 
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Feb 12 2007, 17:24
Сообщение #2


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

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



Добавление
AT91F_SetBusMode(((unsigned int)3)<<30); // BUS ASYNC MODE
AT91F_SetCacheMode((unsigned int)1<<14); // CACHE RROBIN MODE
даёт немного лучший результат:
-I- WO MMU & I+D Caches Disabled
-I- 331 Dhrystone per second
-I- 297 Dhrystone per second
-I- WO MMU & I Cache Enabled
-I- 1433 Dhrystone per second
-I- 1299 Dhrystone per second
-I- MMU & I Cache Enabled
-I- 1614 Dhrystone per second
-I- 1483 Dhrystone per second
-I- MMU & I+D Cache Enabled
-I- 10553 Dhrystone per second
-I- 9341 Dhrystone per second
-I- MMU & I+D Caches but I cache reduced (locked elsewhere)
-I- 3923 Dhrystone per second
-I- 3542 Dhrystone per second
Но всё равно не понятно насколько это приемлемо. Встречал сообщения, где пишут что должно быть больше 100 тысяч.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 12 2007, 19:38
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



1. TTB таблица должна быть размещена в некэшируемой области. Например, с адреса 0x20200000 (ну уж всяко выше первого мегабайта). Соответственно вызываем: AT91F_InitMMU((unsigned int *)0x20200000);
2. Для получения максимального быстродействия надо регион объявить как cachable/bufferable. Соответсвенно надо поправить:
pTranslationTable[0x100] =
(0x200 << 20) | // Physical Address
(1 << 10) | // Access in supervisor mode
(15 << 5) | // Domain
1 << 4 |
(1 << 3) | // Cachable
(1 << 2) | // write-back
0x2; // Set as 1 Mbyte section.
3. У тебя процессор заводится на очень низкой частоте. Проверь.
Go to the top of the page
 
+Quote Post
Paramedic
сообщение Feb 13 2007, 11:59
Сообщение #4


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

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



Цитата(sergeeff @ Feb 12 2007, 19:38) *
1. TTB таблица должна быть размещена в некэшируемой области. Например, с адреса 0x20200000 (ну уж всяко выше первого мегабайта). Соответственно вызываем: AT91F_InitMMU((unsigned int *)0x20200000);
2. Для получения максимального быстродействия надо регион объявить как cachable/bufferable. Соответсвенно надо поправить:
pTranslationTable[0x100] =
(0x200 << 20) | // Physical Address
(1 << 10) | // Access in supervisor mode
(15 << 5) | // Domain
1 << 4 |
(1 << 3) | // Cachable
(1 << 2) | // write-back
0x2; // Set as 1 Mbyte section.
3. У тебя процессор заводится на очень низкой частоте. Проверь.


Спасибо за ответ!
На самом деле Атмел в ерате пишет:
26. PMC, Clock Generator: Bad switching when writing PLL registers with same MUL and DIV values
When the fields MUL and DIV in the CKGR_PLLBR register are written with the
same values as already programmed, the Master Clock signal switches to Main
Clock (output of the Main Oscillator) until a different value is programmed in the
register.
When the fields MUL and DIV in the CKGR_PLLAR register are written with the
same values as already programmed, the Master Clock signal switches to Slow
Clock (output of the 32768 Hz Oscillator) until a different value is programmed in the
register.
Так и есть... Тактирование привёл в порядок - получил такие цифры:
-I- PCK = 179712000
-I- MCK = 59904000
-I- WO MMU & I+D Caches Disabled
-I- 1751 Dhrystone per second
-I- 1633 Dhrystone per second
-I- WO MMU & I Cache Enabled
-I- 7494 Dhrystone per second
-I- 6935 Dhrystone per second
-I- MMU & I Cache Enabled
-I- 8434 Dhrystone per second
-I- 7902 Dhrystone per second
-I- MMU & I+D Cache Enabled
-I- 56198 Dhrystone per second
-I- 49580 Dhrystone per second
Это нормально или тоже маловато?
А вообще как разы/секунду перевести в МИПСы?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:13
Рейтинг@Mail.ru


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