Сообщение Re[8]: Rust и экология от 22.02.2022 17:34
Изменено 22.02.2022 17:35 vsb
Re[8]: Rust и экология
Здравствуйте, T4r4sB, Вы писали:
vsb>>Ну и вообще проверки не такие уж и страшные, когда они никогда не срабатывают. Процессор просто их игнорирует и считает дальше. Если сработают — будет медленно. Пока не срабатывают — вообще пофиг, 1 такт это ничто.
TB>Ты хочешь сказать, что предсказать ветвлений позволяет тратить 1 такт при виде инструкции перехода, если по ней ни разу не было перехода во вторую ветку? Я просто не очень в теме, потому и спрашиваю
Я могу ошибаться, но моё понимание такое, что компилятор может "подсказать" процессору путь, по которому программа пойдёт с большей вероятностью. И ничего тут предсказывать не придётся. Если предсказание было неверное, то конвеер остановится, откатится и тд, но пока оно верное, всё будет быстро. тут немного написали, в gcc для этого есть макрос __builtin_expect
vsb>>Ну и вообще проверки не такие уж и страшные, когда они никогда не срабатывают. Процессор просто их игнорирует и считает дальше. Если сработают — будет медленно. Пока не срабатывают — вообще пофиг, 1 такт это ничто.
TB>Ты хочешь сказать, что предсказать ветвлений позволяет тратить 1 такт при виде инструкции перехода, если по ней ни разу не было перехода во вторую ветку? Я просто не очень в теме, потому и спрашиваю
Я могу ошибаться, но моё понимание такое, что компилятор может "подсказать" процессору путь, по которому программа пойдёт с большей вероятностью. И ничего тут предсказывать не придётся. Если предсказание было неверное, то конвеер остановится, откатится и тд, но пока оно верное, всё будет быстро. тут немного написали, в gcc для этого есть макрос __builtin_expect
Re[8]: Rust и экология
Здравствуйте, T4r4sB, Вы писали:
vsb>>Ну и вообще проверки не такие уж и страшные, когда они никогда не срабатывают. Процессор просто их игнорирует и считает дальше. Если сработают — будет медленно. Пока не срабатывают — вообще пофиг, 1 такт это ничто.
TB>Ты хочешь сказать, что предсказать ветвлений позволяет тратить 1 такт при виде инструкции перехода, если по ней ни разу не было перехода во вторую ветку? Я просто не очень в теме, потому и спрашиваю
Я могу ошибаться, но моё понимание такое, что компилятор может "подсказать" процессору путь, по которому программа пойдёт с большей вероятностью. И ничего тут предсказывать не придётся. Если предсказание было неверное, то конвеер остановится, откатится и тд, но пока оно верное, всё будет быстро. тут немного написали, в gcc для этого есть макрос __builtin_expect
На самом деле современные процессоры содержат в себе всякие эвристики и скорей всего такие вещи даже без подсказок будут выполнять быстро. AMD там чуть-ли не простейшие нейросети засовывает.
vsb>>Ну и вообще проверки не такие уж и страшные, когда они никогда не срабатывают. Процессор просто их игнорирует и считает дальше. Если сработают — будет медленно. Пока не срабатывают — вообще пофиг, 1 такт это ничто.
TB>Ты хочешь сказать, что предсказать ветвлений позволяет тратить 1 такт при виде инструкции перехода, если по ней ни разу не было перехода во вторую ветку? Я просто не очень в теме, потому и спрашиваю
Я могу ошибаться, но моё понимание такое, что компилятор может "подсказать" процессору путь, по которому программа пойдёт с большей вероятностью. И ничего тут предсказывать не придётся. Если предсказание было неверное, то конвеер остановится, откатится и тд, но пока оно верное, всё будет быстро. тут немного написали, в gcc для этого есть макрос __builtin_expect
На самом деле современные процессоры содержат в себе всякие эвристики и скорей всего такие вещи даже без подсказок будут выполнять быстро. AMD там чуть-ли не простейшие нейросети засовывает.