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

 
 
> Tightly Coupled Memory
sifadin
сообщение Jul 1 2011, 09:47
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 11-02-09
Пользователь №: 44 698



Есть программа размером под 2Мб, которая выполняется из SDRAM
Столкнулся с тем что вот такой кусок кода
col1=*videomem;

if ((col1 & 0xff000000)!=0) return 1;
if (1) {
if ((col1 & 0xff000000)==0)
offset1=X1;
offset1=offset1*1024;
offset1=offset1+Y1;
offset1=(offset1<<2);
}
выполняется 1,5 мкс при частоте 100МГц
Решил повысить быстродействие, введением Tightly Coupled Memory под инструкции
И сразу столкнулся с трудностью - как запихнуть нужную мне процедуру в эту память
При объявлении
void PP () __attribute__ ((section (".onchip_memory2_0_s2")));
компилятор выдает ошибку relocation truncated to fit
смысл ее мне не очень ясен но видимо линкер не может поместить ее в эту область потому что остальной код
в SDRAM
как быть? Весь код туда не влезет


Сообщение отредактировал sifadin - Jul 1 2011, 09:48
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vadimuzzz
сообщение Jul 1 2011, 12:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



а как у вас с кэшем инструкций? я так понимаю, это должна быть его работа. Tightly Coupled Memory обычно имеет смысл под обработчики прерываний использовать. да, а как меряли время выполнения?
Go to the top of the page
 
+Quote Post
sifadin
сообщение Jul 1 2011, 13:32
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 443
Регистрация: 11-02-09
Пользователь №: 44 698



Цитата(vadimuzzz @ Jul 1 2011, 16:43) *
а как у вас с кэшем инструкций? я так понимаю, это должна быть его работа. Tightly Coupled Memory обычно имеет смысл под обработчики прерываний использовать. да, а как меряли время выполнения?

4 к кэша
измерял По осцилографу. Зациклил код и в конце поставил обращение к внешнему устройству (высокоскоросному).
По стробу записи смотрел частоту обращений
Пробовал закоментировать код разница впечатляет с кодом около 1МГц, без 20МГц (устройство дает такты ожидания)
Теоретически при таком раскладе он должен работать из кэша может сдвиговые операции съедают время
Какие опции компилятора надо включить чтобы он оптимизировал код по быстродействию?

Да дело было в оптимизации включил -O3 время уменьшилось на порядок
Не знал что это такая сильная штука

Сообщение отредактировал sifadin - Jul 1 2011, 13:11
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Jul 1 2011, 15:34
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



для того кода время дикое. при 4к кэша зацикливаемый кусок наверняка исполняется не с DRAM, Tightly Coupled Memory тут не поможет. посмотрите промежуточный ассемблер (в objdump). можно еще сигналтапом посмотреть. -O3 - это чревато, лучше -O2
Go to the top of the page
 
+Quote Post



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

 


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


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