Доброго времени суток всем. Поделитесь информацией о латентности операций, конкретно интересует на сколько операция MOV память->регистр длительней таких операций как MOV регистр-> регистр , SHR, SHL, XOR AND....
Эх, хотелось бы ошибиться, но похоже на очередной наив Самое верное это послать к (перво)источникам - мануалам по оптимизации от AMD, Intel и к instruction tables Агнера Фога. Для целочисленных mov загрузка из памяти дольше пересылки регистр-регистр примерно на величину латентности доставки данных из соответствующего уровня памяти. Для кэша L1 разница составляет ~2 такта для P6, AMD и первых P4, и ~4 тактов для P4E. Но из-за конвееризации и внеочередного исполнения команд в основном рулит не латентность, а пропускная способность - на AMD могут выполняться одновременно две независимые загрузки за один такт, на пеньках по одной каждый такт
Ну где-то возможно Вы и правы Я в асме действительно начинающий, и столкнуться пришлось вот по какой причине - есть такая програмка от ELCOMsoft ARPR для брут форса rar. Так вот они используют MMX и SSE и обгоняют то что у меня есть сейчас ровно в два раза, однако переписав треть кода одной из проблеммных процедур производительность не возросла практически. И как мне кажется связано это в основном с тем что я не уменишил количесто обращений к памяти а в них как раз (еще раз как мне кажется) и кроется медлительность. Тут у меня родилась идея распихать все мои даннные по регистрам MMX и SSE и вообще не обращаться к памяти в процессе вычислений, однако для того чтоб достать DWORD из старшей половины регистра ММХ у меня уходит 3 операции(может просто пока слабо знаком с MMX) так вот отсюда вопрос может я зря ето щас переписываю в таком ключе, может тож на тож и выйдет.
Конечно может, вопрос как этого добится. на счет тож на тож, это сравнение двух подходов, с использованием памяти и без нее, я пока ищу в чем проблемма.. Но с пасибо за ссылку от leo, похоже на то что если не трогать память будет по быстрей... однако будет видно через пару дней.