|
|
  |
Bопрос по АРМ9, Обработчики прерываний |
|
|
|
Feb 22 2009, 00:03
|
Участник

Группа: Новичок
Сообщений: 61
Регистрация: 29-01-09
Пользователь №: 44 105

|
контроллер at91rm9200. частота ядра 180мгц, шина 60мгц. на шине статическая память с 16-битной шиной, с NWS=0(без дополнительных тактов). кеши оба включены-память закеширована write-back, в ней исполняется программа. обработчики прерываний в этой памяти. вопрос- если обработчики разместить во внутренней sram контроллера,будет ли выигрыш в производительности? или с кешами это не принципиально? как обработчик прерывания в keil скопировать из одной памяти в другую с учётом коррекции счётчика адреса(РС?) И ещё-пробовал стек делать во внутренней памяти - на глаз быстродействие не изменилось
|
|
|
|
|
Feb 22 2009, 14:14
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(axa09 @ Feb 22 2009, 03:03)  вопрос- если обработчики разместить во внутренней sram контроллера,будет ли выигрыш в производительности? или с кешами это не принципиально? Теоретически выигрыш может быть, так как внутренняя память все же быстрее. На практике все зависит от конкретного случая. Цитата(axa09 @ Feb 22 2009, 03:03)  как обработчик прерывания в keil скопировать из одной памяти в другую с учётом коррекции счётчика адреса(РС?) А зачем? Не проще его сразу по нужному адресу положить? Цитата(axa09 @ Feb 22 2009, 03:03)  И ещё-пробовал стек делать во внутренней памяти - на глаз быстродействие не изменилось  Значит, в вашей программе не так уж часто нужен стек.
|
|
|
|
|
Feb 22 2009, 15:46
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(axa09 @ Feb 22 2009, 03:03)  контроллер at91rm9200. частота ядра 180мгц, шина 60мгц. на шине статическая память с 16-битной шиной, с NWS=0(без дополнительных тактов). кеши оба включены-память закеширована write-back, в ней исполняется программа. обработчики прерываний в этой памяти. вопрос- если обработчики разместить во внутренней sram контроллера,будет ли выигрыш в производительности? или с кешами это не принципиально? как обработчик прерывания в keil скопировать из одной памяти в другую с учётом коррекции счётчика адреса(РС?) И ещё-пробовал стек делать во внутренней памяти - на глаз быстродействие не изменилось  Кеш работает с такой же частотой, что и внутренняя SRAM. Посему разница ничтожна. А стек в ARM'ах задействуется не столь часто, только когда не хватает внутренних регистров. К тому же современные компиляторы стараются оптимизировать скорость выполнения потока команд, учитывая pipeline.
|
|
|
|
|
Feb 22 2009, 22:48
|
Участник

Группа: Новичок
Сообщений: 61
Регистрация: 29-01-09
Пользователь №: 44 105

|
За ответы спасибо! с праздником!
можно повысить производительность системы путём манипуляций с кешами? сейчас таблица трансляции адресов(по 1мб) находится в кешируемой области внешней памяти. вся память кроме регистров кешируема и буферизована(биты cachable и buferable равны 1). кеш асинхронный. подскажите дальнейшие пути повышения производительности: 1)при выполнении кода 2)при блочном чтении из памяти 3)при блочной записи в память слышал, что перед передачей данных надо втыкать prefetch. можно по-подробнее? есть ещё invalidate,flush и др. как их пользовать?
извините за кашу в голове- просто хочется разобраться, помогите плиз.
|
|
|
|
|
Feb 22 2009, 23:09
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(axa09 @ Feb 23 2009, 01:48)  можно повысить производительность системы путём манипуляций с кешами? Можно, но не в разы. Судя по описанию, ваша система и так правильно настроена. Заниматься тюнингом производительности следует только при наличии насущной необходимости. Она есть? Цитата(axa09 @ Feb 23 2009, 01:48)  сейчас таблица трансляции адресов(по 1мб) находится в кешируемой области внешней памяти. Напрасно. Цитата(axa09 @ Feb 23 2009, 01:48)  кеш асинхронный Режим тактирования имеется в виду?
|
|
|
|
|
Feb 22 2009, 23:26
|
Участник

Группа: Новичок
Сообщений: 61
Регистрация: 29-01-09
Пользователь №: 44 105

|
Надо хотябы на 25% повысить. почему напрасно? как правильно и на что влияет?
ДА! режим тактирования имел ввиду.
|
|
|
|
|
Feb 22 2009, 23:32
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(axa09 @ Feb 23 2009, 02:26)  Надо хотябы на 25% повысить. Повысить для каких условий? Если у Вас есть некая функция, которую необходимо ускорить, то оптимизацию следует начинать с ее кода, а уж в последнюю очередь пытаться оптимизировать работу кэша. Просто повысить производительность системы на 25% невозможно. Цитата(axa09 @ Feb 23 2009, 02:26)  почему напрасно? Потому что выборки из таблицы трансляции не идут через кэш. Расположение таблицы ни на что не влияет.
|
|
|
|
|
Feb 23 2009, 00:19
|
Участник

Группа: Новичок
Сообщений: 61
Регистрация: 29-01-09
Пользователь №: 44 105

|
Нужно ускорить переброс видеобуфера в дисплейную память(шина 8 бит, на ebi, i80). тоесть если таблица трансляции расположена в кешируемой внешней памяти, то память не будет кешироваться? и доступ к таблице будет медленным? нужно ли кешировать внутреннюю память-срам 16кб? где правильнее расположить таблицу трансляции?
|
|
|
|
|
Feb 23 2009, 00:34
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(axa09 @ Feb 23 2009, 03:19)  Нужно ускорить переброс видеобуфера в дисплейную память(шина 8 бит, на ebi, i80). А каким образом он осуществляется сейчас? Не побайтово, надеюсь? Цитата(axa09 @ Feb 23 2009, 03:19)  тоесть если таблица трансляции расположена в кешируемой внешней памяти, то память не будет кешироваться? и доступ к таблице будет медленным? Будет, не волнуйтесь. Просто располагать ее в кэшируемой памяти нет смысла. Цитата(axa09 @ Feb 23 2009, 03:19)  нужно ли кешировать внутреннюю память-срам 16кб? Нужно. Цитата(axa09 @ Feb 23 2009, 03:19)  где правильнее расположить таблицу трансляции? В наиболее скоростной памяти. Но гробить под нее всю внутреннюю SRAM не стоит.
|
|
|
|
|
Feb 23 2009, 01:28
|
Участник

Группа: Новичок
Сообщений: 61
Регистрация: 29-01-09
Пользователь №: 44 105

|
Пришла в голову мысль расположить таблицу во внутренней sram. затрутся только reset, undef и swint. irq, fiq останутся! таблица у меня сильно фрагментирована. тоесть во внутренней срам будут вектора прерываний, стек и таблица трансляции адресов! отпишусь когда сделаю! я- великий извращенец!
|
|
|
|
|
Feb 23 2009, 06:16
|
Местный
  
Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961

|
Цитата(axa09 @ Feb 23 2009, 02:48)  таблица трансляции адресов (по 1мб) Подскажите пожалуйста, что это такое; где про это можно почитать и где можно посмотреть какой-нибудь примерчик. За ответы спасибо. С праздником.
|
|
|
|
|
Feb 23 2009, 07:45
|
Участник

Группа: Новичок
Сообщений: 61
Регистрация: 29-01-09
Пользователь №: 44 105

|
В общем удалось ради эксперимента таблицу запихать во внутреннюю срам. прироста в скорости не дало  по ходу больше никак не выжать. вот собственно задача: есть буфер MxN байт- индексов другого массива(палитра). требуется находить средние интенсивности компонент цвета из 4-х смежных точек(2х2 пиксела). короче,некое подобие фильтра при уменьшении картинки в два раза. как можно сделать быстрее? буфера во внешней памяти
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|