Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Кто работал с PXA27x?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
AlexBoy
Помогите разобраться кто работал с этим процом.

Делаю проект на PXA270 520Mhz. WinCE и линухом не пользуюсь. Сейчас идет самая мутная часть - инициализация периферии.
Частоты выставил: CPU = 520, BUS = 208, MEMCTL = 208, SDRAM = MEMCTL/2 = 104. Кеш инструкций и BTB включил. Пустой секундный цикл выполняется за 290млн. итераций, значит частоты установились.
А вот скорость копирования блока в SDRAM с выкл. dcache около 28Мб/с, с вкл. 120мб/с.
Проверял на RM9200 с выкл. dcache 104мб/с, с вкл. 140мб/с. Это при том, что на RM9200 память работает на частоте 60Mhz, а на PXA - 104Mhz.

Скорость проверял функцией memcpy, копирую блок 32Мб, т.е. общий прочитаный/записаный объем 64мб.

Как вы думаете это нормальные результаты? Кто-то может проверить у себя?
Может есть какой-то тестовый пример?
aaarrr
Цитата(AlexBoy @ Jan 21 2007, 15:43) *
Как вы думаете это нормальные результаты? Кто-то может проверить у себя?
Может есть какой-то тестовый пример?


Сразу оговорюсь, что с PXA дела не имел, но есть некоторые соображения общего характера:

1.
Цитата(AlexBoy @ Jan 21 2007, 15:43) *
скорость копирования блока в SDRAM с выкл. dcache около 28Мб/с, с вкл. 120мб/с.

Не должна так сильно падать скорость копирования при отключении кэша: раза в 1.5-2 может, но в 4 - уже подозрительно. Такое ощущение, что кэш выключен и для исполняемой программы.

2.
Цитата(AlexBoy @ Jan 21 2007, 15:43) *
Проверял на RM9200 с выкл. dcache 104мб/с, с вкл. 140мб/с. Это при том, что на RM9200 память работает на частоте 60Mhz, а на PXA - 104Mhz.

А здесь подозрительно высокие показатели, при похожем на правду отношении скоростей.

По-моему, что-то не так с методикой тестирования.
AlexBoy
Цитата(aaarrr @ Jan 21 2007, 15:16) *
По-моему, что-то не так с методикой тестирования.


Перепроверил методику, все железно. Функцию для тестирования прикрепил. Меня такие результаты тоже очень удивили. Запустил еще раз.
Программа загружена во внутреннюю SRAM
1. Включены mmu, icache, dcache для SRAM и SDRAM
114000 кб/с

2. Для страниц SDRAM отключено кеширование (для SRAM оставил)
27000 кб/с

толи кеш такой хороший...
aaarrr
Цитата(AlexBoy @ Jan 22 2007, 14:32) *
Функцию для тестирования прикрепил.

Где?

Цитата(AlexBoy @ Jan 22 2007, 14:32) *
Запустил еще раз. Программа загружена во внутреннюю SRAM
1. Включены mmu, icache, dcache для SRAM и SDRAM
114000 кб/с

2. Для страниц SDRAM отключено кеширование (для SRAM оставил)
27000 кб/с

толи кеш такой хороший...

Скорее, функция копирования плохая. Единственное отличие при работе с кэшем состоит в том, что обмен с SDRAM будет осуществляться целыми строками.

А для RM9200 компилятор тот же использовался, или другой?
AlexBoy
Цитата(aaarrr @ Jan 22 2007, 14:01) *
Где?

А для RM9200 компилятор тот же использовался, или другой?


Сорри, чето сразу не прикрепилось. Компилятор тот-же RVDS 2.2, менял только тип процессора ARM920T и PXA270, пробовал ставить оба, разницы нет.
aaarrr
Попробовал у себя - компилятор ADS 1.2, ARM920T @ 200MHz, 100MHz bus:

Код
Кэш включен  - 58.9МБайт/сек
Кэш выключен - 47.5МБайт/сек


Это именно скорость копирования (чтение + запись).

UPD: Скорость работы при включенном кэше близка к той, что получается у Вас: 58.9 * 2 = 117.8
AlexBoy
Цитата(aaarrr @ Jan 22 2007, 15:55) *
Попробовал у себя - компилятор ADS 1.2, ARM920T @ 200MHz, 100MHz bus:

Код
Кэш включен  - 58.9МБайт/сек
Кэш выключен - 47.5МБайт/сек


Это именно скорость копирования (чтение + запись).

UPD: Скорость работы при включенном кэше близка к той, что получается у Вас: 58.9 * 2 = 117.8

А что за проц? RM9200?
Вот у вас показания реальные, скорость повышается но не в 4 раза smile.gif
Может это особенности работы архитектуры xscale с памятью?
aaarrr
Цитата(AlexBoy @ Jan 22 2007, 17:27) *
А что за проц?

CirrusLogic EP9312. На RM9200 должно получиться меньше.

Цитата(AlexBoy @ Jan 22 2007, 17:27) *
Может это особенности работы архитектуры xscale с памятью?

Провел сейчас эксперимент: выключил кэширование программы, получилась скорость 14.66МБайт/сек, что близко к вашим 27.
Похоже, что программа (или memcpy) у Вас не из SRAM выполняется.
AlexBoy
Цитата(aaarrr @ Jan 22 2007, 16:54) *
Провел сейчас эксперимент: выключил кэширование программы, получилась скорость 14.66МБайт/сек, что близко к вашим 27.
Похоже, что программа (или memcpy) у Вас не из SRAM выполняется.


a14.gif a14.gif a14.gif
Исполняется то из SRAM, но icache похоже всетаки не включился, т.к. я его выключил, а скорость не изменилась. Возможно потому, что я заливаю через jtag, а отладчик использует для себя mini-cache и мешает нормальной работе. Завтра попробую зашить во флеш и запустить без отладчика.
AlexBoy
Цитата(aaarrr @ Jan 22 2007, 16:54) *
[Похоже, что программа (или memcpy) у Вас не из SRAM выполняется.


Написал еще один тест, теперь все работает. Кстати попробуйте у себя его прогнать, интересно сравнить результаты.

*** DhryStone Test
NO MMU & I+D Caches Disabled
14708 Dhrystone per second
NO MMU & BTB Enabled
15162 Dhrystone per second
NO MMU & I Cache Enabled
42584 Dhrystone per second ---> кеш инструкций работает
MMU & I,D Caches Enabled
541667 Dhrystone per second

*** Memory Speed Test
Block 1Kb, Speed 799996 Kb/s
Block 2Kb, Speed 971952 Kb/s
Block 4Kb, Speed 1094714 Kb/s
Block 8Kb, Speed 1168492 Kb/s
Block 16Kb, Speed 925915 Kb/s ---> кеш данных 32Кб
Block 32Kb, Speed 118631 Kb/s
Block 64Kb, Speed 118828 Kb/s
...
Block 32768Kb, Speed 118938 Kb/s
Rail-to-Rail
Я тоже бъюсь с PXA270 точнее с его кэшем.. Нужно как-то включить cache lockdown. Прочитал докумантацию вдоль и поперек - и ничего за что зацепиться. Ассемблерные функции из мануала напрочь завешивают систему.

Может кто-нибудь использовал этот режим и знает как? Мне перформанс нужно повышать и основная проблема в доступе к памяти.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.