ФОРТ
SIMD в регистре ( SWAR ), также известный под названием «упакованный SIMD». [1] — это метод выполнения параллельных операций над данными, содержащимися в регистре процессора . SIMD означает « одна инструкция, несколько данных» . Таксономия Флинна 1972 года классифицирует SWAR как «конвейерную обработку» .
Таксономия Флинна |
---|
Единый поток данных |
Несколько потоков данных |
Подкатегории SIMD [2] |
См. также |
Многие современные компьютерные процессоры общего назначения имеют некоторые возможности для SIMD в виде группы регистров и инструкций для их использования. SWAR относится к использованию этих регистров и инструкций, в отличие от использования специализированных механизмов обработки, предназначенных для лучшего выполнения операций SIMD. Это также относится к использованию SIMD с регистрами общего назначения и инструкциями, которые в то время не предназначались для этого, посредством различных новых программных уловок. [3]
SWAR-архитектуры
[ редактировать ]Архитектура SWAR включает в себя инструкции, явно предназначенные для выполнения параллельных операций над данными, хранящимися в независимых подсловах или полях регистра. Архитектура с поддержкой SWAR — это архитектура, которая включает в себя набор инструкций, достаточный для независимой обработки данных, хранящихся в этих полях, даже если архитектура не включает в себя инструкции, явно предназначенные для этой цели.
Ранним примером архитектуры SWAR был процессор Intel Pentium с MMX , в котором реализован набор расширений MMX . Intel Pentium , напротив, не содержал таких инструкций, но все же мог действовать как архитектура SWAR благодаря тщательному ручному кодированию или методам компиляции.
Ранние архитектуры SWAR включают DEC Alpha MVI от Hewlett-Packard , PA-RISC MAX , MIPS MDMX и SPARC V9 VIS от Silicon Graphics Incorporated от Sun. Как и MMX, многие наборы команд SWAR предназначены для более быстрого кодирования видео. [4]
История модели программирования SWAR
[ редактировать ]Уэсли А. Кларк представил операции с разделенными подсловами в 1950-х годах. [ нужна ссылка ] . Это можно рассматривать как очень раннего предшественника SWAR. Лесли Лэмпорт представил методы SWAR в своей статье под названием «Многобайтовая обработка с инструкциями из полных слов». [5] в 1975 году.
С появлением в 1996 году расширений набора мультимедийных команд Intel MMX процессоры для настольных ПК с возможностями параллельной обработки SIMD стали обычным явлением. Раньше эти инструкции можно было использовать только через рукописный ассемблерный код.
Осенью 1996 года профессор Хэнк Дитц преподавал курс по созданию компиляторов для студентов на факультете электротехники и вычислительной техники Университета Пердью. Для этого курса он поручил ряд проектов, в которых студенты должны были создать простой компилятор, ориентированный на MMX. Язык ввода представлял собой подмножество диалекта MPL MasPar , называемое NEMPL (не совсем MPL).
В течение семестра ассистенту курса Рэндаллу (Рэнди) Фишеру стало ясно, что существует ряд проблем с MMX, которые затрудняют создание серверной части компилятора NEMPL. Например, в MMX есть инструкция для умножения 16-битных данных, но нет инструкции для умножения 8-битных данных. Язык NEMPL не учитывал эту проблему, позволяя программисту писать программы, требующие 8-битного умножения.
Архитектура Intel x86 была не единственной архитектурой, включавшей параллельные инструкции типа SIMD. от Sun VIS от SGI , MDMX и другие наборы мультимедийных команд были добавлены к существующим архитектурам наборов команд других производителей для поддержки так называемых новых мультимедийных приложений. Эти расширения имели существенные различия в точности данных и типах поддерживаемых инструкций.
Дитц и Фишер начали разрабатывать идею четко определенной модели параллельного программирования, которая позволила бы программировать на основе модели, не зная особенностей целевой архитектуры. Эта модель станет основой диссертации Фишера. Аббревиатура «SWAR» была придумана Дитцем и Фишером однажды в офисе Хэнка в здании MSEE Университета Пердью. [6] Это относится к этой форме параллельной обработки, к архитектурам, предназначенным для выполнения этого типа обработки, и к модели программирования общего назначения, которая является диссертацией Фишера.
Проблема компиляции для этих широко варьирующихся архитектур обсуждалась в документе, представленном на LCPC98. [4]
Некоторые применения SWAR
[ редактировать ]SWAR-обработка использовалась в обработка изображений, [7] криптографические пары, [8] растровая обработка, [9] вычислительная гидродинамика, [10] и коммуникации. [11]
См. также
[ редактировать ]- SIMD-движки: векторный процессор , массивовый процессор , процессор цифровых сигналов , потоковый процессор .
- SWAR на x86 процессорах : MMX , 3DNow! , ССЕ , ССЕ2 , ССЕ3
Ссылки
[ редактировать ]- ^ Мияока, Ю.; Чой, Дж.; Тогава, Н.; Янагисава, М.; Оцуки, Т. (2002). Алгоритм формирования аппаратного блока для синтеза процессорного ядра с упакованными инструкциями типа SIMD . Азиатско-Тихоокеанская конференция по схемам и системам. Том. 1. С. 171–176. дои : 10.1109/APCCAS.2002.1114930 . hdl : 2065/10689 .
- ^ Флинн, Майкл Дж. (сентябрь 1972 г.). «Некоторые компьютерные организации и их эффективность» (PDF) . Транзакции IEEE на компьютерах . С-21 (9): 948–960. дои : 10.1109/TC.1972.5009071 .
- ^ Фишер, Рэндалл Дж (2003). SIMD общего назначения в регистре: параллельная обработка на потребительских микропроцессорах (PDF) (доктор философии). Университет Пердью.
- ^ Перейти обратно: а б Фишер, Рэндалл Дж.; Генри Г. Дитц (август 1998 г.). С. Чаттерджи; Дж. Ф. Принс; Л. Картер; Ж. Ферранте; З. Ли; Д. Сер; П.-К.Ю (ред.). «Компиляция для SIMD внутри регистра». Материалы 11-го международного семинара по языкам и компиляторам для параллельных вычислений .
- ^ Лэмпорт, Лесли (август 1975 г.). «Многобайтовая обработка с полнословными инструкциями» . Коммуникации АКМ . 18 (8): 471–475. дои : 10.1145/360933.360994 . S2CID 1593593 .
- ^ Дитц, Хэнк. «Агрегатные магические алгоритмы» .
- ^ Падуя, Флавий LC; Перейра, Уильям А.С.; Нето, Хосе П. из Кейруша; Филдс, Марио FM; Фернандес, Антонио О. (январь 2001 г.). Уменьшение времени обработки больших изображений за счет параллелизма на уровне инструкций (PDF) . Чилийская неделя вычислений, V семинар по параллельным и распределенным системам. Пойнт Сэндс. Архивировано из оригинала (PDF) 2 февраля 2007 г.
- ^ Грабхер, Филипп; Иоганн Гросшедль; Дэн Пейдж (2009). «О программной параллельной реализации криптографических пар». Избранные области криптографии . Конспекты лекций по информатике. Том. 5381. стр. 35–50. дои : 10.1007/978-3-642-04159-4_3 . ISBN 978-3-642-04158-7 .
- ^ Персада, Онил Назра; Тьерри Губье (12–14 сентября 2004 г.). «Ускорение растровой обработки с помощью мелкого и крупного параллелизма в GRASS». Материалы конференции пользователей FOSS/GRASS, 2004 г.
- ^ Хаузер, Томас; Т. И. Маттокс; Р.П. ЛеБо; Х.Г. Дитц; П.Г. Хуанг (апрель 2003 г.). «Оптимизация кода для сложных микропроцессоров применительно к программному обеспечению CFD». Журнал SIAM по научным вычислениям . 25 (4): 1461–1477. дои : 10.1137/S1064827502410530 . ISSN 1064-8275 .
- ^ Спрэклин, Лоуренс А. (2001). Системы SWAR и коммуникационные приложения (PDF) (доктор философии). Университет Абердина.