Основы быстрого кода

Тема в разделе "WASM.BEGINNERS", создана пользователем Y_Mur, 8 сен 2006.

  1. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    В форуме периодически мелькает неприязнь дзенствующих к циклам и переходам - объясните популярно почему?
    Насколько я понимаю, переход тормозит если он сопровождается кэш-промахом, а если это короткий цикл (т.е. переход назад менее чем на кэш страницу), то промах практически исключён, или что-то не так?
     
  2. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Y_Mur
    Кэш-промахи и тем более подкачка страниц кода с диска это отдельная песня
    А тормоза при непредсказанных переходах возникают за счет конвеерного принципа обработки. Решение о том будет переход или нет принимается в конце конвеера после исполнения инструкции и анализа флагов, поэтому при наличии перехода нужно загрузить новый блок инструкций и дождаться пока они пройдут все стадии конвеера от декодера до исполнительного блока - чем длиннее конвеер, тем больше дырка\пузырь\штраф ;)
    А вообще-то не мешало бы поиском пользоваться, см.например
    предсказания переходов того или иного процессора

    А насчет циклов ты видать чего-то не понял ;) Существует лишь проблема "тонких" циклов, когда затраты на управление циклом сравнимы с задержкой его полезной начинки. Для этого существует стандартный прием - разворот цикла
     
  3. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Leo
    Спасибо за разьяснение про циклы

    А под кэш страницами подразумевались именно страницы кэш, а не страници памяти\файла_подкачки.
     
  4. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Помогите разобраться с Table C-8 IA-32 General Purpose Instructions (continued) в ftp://download.intel.com/design/Pentium4/manuals/24896613.pdf
    Почему под временем ожидания (Latency) и производительностью (Throughput) по 2-3 значения и когда на какое смотреть?
    Или киньте плиз ссылку на таблицу тиков в человечьем виде (если таковая есть в природе), хорошо бы в виде сравниловки для разных процов.
     
  6. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Y_Mur
    Эти цифры относятся к разным моделям процессоров - смотри в начале раздела и номера моделей в начале каждой таблицы. Смотреть ес-но на ту модель, которя интересует ;)
     
  7. Ustus

    Ustus New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2005
    Сообщения:
    834
    Адрес:
    Харьков
    угу, причем иногда с точностью до степпинга :dntknw:((((((((

    Y_Mur
    Мне больше всего понравилось в оформлении Агнера Фога - http://www.agner.org/optimize/ часть 4. Только получить из этих цифирек реальное время выполнения кода может разве что leo :) Это я не издеваюсь, это я завидую.
     
  8. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Ustus
    :lol:
    Оформление и часть 4 это хорошо, но не мешало бы на досуге и всего Фога почитать, чтобы понимать в какое место эти цифирьки можно засунуть :))) Это я не издеваюсь, это я просто размышляю ;)))