Оптимизация кода, латентность операций.

Тема в разделе "WASM.BEGINNERS", создана пользователем Jhonny, 17 авг 2007.

  1. Jhonny

    Jhonny New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2007
    Сообщения:
    26
    Доброго времени суток всем.

    Поделитесь информацией о латентности операций, конкретно интересует на сколько операция
    MOV память->регистр длительней таких операций как MOV регистр-> регистр , SHR, SHL, XOR AND....
     
  2. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Эх, хотелось бы ошибиться, но похоже на очередной наив ;)
    Самое верное это послать к (перво)источникам - мануалам по оптимизации от AMD, Intel и к instruction tables Агнера Фога.
    Для целочисленных mov загрузка из памяти дольше пересылки регистр-регистр примерно на величину латентности доставки данных из соответствующего уровня памяти. Для кэша L1 разница составляет ~2 такта для P6, AMD и первых P4, и ~4 тактов для P4E. Но из-за конвееризации и внеочередного исполнения команд в основном рулит не латентность, а пропускная способность - на AMD могут выполняться одновременно две независимые загрузки за один такт, на пеньках по одной каждый такт
     
  3. Jhonny

    Jhonny New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2007
    Сообщения:
    26
    Ну где-то возможно Вы и правы :)

    Я в асме действительно начинающий, и столкнуться пришлось вот по какой причине - есть такая програмка от ELCOMsoft ARPR для брут форса rar. Так вот они используют MMX и SSE и обгоняют то что у меня есть сейчас ровно в два раза, однако переписав треть кода одной из проблеммных процедур производительность не возросла практически. И как мне кажется связано это в основном с тем что я не уменишил количесто обращений к памяти а в них как раз (еще раз как мне кажется) и кроется медлительность. Тут у меня родилась идея распихать все мои даннные по регистрам MMX и SSE и вообще не обращаться к памяти в процессе вычислений, однако для того чтоб достать DWORD из старшей половины регистра ММХ у меня уходит 3 операции(может просто пока слабо знаком с MMX) так вот отсюда вопрос может я зря ето щас переписываю в таком ключе, может тож на тож и выйдет.
     
  4. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    у них в 2 раза быстрее работает. почему у вас не может?
     
  5. Jhonny

    Jhonny New Member

    Публикаций:
    0
    Регистрация:
    10 авг 2007
    Сообщения:
    26
    Конечно может, вопрос как этого добится.
    на счет тож на тож, это сравнение двух подходов, с использованием памяти и без нее, я пока ищу в чем проблемма.. Но с пасибо за ссылку от leo, похоже на то что если не трогать память будет по быстрей... однако будет видно через пару дней.