Параллелизм, достигаемый за счет работы с независимыми данными.
Наиболее широко используемый вариант SIMD-системы сегодня имеется практически в каждом микропроцессоре и составляет основу сотен MMX- и SSE-инструкций микропроцессора х86 (см. главу 2). Эти инструкции были добавлены для повышения производительности мультимедийных программ, и дают возможность оборудованию располагать множеством одновременно работающих Л Л У, или, что одно и то же, поделить одно широкое АЛ У на множество параллельных, меньших по размеру АЛ У, работающих одновременно. Например, один и тот же компонент оборудования можно рассматривать как одно 64-разрядное АЛУ, или как два 32-разрядных АЛ У, или как четыре 16-разрядных АЛ У, или как восемь 8-разрядных АЛУ. Загрузки и сохранения имеют просто такую же ширину, как и самое широкое АЛУ, поэтому программист может относиться к одним и тем же инструкциям передачи данных как к передаче 64-разрядных элементов данных, либо двух 32-разрядных элементов данных, либо четырех 16-разрядных элементов данных, либо восьми 8-разрядных элементов данных.
Этот очень дешевый параллелизм для ограниченных целочисленных данных послужил исходным толчком для создания инструкций ММХ семейства процессоров х86. Под влиянием закона Мура к этим мультимедийным расширениям было добавлено еще больше оборудования, и теперь инструкции SSE2 поддерживают одновременное выполнение действий сразу над двумя 64-разрядными числами с плавающей точкой.
Ширина операции и регистров закодирована в поле кода операции (opcode) этих мультимедийных инструкций. По мере расширения данных регистров и операций число кодов операций для мультимедийных инструкций стремительно растет, и теперь уже насчитываются сотни SSE-инструкций, позволяющих выполнять весьма полезные комбинации действий.
Источник: