Я использую расширения SSE, доступные в процессоре Core2Duo (компилятор gcc 4.4.1). Я вижу, что доступно 16 регистров, каждый из которых имеет длину 128 бит. Теперь я могу разместить 4 целочисленных значения в одном регистре и 4 в другом регистре и, используя встроенные функции, могу добавить их в одну инструкцию. Очевидным преимуществом является то, что мне требуется только 1 инструкция вместо 4.
У меня вопрос: «Это все для SIMD?». Пусть у меня есть a1, a2, a3, a4, a5, a6, a7, a8 и b1, b2, b3, b4, b5, b6, b7, b8. Пусть A1, A2 - векторные регистры. Теперь операции сложения векторов будут выполняться с помощью A1 ‹** (a1, a2, a3, a4) и B1 ‹** (b1, b2, b3, b4) и add (A1, B1).
Обозначим A2 ‹*** (a5, a6, a7, a8), B2 ‹*** (b5, b6, b7, b8). Есть ли инструкция добавления, которая может добавлять (A1, B1) и добавлять (A2, B2) одновременно.
Сколько векторных функциональных модулей доступно в core2duo и где я могу получить эту информацию?
Мы высоко ценим любые другие источники информации, относящиеся к ним.