Битва процессорных архитектур: 32 vs 64 vs MMX

для раздела Блоги

Данное тестирование я хотел провести еще в 2006 году. В то время мне хотелось сравнить, насколько оптимизация MMX увеличит скорость вычисления хеша SHA512. Задача оказалась невыполнима - на тот момент у меня был компьютер на базе процессора Athlon XP, у которого отсутствовал набор инструкций SSE2. Это не позволяло реализовать данный алгоритм в полной мере. Почему в Intel решили реализовать операцию сложения 64-х битных MMX регистров только в SSE2 - загадка. Ну а о 64 битном процессоре как-то даже и не задумывался – тогда в домашних условиях это было ни к чему. Сегодня же есть полная возможность провести этот заброшенный в долгий ящик эксперимент.
Я не буду в деталях описывать алгоритм SHA512. Единственное, что следует знать непосвященному в тонкости читателю, это факт, что все операции в данном алгоритме производятся над 64-битными числами. (Пытливым умам нажимать сюда). Этот алгоритм будет явно выполнятся быстрее именно на 64-х битной архитектуре, поскольку 32-х разрядному процессору необходимо будет проводить все эти вычисления по частям – сначала с первой половиной числа потом со второй. Для 64-разрядного процессора это родная стихия, поэтому победитель в данной гонке заранее определен. Вопрос только насколько быстрее.
Но мы дадим 32 битной архитектуре шанс. Для эксперимента я переписал на ассемблере все основные вычислительные блоки алгоритма с использование инструкций MMX. Это позволило снизить вычислительные издержки за счет 64-битных «костылей» сопроцессора. То есть MMX дает возможность выполнять операции над 64-битными числами не хуже нативной 64-х битной архитектуры (естественно с оговорками).
А на закуску проверим, насколько MMX в 64-х битном режиме может соперничать с нативной 64-битной архитектурой.
Начнем с описания условий проведения тестирования.
Аппаратная часть:


  • Процессор: Phenom II X6 1055Т, на штатной частоте 2.8GHz, TurboCore включен;


  • Память: Kingston HyperX 4x2Gb @ 1666MHz 9-9-9-24 2T.


  • Остальная конфигурация значения не имеет.


Программная часть:


  • Компилятор: FreePascal 2.6.2 (32 и 64 разрядные версии);


  • Windows 8 - 64bit;


  • Программа-бенчмарк.


 Алгоритм работы программы простой: в оперативной памяти заполняется буфер размером 1 гигабайт. Паттерн - символ $AD. Далее выполняется расчет хеша по алгоритму SHA512.
Сам бенчмарк реализован в следующих версиях:


  • 32 битный нативный код;


  • 32 битный код с MMX;


  • 64 битный нативный код;


  • 64 битный код с MMX.


До полной объективности не хватает только выполнения 32-битных тестов под 32-х разрядной ОС, но я на этом заморачиваться не буду.
Итак, бенчмарки отработали. Можно на них полюбоваться :) Я выполнил несколько прогонов и в среднем скорость вычисления плавала в пределах 20 мс, что для данного эксперимента некритично. 
SHA512 demo benchmark - 32 bit vs 64 bit vs MMX
Результаты тестирования:



















Архитектура


32 бита


64 бита


32 бита + MMX


64 бита + MMX


Время выполнения, мс


32870


10873


25272


15928

64-х битная архитектура на оптимальном для нее алгоритме работает почти в 3 раза быстрее, чем 32-х битная. Впечатляет!
Оптимизация MMX дает 32-х битной архитектуре 30% прироста – неплохо! Но преимущества 64-битного процессора очевидны.
Что касается MMX на 64 битном процессоре – здесь наоборот падение на те же 30%. Вычисления 64-х разрядных чисел силами MMX на 64-х битном процессоре явно нелогично. Видимо MMX в режиме 64-бит остался как атавизм или дань совместимости. Но оставим это на совесть архитекторам :)
Итоги в рамках данного эксперимента получились предсказуемыми, но тем не менее интересные.
В заключение хотелось бы только отметить, что в те времена, когда шли дебаты о целесообразности 64-х битной архитектуры, один из аргументов в пользу 64-х бит был в эффективном ускорении криптографических  алгоритмов (от которых обывателю ни холодно, ни жарко :). Так что данный факт можно считать практически подтвержденным.
P.S. Если кому интересно прогнать эти тесты на своей машине – пишите в личку, дам ссылку на архивы. В паблик не выкладываю, т.к. не хочется писать всяческие дисклаймеры. Да еще и в нагрузку Avast на exe-шники заругался. Так что не буду пугать публику :)
Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Оценитe материал
рейтинг: 1.0 из 5
голосов: 2

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают