Перейти к содержанию
    

41 minutes ago, GenaSPB said:

Есть одна непонятка - параметр Address Mapping Configuration - какой он для моего случая NT5CC128M16IP-DI - bank-row-column или row-bank-column ?

Любой, надо полагать: это же просто порядок маппинга.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 minutes ago, GenaSPB said:

Да, нашел аппноут от ST где это объяснили.

А где вы это откопали?

Capture+_2019-12-15-22-09-00.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это скриншот с исходников моего проекта. Гитхабовский адрес в начале темы. Калибровки делал сам на живых процессорах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, GenaSPB said:

Это скриншот с исходников моего проекта. Гитхабовский адрес в начале темы. Калибровки делал сам на живых процессорах.

а, ясно. Ну вернемся еще к этому. Увы и ах, не дают А серии никакого прорыва, у них MMU основная фишка, оную мы и не используем.

Ну разве что А15 ые с out-of-order повыше IPC имеют.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, DASM сказал:

Увы и ах, не дают А серии никакого прорыва,

А что за прорыв вы от них ждете, интересно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 minutes ago, mantech said:

А что за прорыв вы от них ждете, интересно?

я - никакого. А вот Геннадий углядел 5 кратный рост над M7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, DASM сказал:

А вот Геннадий углядел 5 кратный рост над M7

А, это все про этот случай... Понятно :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, GenaSPB said:

 

прогоните как будет время. У меня в свертках подобное занимает 90 % процессорного времени, fft только 5 %, так что акт

Pi считать неакутально ))

#define FFTZS 8192
typedef struct
{
	float r;
	float i;
} cplxf;

cplxf src[FFTZS];
cplxf dst[FFTZS];
cplxf refv[FFTZS];
void cplxmla(cplxf *s, cplxf *d, cplxf *ref, int len) {	
	while (len--) {
		d->r += s->r * ref->r - s->i * ref->i;
		d->i += s->i * ref->r + s->r * ref->i;
		++s;  ++d; ++ref;
	}
}
int main () {
		for (;;) {
			cplxmla(src, dst, refv,  FFTZS);
			HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_6);
		}
}
	На H7 - 1.16 кГц, 0.45 мс на перемножение

 

На H серии меандр 1.16 кГц, 0.45 миллисек на перемножении таких векторов.

На А8 кортексе 0.36 мсек, несмотря на включенный NEON и вдвое более высокую частоту. (кстати тоже надо покопаться, что так медленно то)

 

Безымянный.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что надо пометить volatile? Это оптимизируется насовсем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 minutes ago, GenaSPB said:

Что надо пометить volatile? Это оптимизируется насовсем.

у меня не выкинул на -o3

ну для успокоения  объявите 

volatile cplxf dst[FFTZS];

...

void cplxmla(cplxf *s, volatile cplxf *d, cplxf *ref, int len) {    

 

А чтобы совсем сон испортить - С66 из АМ5729 сделает это в 8 раз быстрее, а там их два ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Полтора килоегрца на 157-м (1.49).
Немного попинаю.
 

arm-none-eabi-gcc -std=gnu11 -Wstrict-prototypes -c -march=armv7-a -mfloat-abi=hard -mfpu=vfpv4-d16 -ftree-vectorize -fno-math-errno -funroll-loops -fgraphite-identity -ffunction-sections -fdata-sections -ffat-lto-objects -Ofast -flto -gdwarf-2 -fomit-frame-pointer -Wall  -DNDEBUG=1 -DCPUSTYLE_STM32MP1=1 -DCPUSTYLE_STM32MP157A=1 -DSTM32MP157Axx=1  -MD -MP -MF ./obj/usb/usbd_descriptors.o.d -I../../../CMSIS_5/CMSIS/Core_A/Include -I../../../CMSIS_5/CMSIS/DSP/Include -I../.. -I../../inc -I../../rza1x_inc/ ../../usb/usbd_descriptors.c -o obj/usb/usbd_descriptors.o

 

1.41 с добавлением вот такой примочки:
 

void cplxmlasave(cplxf *d, int len) {
	while (len--) {
		volatile float t;
		t = d->r;
		t = d->i;
	}
}

для предотвращения не тех оптимизаций. А для neon вообще-то есть спец инлайны...

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 minutes ago, GenaSPB said:

Полтора килоегрца на 157-м (1.49).
Немного попинаю.
 


arm-none-eabi-gcc -std=gnu11 -Wstrict-prototypes -c -march=armv7-a -mfloat-abi=hard -mfpu=vfpv4-d16 -ftree-vectorize -fno-math-errno -funroll-loops -fgraphite-identity -ffunction-sections -fdata-sections -ffat-lto-objects -Ofast -flto -gdwarf-2 -fomit-frame-pointer -Wall  -DNDEBUG=1 -DCPUSTYLE_STM32MP1=1 -DCPUSTYLE_STM32MP157A=1 -DSTM32MP157Axx=1  -MD -MP -MF ./obj/usb/usbd_descriptors.o.d -I../../../CMSIS_5/CMSIS/Core_A/Include -I../../../CMSIS_5/CMSIS/DSP/Include -I../.. -I../../inc -I../../rza1x_inc/ ../../usb/usbd_descriptors.c -o obj/usb/usbd_descriptors.o

 

1.41 с добавлением вот такой примочки:
 


void cplxmlasave(cplxf *d, int len) {
	while (len--) {
		volatile float t;
		t = d->r;
		t = d->i;
	}
}

для предотвращения не тех оптимизаций. А для neon вообще-то есть спец инлайны...

Так в Н7 нет Неона. Да и gcc для А8 делает хорошо и без intrinsicов.

Ну так что, все одинаково вышло, Н7 на 480 МГц и ваш (на 650?). 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Включил neon - имеем 2 кГц (с явным сохранением массива d) без intrinsicов.
Да, разницы в разы нет.

Выкинул свою функцию "использования" - оригинальный исходник 2.33 кГц

Добавление опции  -mvectorize-with-neon-quad не изменило результата.

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...