tocha 0 3 декабря, 2009 Опубликовано 3 декабря, 2009 · Жалоба P.S. LDR выполняется 3 такта. почему три? по документации один вроде, если результат не используется на следующем такте и не модифицируется смещение. или я - неправ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
klen 1 3 декабря, 2009 Опубликовано 3 декабря, 2009 · Жалоба мое мнение - 1 лапка + 1 осцилограф реальное время Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 1 3 декабря, 2009 Опубликовано 3 декабря, 2009 · Жалоба мое мнение - 1 лапка + 1 осцилограф реальное время Да так можно померять только короткую опреацию - на несколько тактов ядра! То что подлиннее будет не точно! Проще встроенным таймером на частоте ядра, или если совсем длинное чтото с прескалером. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 3 декабря, 2009 Опубликовано 3 декабря, 2009 · Жалоба почему три? по документации один вроде, если результат не используется на следующем такте и не модифицируется смещение. или я - неправ? По документации - S+N+I (+S+N if R15 loaded), т.е. 3 или 5 тактов. P.S. Пардон, речь о Cortex-M3? Тогда вы отчасти правы, но один такт это все равно исключение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 1 3 декабря, 2009 Опубликовано 3 декабря, 2009 · Жалоба По документации - 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). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 3 декабря, 2009 Опубликовано 3 декабря, 2009 · Жалоба А я вроде мерял на ARM7 LPC - 2 такта получалось. На ARM7 STR - 2, LDR - 3/5. B - тоже 3, так что должно было получится 7 тактов у вашего цикла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 1 3 декабря, 2009 Опубликовано 3 декабря, 2009 · Жалоба B - тоже 3, так что должно было получится 7 тактов у вашего цикла. На ARM7 уже давно измерял, наверное там полный регистр FIO использовал 32 бита. Но вот на Cortex-M3 точно байтовый - меня и поразила скорость, подумал было что PLL слишком сильно разогнал :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 4 декабря, 2009 Опубликовано 4 декабря, 2009 (изменено) · Жалоба Да так можно померять только короткую опреацию - на несколько тактов ядра! То что подлиннее будет не точно! Проще встроенным таймером на частоте ядра, или если совсем длинное чтото с прескалером. Logic Analyzer. У tech-tools удобный для таких измерений -- разрешение 10нс, а периоды можно мерять хоть 1 час хоть 10. самые полезные 500 баксов которые я когда либо потратил на иструменты. Изменено 4 декабря, 2009 пользователем ar__systems Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 4 декабря, 2009 Опубликовано 4 декабря, 2009 (изменено) · Жалоба Я запускаю Keil Simulator, ставлю брейкпоин на нужную мне функцию, открываю Performance Analyzer и вижу в нем Calls, Time(Sec), Time(%). Следовательно, могу померять только время. А где можно посмотреть Cycles? У меня uVision V3.62c, MDK 3.22a Подскажите пожалуйста, куда глянуть что б увидеть результат по тактам. Запускаете отладку, внизу, в статусе, ближе к правому краю t1: ... Жмете правой кнопкой мыши... наводите мышь... А время в такты перевести сможете, вы же частоту генератора знаете. Правда, у меня Keil 4.0 Изменено 4 декабря, 2009 пользователем ViKo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tocha 0 16 декабря, 2009 Опубликовано 16 декабря, 2009 · Жалоба А.. , так у вас притензии к Performance Analyzer-у Keil-а. Смотрите описание команды командной строки Keil-а - PerformanceAnalyze Открываю mVision3 v3.62с - Смотрю описание PerformanceAnalyze и вижу сноску что команда не доступна в arm симуляторе. Я правильно понимаю, что в симуляторе (без железа) кол-во тактов ядра на выполнение куска кода подсчитать невозможно или я не прав? Если неправ, ткните где написано, как это сделать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться