Приветствую всех! Конечно, может быть этот вопрос уже звучал на форуме (приношу извинения администратору), но не мог бы мне кто-нибудь объяснить, не вдаваясь в подробности, что такое SEE, SEE2 и MMX? Еще хотелось бы узнать, как это всё использовать. Буду очень благодарен!
Если не пугает аглицкий, то например вот: http://en.wikipedia.org/wiki/MMX и еще (эт меня самого носом ткнули http://codenet.ru/progr/optimize/simd.php это даже по-русски. А если вкратце - набор векторных инструкций, то есть таких, что позволяют производить операции типа a[0] = b[0] + c[0]; a[1] = b[1] + c[1]; a[2] = b[2] + c[2]; a[3] = b[3] + c[3]; одной операцией. при этом MMX - целочисленные, используют регистры сопроцессора, точнее по 64 бита из них (mm0 - mm7) как упакованные 8 байт / 4 слова / 2 двойных слова, SSE - вещественные, single precision, используют отдельные 128-битные регистры (xmm0 - xmm7), каждый как 4 упакованных вещественных числа одинарной точности. SSE2 - целочисленные или вещественные двойной точности в xmm-регистрах. Ну и еще всякие тонкости, например SSE и SSE2 вводят дополнительные команды MMX. А насчет как это использовать... ну как-нибудь
Спасибо огромное. Постараюсь прочитать оба варианта. А на практике такие мудрености часто используют? Просто я никогда ещё не встречал такие команды в прогах.
eretik Это создавалось для Multi-media: потоковая обработка звука, графики, видео. Вот в тех прогах и надо смотреть.
Теперь понятно. Спасибо. А случайно вы не подскажите какую-нибудь такую прогу (только попроще), чтобы я мог на практике изучить эти команды?
eretik У аэмдешек мат. библиотека выложена, вроде оптимизенная под SSE. Врать не буду - у самого еще руки не дошли поковыряться. А вообще лучше почитать что-то типа AMD Athlon™ Processor x86 Code Optimization Guide или Intel'овский аналог - сходу не нашел, к сожалению - там все толково описано, с примерами.
Печально... Мне как раз под Intel надо было. Но ничего. Попробую поискать самостоятельно. Огромное спасибо за помощь. Постараюсь, чтобы ваши старания не пропали даром. Еще раз благодарю за помощь!
Вроде бы нашёл. Не знаю то это или не совсем то, что нужно, но вот ссылка ftp://download.intel.com/design/Pentium4/manuals/24896612.pdf Там вроде есть, то что я искал.
Только с оптимизацией надо аккуратней - инструкции-то у них одинаковые, только архитектура-то разная, поэтому например (это даже не MMX) на Pentium4 Код (Text): push eax push ecx push edx push ebx push esi push edi выполняется быстрее, чем Код (Text): pushad а на Athlon - наоборот. Сам проверял.