Есть ли у концепции объединения двух разных элементов данных путем хранения их в одной переменной? - PullRequest
2 голосов
/ 29 июля 2009

Например, если у меня есть 64-битная переменная и я храню в ней два 32-битных элемента данных, возможно, для целей SIMD-обработки, есть ли имя для описания логического соединения этих двух элементов данных?

Мой коллега предлагает "Гибридная муфта", это широко используемый термин?

Чтобы уточнить: мы придерживаемся концепции более высокого уровня, чем конкретные реализации. Скажем, например, на языке, подобном Си, у нас есть две структуры:

struct CoupledData
{
    uint64 x_and_y; // x is stored in the top 4 bytes, y in the bottom 4
}

struct UncoupledData
{
    uint32 x;
    uint32 y;
}

Независимо от причин, существует неявная связь между элементами данных x и y в CoupledData, которая не существует в UncoupledData. Есть ли термин, который описывает эту связь между х и у?

Ответы [ 2 ]

5 голосов
/ 29 июля 2009

Я всегда называл это "упаковкой". Вы упаковываете R, G, B и альфа-байты в длинный.

pixel=(a<<24)+(r<<16)+(g<<8)+b;

Вот справочник для инструкций SIMD, в частности (из MMX / SSE):

ADDPS: Добавить упакованный FP одинарной точности Значения

CMPccPS: упакованная одинарная точность FP Сравнить

0 голосов
/ 29 июля 2009

В мире c его называют союзом

«Объявление объединения» определяет набор значений переменных и, необязательно, тег с именем объединения. Значения переменных называются «членами» объединения и могут иметь разные типы. Союзы похожи на "вариант записи" на других языках

Переменная с типом объединения хранит одно из значений, определенных этим типом. Те же самые правила управляют структурой и объединениями. Союзы также могут иметь битовые поля.

В его примере у вас будет такой псевдокод:

union 32_64 {

64_bit_specifier sixty_four;
32_bit_specifier thirty_two;

}

...