-
- Понятно, что если сделать И с маской, а потом "сдвинуть биты в кучу", то искомые 8 бит и получатся. Я просто решил порисечить вопрос в общем виде. - Evgeny_CD(01.12.2011 09:58 - 10:07)
- Отчасти понятно, как это сделать на практике. И с маской, сдивнуть биты в кучу, указатель на что-то по массиву размерностью 256. Реально, что стоит оптмизировать, это алгоритм сдвигания битов в кучу. Evgeny_CD(604 знак., 01.12.2011 10:37)
- Интересно, как там в SIMD (*SSE*) с логическими операциями и сдвигами? 8-way SIMD в грядущих процах сильно бы ускорил решение задачи. И даже 4 way. Evgeny_CD(174 знак., 01.12.2011 10:48)
- С целочисленкой в MMX/3DNow!/SSEx довольно неровно. С одной стороны 3 оп за такт, с другой стороны многие команды отсутствуют как класс. Но ты и не мечтай, что оно тебе что-то ускорит, т.к. SIMD это одна операция над разными =AlexD=(24 знак., 01.12.2011 11:39)
- А что, там нет команды клонировать один 32 битный операнд (как часть 128 битного слова) в 4 ячейки 128 битного операнда? Маски константны, один раз загрузил в стек и все. Результаты выгрузил, процессор видит это как массив, делает переход по Evgeny_CD(60 знак., 01.12.2011 11:47)
- Не, ну если нужно наложить разные маски на одно слово, то это можно устроить. Нельзя к примеру одновременно сдвиг и AND в одном 128битном слове. =AlexD=(286 знак., 01.12.2011 12:57)
- +1. Книжки по SSE и асму поставлны на скачивание. Разные маски на одно слово сильно ускорят. Т.е. по первой маске мы определяем команду и переходим на ее обработчик. Обработчик берет результат второй маски (а не тратит время на накладываение своей Evgeny_CD(279 знак., 01.12.2011 13:21)
- Какие ещё книжки? Лично мне хватало интеловского описания набора инструкция и поддержки интринсиков в MS VC. - =AlexD=(01.12.2011 19:20)
- +1. Книжки по SSE и асму поставлны на скачивание. Разные маски на одно слово сильно ускорят. Т.е. по первой маске мы определяем команду и переходим на ее обработчик. Обработчик берет результат второй маски (а не тратит время на накладываение своей Evgeny_CD(279 знак., 01.12.2011 13:21)
- Не, ну если нужно наложить разные маски на одно слово, то это можно устроить. Нельзя к примеру одновременно сдвиг и AND в одном 128битном слове. =AlexD=(286 знак., 01.12.2011 12:57)
- А что, там нет команды клонировать один 32 битный операнд (как часть 128 битного слова) в 4 ячейки 128 битного операнда? Маски константны, один раз загрузил в стек и все. Результаты выгрузил, процессор видит это как массив, делает переход по Evgeny_CD(60 знак., 01.12.2011 11:47)
- Это еще в MMX было, как оказывается! -> - Evgeny_CD(01.12.2011 10:56, ссылка)
- С целочисленкой в MMX/3DNow!/SSEx довольно неровно. С одной стороны 3 оп за такт, с другой стороны многие команды отсутствуют как класс. Но ты и не мечтай, что оно тебе что-то ускорит, т.к. SIMD это одна операция над разными =AlexD=(24 знак., 01.12.2011 11:39)
- Интересно, как там в SIMD (*SSE*) с логическими операциями и сдвигами? 8-way SIMD в грядущих процах сильно бы ускорил решение задачи. И даже 4 way. Evgeny_CD(174 знак., 01.12.2011 10:48)
- Как насчёт связки таблиц КОП->УСЛОВИЯ(ФЛАГИ)->РЕГИСТРЫ? Понятно - это таже "многоуровневая разборка", но и полином не на раз считается. Ну а быстрее одномерной таблицы ИМХО не выдет. - Chum_A(01.12.2011 10:10)
- краудсорсите :-) - amusin(01.12.2011 10:09)
- Раньше это "скомуниздили" называось :) - Evgeny_CD(01.12.2011 10:25)
- Раньше это называлось "субботник" :-) - Shura(01.12.2011 10:28)
- Раньше это "скомуниздили" называось :) - Evgeny_CD(01.12.2011 10:25)
- Отчасти понятно, как это сделать на практике. И с маской, сдивнуть биты в кучу, указатель на что-то по массиву размерностью 256. Реально, что стоит оптмизировать, это алгоритм сдвигания битов в кучу. Evgeny_CD(604 знак., 01.12.2011 10:37)
- +много. - SciFi(01.12.2011 09:48)
- Понятно, что если сделать И с маской, а потом "сдвинуть биты в кучу", то искомые 8 бит и получатся. Я просто решил порисечить вопрос в общем виде. - Evgeny_CD(01.12.2011 09:58 - 10:07)