newsare.net
В наборе команд AVX-512 были представлены восемь так называемых масочных регистров [1] – с k0 [2] по k7. Они пригодны для использования с большинство[Перевод] О масочных регистрах
В наборе команд AVX-512 были представлены восемь так называемых масочных регистров [1] – с k0 [2] по k7. Они пригодны для использования с большинством операций АЛУ и позволяют выполнять операции по маске над элементами векторов с обнулением или слиянием данных в регистре-приёмнике [3], тем самым ускоряя работу кода, что в наборе команд AVX2 и более ранних версиях потребовало бы дополнительных операций слияния. Если написанного выше недостаточно, чтобы сделать из вас последователя культа масочных регистров, процитирую отрывок из статьи на Википедии, который, я надеюсь, поможет вам окончательно во всём разобраться: Большинство команд AVX-512 могут использовать операнд-маску, соответствующий одному из 8 масочных регистров (k0–k7). Если масочный регистр используется в качестве маски операции, регистр k0 ведёт себя иначе, чем остальные масочные регистры: в этом случае он выполняет роль жёстко закодированной константы, указывающей, что с данной операцией маска не применяется. Однако в арифметических и логических операциях и при записи значения в масочные регистры k0 ведёт себя как обычный рабочий регистр. В большинстве команд масочные регистры используются в качестве маски, определяющей, какие элементы должны записываться в выходной регистр. Поведение операнда-маски зависит от флага: если он выставлен, все невыбранные элементы будут обнулены (режим «обнуления», zero), если нет – все невыбранные элементы сохраняют прежнее состояние (режим «слияния», merge). Режим слияния даёт тот же эффект, что команды слияния (blend instructions). В общем масочные регистры [4] – важное нововведение, но о них редко вспоминают в отличие, скажем, от регистров общего назначения (eax, rsi и прочих) или SIMD-регистров (xmm0, ymm5 и т.д.). В презентациях Intel, где приводятся размеры ресурсов микроархитектуры, масочные регистры не упоминаются: Читать дальше → Read more