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

 
 
 
Reply to this topicStart new topic
> Такты инструкций условного выполнения
Grizzzly
сообщение Apr 3 2018, 17:59
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



До конца нет полного понимания, что происходит, когда инструкция условного выполнения не выполняется. Она заменяется на nop или вообще ничего в данный момент не выполняется, экономя 1 такт?
На сайте ARM есть примерчик: http://infocenter.arm.com/help/index.jsp?t...ch02s05s04.html
Напротив подобных команд написано в столбце циклов: 1 (not executed).
Допустим, есть еще более простой пример:
Код
if (a>0)
{
    b += c;
}


Это сводится к двум командам:
Код
CMP ...
ADD<> ...


Каждая из команд выполняется за такт. При выполнении условия (a > 0) будет затрачено 2 такта. Что будет, когда условие окажется ложным? Сама команда ADD<> не выполнится. В итоге 1 такт или 2 такта (с учетом nop) будут затрачены?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 3 2018, 18:52
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Там два разных примера и смысл там, насколько я понимаю, такой:
Первый пример - традиционный с условным переходом, где каждая ветка имеет свои уникальные инструкции, помимо общих инструкций проверки условия и условного перехода.
Второй пример - линейный с использованием условного выполнения на стадии каждой инструкции и если инструкция не нужна, она трактуется как NOP и выполняется за 1 такт - чудес не бывает))).

Второй лучше тем, что линейный и не требует перезагрузки конвейера, как в случае с переходом, а так же не тратит время на сам переход.
Первый лучше тем, что работает на всех ARM Cortem-M, включая M0.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Apr 3 2018, 19:29
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(demiurg_spb @ Apr 3 2018, 21:52) *
она трактуется как NOP и выполняется за 1 такт - чудес не бывает))).

Ясно, спасибо. Хотел уточниться sm.gif
Обычно для условий, после которых до 3 простых инструкций идет, рекомендуют в умных книжках использовать условное выполнение.
К сожалению, в очередной раз приходится решать задачу по прогнозированию числа требуемых тактов на алгоритм сигнальной обработки. Неблагодарное дело. Умозрительно всё не учтешь. С сигнальниками сравнивал STM32 F7. Зато, может, научусь умным вещам, разбираясь с тонкостями sm.gif Так-то не каждый день приходится вникать в такое.
Go to the top of the page
 
+Quote Post

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

 


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


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