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

P.S. LDR выполняется 3 такта.

почему три?

по документации один вроде, если результат не используется на следующем такте и не модифицируется смещение.

или я - неправ?

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


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

мое мнение - 1 лапка + 1 осцилограф

реальное время

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


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

мое мнение - 1 лапка + 1 осцилограф

реальное время

Да так можно померять только короткую опреацию - на несколько тактов ядра! То что подлиннее будет не точно! Проще встроенным таймером на частоте ядра, или если совсем длинное чтото с прескалером.

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


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

почему три?

по документации один вроде, если результат не используется на следующем такте и не модифицируется смещение.

или я - неправ?

По документации - S+N+I (+S+N if R15 loaded), т.е. 3 или 5 тактов.

 

P.S. Пардон, речь о Cortex-M3? Тогда вы отчасти правы, но один такт это все равно исключение.

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


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

По документации - S+N+I (+S+N if R15 loaded), т.е. 3 или 5 тактов.

А я вроде мерял на ARM7 LPC - 2 такта получалось.

 

Кстати если работать с FAST IO у LPC эти регистры прямо к ядру подключены то на ARM7 цикл

while(1) {
FIO0SET0 = 1;
FIO0CLR0 = 1;
}

выполняетя 6 таков - по 2 такта STR и 2 такта branch

а вот на LPC1700 уже за 4 такта - по 1 такту STR и 2 такта branch, потому что если добавить еще пару SET CLR - то цикл становится 6 тактов. (причем мерял на 100 Mhz частоте, но код был из RAM).

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


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

А я вроде мерял на ARM7 LPC - 2 такта получалось.

На ARM7 STR - 2, LDR - 3/5.

 

B - тоже 3, так что должно было получится 7 тактов у вашего цикла.

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


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

B - тоже 3, так что должно было получится 7 тактов у вашего цикла.

На ARM7 уже давно измерял, наверное там полный регистр FIO использовал 32 бита.

Но вот на Cortex-M3 точно байтовый - меня и поразила скорость, подумал было что PLL слишком сильно разогнал :)

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


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

Да так можно померять только короткую опреацию - на несколько тактов ядра! То что подлиннее будет не точно! Проще встроенным таймером на частоте ядра, или если совсем длинное чтото с прескалером.

Logic Analyzer. У tech-tools удобный для таких измерений -- разрешение 10нс, а периоды можно мерять хоть 1 час хоть 10. самые полезные 500 баксов которые я когда либо потратил на иструменты.

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

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


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

Я запускаю Keil Simulator, ставлю брейкпоин на нужную мне функцию, открываю Performance Analyzer и вижу в нем

Calls, Time(Sec), Time(%). Следовательно, могу померять только время. А где можно посмотреть Cycles?

У меня uVision V3.62c, MDK 3.22a

 

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

 

Запускаете отладку, внизу, в статусе, ближе к правому краю t1: ...

Жмете правой кнопкой мыши... наводите мышь... А время в такты перевести сможете, вы же частоту генератора знаете.

Правда, у меня Keil 4.0

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

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


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

А.. , так у вас притензии к Performance Analyzer-у Keil-а. :biggrin:

Смотрите описание команды командной строки Keil-а - PerformanceAnalyze

Открываю mVision3 v3.62с - Смотрю описание PerformanceAnalyze и вижу сноску

что команда не доступна в arm симуляторе.

 

 

Я правильно понимаю, что в симуляторе (без железа) кол-во тактов ядра на выполнение куска кода подсчитать невозможно или я не прав?

Если неправ, ткните где написано, как это сделать.

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


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

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

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

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

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

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

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

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

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

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