Некоторое время назад ко мне в руки попал компьютер на базе Intel XEON D-1540 с поддержкой расширения TSX. Я давно уже хотел устроить хотя бы небольшое тестирование этого расширения, т.к. оно выглядит крайне интересно. Причём интерес вызывает как “бесплатная оптимизация” многопоточных приложения через HLE-префиксы (тем более что она не ломает обратную совместимость кода), так и …
Архив по этикетке: ассемблер
Авг 24 2013
Переработал пул сообщений в CSO
В рамках подготовки к релизу CFW 0.2 проводил провожу переработку CSO. Во время выделения глобального пула сообщений в отдельный файл решил попробовать переписать его на asm`е. Сам по себе пул вроде не сложный, так что по идеи компилятор должен выдавать более-менее приличный код. Простейший тест в котором каждый поток сначала выделял, а потом освобождал 32768 …
Дек 16 2011
Векторизация, векторизация и еще раз… о пользе новых инструкций
Сегодня проводил переработку старой версии “сохранялки скриншотов”. Задача в общем-то простая: есть картинка в формата DXGI_FORMAT_R10G10B10A2_UNORM, нужно сохранить её в *.bmp файл. Естественно по мимо того, что строки в bmp идут снизу вверх, он знать не хочет не про какой формат DXGI_FORMAT_R10G10B10A2_UNORM и его требуется конвертировать в B8G8R8 (да-да, 3 байта на пиксель ещё и …
Окт 30 2011
Lock-free hash-table (с открытой адресацией)
Взялся сегодня адаптировать старую реализацию сабжа под новые требования кэша ресурсов движка (теперь требуются таблицы не только статического, но и динамического размера). Беглый осмотр кода сразу выявил наличие явно отвратительных мест в виде лишних вызовов interlocked-функций в некоторых сценариях. Посмотрев на сравнительно небольшой размер функций решил переписать всё на asm. Результат не может не радовать: …