Есть ли в 3DNow 128 разрядные регистры(аналог SSE) и что такое 3DNow tm
В документации по процессорам AMD, я нашел информацию о том что вроде бы как AMD поддерживает SSE инструкции и XMM регистры, но попробывав написать код использующий одну из таких инструкций получил ошибку, в чем тут проблема?
Заранее благодарен!
Сталкнулся с такой проблемой! Нужно переписать графическую библиотеку для работы с векторами и матрицами под SSE и 3DNow! В SSE используются 128 битные регистры, а насколько я понял в 3DNow! 64-битные регистры, хотелось бы узнать есть ли у AMD аналог интеловского SSE?
В документации по процессорам AMD, я нашел информацию о том что вроде бы как AMD поддерживает SSE инструкции и XMM регистры, но попробывав написать код использующий одну из таких инструкций получил ошибку, в чем тут проблема?
Заранее благодарен!
Насколько я знаю, AMD использует собственную технологию 3DNow!. По своей сути, дело тут не в том, что у Intel'а 128-мибитные регистры. SIMD-данные все равно представлены 32-х разрядными числами с плавающей запятой. Прикол в том, что SSE-инструкция может выполнить какую-либо операцию над 4-я такими числами за один раз. С другой стороны, 3DNow! может выполнять две инструкции этого набора одновременно. Преимуществом SSE перед 3DNow является использование 8-ми дополнительных 128-миразрядных регистров, тогда как 3DNow! использует регистры FP/MMX, что вынуждает в некоторых случаях сохранять значения регистров, но в то же время не налагает ограничения на одновременное использование 3DNow! и MMX команд. Кроме этого, 3DNow! не может выполнять две одинаковых операции над двумя 64-хразрядными регистрами. Вопрос портирования состоит в оптимизации исходного 3DNow! кода.