Архив по этикетке: asm

Дек 24 2015

Небольшое тестирование TSX

Производительность в миллионах операций в секунду различных алгоритмов в однопоточном режиме.

Некоторое время назад ко мне в руки попал компьютер на базе Intel XEON D-1540 с поддержкой расширения TSX. Я давно уже хотел устроить хотя бы небольшое тестирование этого расширения, т.к. оно выглядит крайне интересно. Причём интерес вызывает как “бесплатная оптимизация” многопоточных приложения через HLE-префиксы (тем более что она не ломает обратную совместимость кода), так и …

Читать далее »

Ноя 11 2013

SHLD/SHRD или сказ о том, как я “Intel® 64 and IA-32 Architectures Software Developer’s Manual” читал

Периодически, когда у меня выдаётся несколько свободных минут, но их маловато чтобы сделать что-то полезное, я убиваю время чтением “Intel® 64 and IA-32 Architectures Software Developer’s Manual”. И вот позавчера, во время очередного такого чтения, я наткнулся на описание инструкций SHLD/SHRD. Уж не знаю как я их до этого не замечал, но факт остаётся фактом …

Читать далее »

Авг 24 2013

Переработал пул сообщений в CSO

В рамках подготовки к релизу CFW 0.2 проводил провожу переработку CSO. Во время выделения глобального пула сообщений в отдельный файл решил попробовать переписать его на asm`е. Сам по себе пул вроде не сложный, так что по идеи компилятор должен выдавать более-менее приличный код. Простейший тест в котором каждый поток сначала выделял, а потом освобождал 32768 …

Читать далее »

Июн 08 2012

Обновление модуля RSA-шифрования в нашем фреймфорке

Модуль RSA-шифрования нашей библиотеки CFW (CatFrameWork) был разработан более 2-х лет назад и с тех пор не использовался. Мне достоверно неизвестно когда в него закралась ошибка (тогда еще в библиотеку не ввели юнит тесты с их обязательной проверкой перед каждым комитом в SVN) однако генерацию ключей не работала и падала с исключением непонятной природы.Сейчас же, …

Читать далее »

Дек 16 2011

Векторизация, векторизация и еще раз… о пользе новых инструкций

Сегодня проводил переработку старой версии “сохранялки скриншотов”. Задача в общем-то простая: есть картинка в формата DXGI_FORMAT_R10G10B10A2_UNORM, нужно сохранить её в *.bmp файл. Естественно по мимо того, что строки в bmp идут снизу вверх, он знать не хочет не про какой формат DXGI_FORMAT_R10G10B10A2_UNORM и его требуется конвертировать в B8G8R8 (да-да, 3 байта на пиксель ещё и …

Читать далее »

Окт 30 2011

Lock-free hash-table (с открытой адресацией)

Взялся сегодня адаптировать старую реализацию сабжа под новые требования кэша ресурсов движка (теперь требуются таблицы не только статического, но и динамического размера). Беглый осмотр кода сразу выявил наличие явно отвратительных мест в виде лишних вызовов interlocked-функций в некоторых сценариях. Посмотрев на сравнительно небольшой размер функций решил переписать всё на asm. Результат не может не радовать: …

Читать далее »