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

 
 
> Производительность SAM9XE, непонятки с этим процом
EugenB2
сообщение Jan 14 2010, 21:01
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 14-01-10
Пользователь №: 54 820



Имеется платка с SAM9XE512, все запускает, шьется, работает. Но есть одно неприятное НО. Решил я затестить производительность сей штуки. Сделал тупо просто:
t=GetTickCount(); 1ms тики
for(k=0;k < 6600000; k++); подобрал, чтобы 1секунду примерно
t=GetTickCount()-t; равно 1000
(вообще сделал вывод в DEBUG и компом проверил отсчет 1 секунды)

Итак получаем в дизасме(позже выложу), что цикл занимает 5 инструкций, одна из них 2такта . Итого 7 тактов.
Итак 7*6600000=46200000 46 MIPS
Потом включаю ICache. Вуаля, производительность сразу в два раза 92мипса.
А теперь вопрос! Где обещанные 200MIPS????? Или я где-то ошибся?

Сообщение отредактировал EugenB2 - Jan 14 2010, 21:06
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 14)
AlexandrY
сообщение Jan 14 2010, 21:35
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Классическая ошибка. ICache включить недостаточно, надо сконфигурировать MMU еще, сделать мапинг на этот код и там указать кэширование.
Цитата(EugenB2 @ Jan 14 2010, 23:01) *
Потом включаю ICache. Вуаля, производительность сразу в два раза 92мипса.
Go to the top of the page
 
+Quote Post
EugenB2
сообщение Jan 14 2010, 22:00
Сообщение #3





Группа: Участник
Сообщений: 13
Регистрация: 14-01-10
Пользователь №: 54 820



Цитата(AlexandrY @ Jan 14 2010, 23:35) *
Классическая ошибка. ICache включить недостаточно, надо сконфигурировать MMU еще, сделать мапинг на этот код и там указать кэширование.

Спасибо, покопаю в этом направлении.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 14 2010, 22:03
Сообщение #4


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Интересно в какой среде вы работаете. В IAR-е в их примерах так сразу эту операцию делают с MMU.
Цитата(EugenB2 @ Jan 15 2010, 00:00) *
Спасибо, покопаю в этом направлении.
Go to the top of the page
 
+Quote Post
vmp
сообщение Jan 15 2010, 06:16
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 20-01-05
Из: Зеленоград
Пользователь №: 2 070



Может быть пригодится - производительность SAM9XE в разных условиях:
http://caxapa.ru/144973.html
Go to the top of the page
 
+Quote Post
EugenB2
сообщение Jan 15 2010, 06:55
Сообщение #6





Группа: Участник
Сообщений: 13
Регистрация: 14-01-10
Пользователь №: 54 820



Цитата(AlexandrY @ Jan 15 2010, 00:03) *
Интересно в какой среде вы работаете. В IAR-е в их примерах так сразу эту операцию делают с MMU.

Как раз им и пользуюсь, но ничего такого в коде и не видел.
Go to the top of the page
 
+Quote Post
EugenB2
сообщение Jan 15 2010, 08:40
Сообщение #7





Группа: Участник
Сообщений: 13
Регистрация: 14-01-10
Пользователь №: 54 820



Почитал даташит по MMU, понял, что можно закопаться в написании с нуля сего дела. Полазил по форуму, по гуглу, что-то нет примеров реализации MMU. Может, у кого есть чего?

Сообщение отредактировал EugenB2 - Jan 15 2010, 08:41
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 15 2010, 08:56
Сообщение #8


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Да не, в IAR-е полно этого добра. Только для Atmel-ов нет.
Дело видимо в том, что Atmel-ы плотно пасет Adeneo и из бесплатных сорсов повытягивал все что только можно чтобы усложнить самостоятельный стартап на Atmel-ах.
Смотрите файлы ttbl.c в других директориях IAR-а. И по аналогии можете создать свой для Atmel-а.
А лучше переходите сразу на NXP. Меньше дурных проблем будет.

Цитата(EugenB2 @ Jan 15 2010, 10:40) *
Почитал даташит по MMU, понял, что можно закопаться в написании с нуля сего дела. Полазил по форуму, по гуглу, что-то нет примеров реализации MMU. Может, у кого есть чего?
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Jan 15 2010, 10:23
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



То есть я так понял атмеловские примеры для армов работают с производительностью в два раза меньше чем могли бы? Это именно для процов с поддержкой MMU?
Go to the top of the page
 
+Quote Post
EugenB2
сообщение Jan 15 2010, 10:34
Сообщение #10





Группа: Участник
Сообщений: 13
Регистрация: 14-01-10
Пользователь №: 54 820



Цитата(andrewlekar @ Jan 15 2010, 12:23) *
То есть я так понял атмеловские примеры для армов работают с производительностью в два раза меньше чем могли бы? Это именно для процов с поддержкой MMU?

Получается что да, если с MMU. Ищу вот пример реализации...

Цитата(AlexandrY @ Jan 15 2010, 10:56) *
Да не, в IAR-е полно этого добра. Только для Atmel-ов нет.
Дело видимо в том, что Atmel-ы плотно пасет Adeneo и из бесплатных сорсов повытягивал все что только можно чтобы усложнить самостоятельный стартап на Atmel-ах.
Смотрите файлы ttbl.c в других директориях IAR-а. И по аналогии можете создать свой для Atmel-а.
А лучше переходите сразу на NXP. Меньше дурных проблем будет.

Да полно уже нароботок на SAM7S, а вот с NXP тоже не так все гладко. Там оказывается, что ДМА реализован совершенно не так, как в атмелах. Есть несколько каналов ДМА на ВСЮ периферию и крутись как хочешь. Вот у меня были потоковые приложения, где вводилась инфа через 4 порта посредством PDC на постоянке. А если бы на NXP, то все, уперся бы в стену. Потому как каналы все были бы заняты.
Но зато в NXP есть DMA SRAM to SRAM... )) и нет глюков с периферией таких.

Сообщение отредактировал EugenB2 - Jan 15 2010, 10:28
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Jan 15 2010, 11:06
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



А почему для указанного кода недостаточно I-Cache? Как там поможет кэш данных, если данные особо не используются?
Go to the top of the page
 
+Quote Post
vmp
сообщение Jan 15 2010, 11:32
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 20-01-05
Из: Зеленоград
Пользователь №: 2 070



Пример инициализации MMU для SAM9XE под IAR 5.x
Раскладка ОЗУ - кешируются 31 мегабайт из 32, последний мегабайт оставлен для буферов при работе с DMA (некешируемый).
Секцию "TLB" нужно задать в .icf - файле, я ее клал в последние 16К последнего мегабайта ОЗУ (в некешируемую область), с адреса 0x21FFC000.
Прикрепленные файлы
Прикрепленный файл  mmu.rar ( 1.94 килобайт ) Кол-во скачиваний: 187
 
Go to the top of the page
 
+Quote Post
andrewlekar
сообщение Jan 15 2010, 11:41
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Цитата(vmp @ Jan 15 2010, 16:32) *
Пример инициализации MMU для SAM9XE под IAR 5.x
Раскладка ОЗУ - кешируются 31 мегабайт из 32, последний мегабайт оставлен для буферов при работе с DMA (некешируемый).
Секцию "TLB" нужно задать в .icf - файле, я ее клал в последние 16К последнего мегабайта ОЗУ (в некешируемую область), с адреса 0x21FFC000.

То есть секция TLB у вас размещалась в SDRAM? Это не слишком било по производительности? Разглядываю примеры - там располагали эту секцию в SRAM.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 15 2010, 12:19
Сообщение #14


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(EugenB2 @ Jan 14 2010, 23:01) *
Потом включаю ICache. Вуаля, производительность сразу в два раза 92мипса.
А теперь вопрос! Где обещанные 200MIPS????? Или я где-то ошибся?

Настройте MMU, включите DCache, настройте Bus Matrix. И выйдете на 200MIPS.

Для примера.
Простой пакетный bridge на XE512 с включенным одним только ICache - обрабатывает 7K пакетов в секунду. А с настроенным BusMatrix'ом, MMU, и включенным DCache - 30K пакетов в секунду.
Go to the top of the page
 
+Quote Post
EugenB2
сообщение Jan 15 2010, 12:20
Сообщение #15





Группа: Участник
Сообщений: 13
Регистрация: 14-01-10
Пользователь №: 54 820



Цитата(andrewlekar @ Jan 15 2010, 13:06) *
А почему для указанного кода недостаточно I-Cache? Как там поможет кэш данных, если данные особо не используются?

Cам в догадках...
\ ??testit_0:
\ 00000008 10109FE5 LDR R1,??testit_1 ;; 0xd59f80 единственное обращение к памяти, а производительности особо не прибавилось
\ 0000000C 010050E1 CMP R0,R1
\ 00000010 0100002A BCS ??testit_2
\ 00000014 010090E2 ADDS R0,R0,#+1
\ 00000018 FAFFFFEA B ??testit_0
468 }
\ ??testit_2:
\ 0000001C 1EFF2FE1 BX LR ;; return
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 17:26
Рейтинг@Mail.ru


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