Матричные и векторные процессоры кратко

Обновлено: 02.07.2024

Аннотация: В данной лекции рассматриваются математические основы, способы организации и особенности проектирования ассоциативных, конвейерных и матричных процессоров.

Существующие в настоящее время алгоритмы прикладных задач, системное программное обеспечение и аппаратные средства преимущественно ориентированы на традиционную адресную обработку данных . Данные должны быть представлены в виде ограниченного количества форматов (например, массивы, списки, записи), должна быть явно создана структура связей между элементами данных посредством указателей на адреса элементов памяти, при обработке этих данных должна быть выполнена совокупность операций, обеспечивающих доступ к данным по указателям. Такой подход обуславливает громоздкость операционных систем и систем программирования, а также служит препятствием к созданию вычислительных средств с архитектурой, ориентированной на более эффективное использование параллелизма обработки данных.

Ассоциативные процессоры

Ассоциативный способ обработки данных позволяет преодолеть многие ограничения, присущие адресному доступу к памяти, за счет задания некоторого критерия отбора и проведения необходимых преобразований, только над теми данными, которые удовлетворяют этому критерию . Критерием отбора может быть совпадение с любым элементом данных, достаточным для выделения искомых данных из всех имеющихся. Поиск данных может происходить по фрагменту, имеющему большую или меньшую корреляцию с заданным элементом данных.

Исследованы и в разной степени применяются несколько подходов, различающихся полнотой реализации модели ассоциативной обработки . Если реализуется только ассоциативная выборка данных с последующим поочередным использованием найденных данных, то говорят об ассоциативной памяти или памяти, адресуемой по содержимому. При достаточно полной реализации всех свойств ассоциативной обработки используется термин "ассоциативный процессор ".

Ассоциативные системы относятся к классу: один поток команд – множество потоков данных ( SIMD = Single Instruction Multiple Data ). Эти системы включают большое число операционных устройств, способных одновременно по командам управляющего устройства вести обработку нескольких потоков данных. В ассоциативных вычислительных системах информация на обработку поступает от ассоциативных запоминающих устройств (АЗУ), характеризующихся тем, что информация в них выбирается не по определенному адресу, а по ее содержанию.

Конвейерные процессоры

Процессоры современных компьютеров используют особенную технологию – конвейеры , которые позволяют обрабатывать более одной команды одновременно.

Обработка команды может быть разделена на несколько основных этапов, назовем их микрокомандами . Выделим основные пять микрокоманд :

  • выборка команды;
  • расшифровка команды;
  • выборка необходимых операндов;
  • выполнение команды;
  • сохранение результатов.

Все этапы команды задействуются только один раз и всегда в одном и том же порядке: одна за другой. Это, в частности, означает, что если первая микрокоманда выполнила свою работу и передала результаты второй, то для выполнения текущей команды она больше не понадобится, и, следовательно, может приступить к выполнению следующей команды. Выделим каждую команду в отдельную часть устройства и расположим их в порядке выполнения. В первый момент времени выполняется первая микрокоманда . Она завершает свою работу и начинает выполняться вторая микрокоманда , в то время как первая готова для выполнения следующей инструкции. Первая инструкция может считаться выполненной, когда завершат работу все пять микрокоманд .

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

Во многих вычислительных системах наряду с конвейером команд используются и конвейеры данных .

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

Одной из наиболее высокопроизводительных вычислительных конвейерных систем считается СRАY. В этой системе конвейерный принцип обработки используется в максимальной степени. Имеется и конвейер команд, и конвейер арифметических и логических операций. В системе широко применяется совмещенная обработка информации несколькими устройствами. Максимальная пиковая производительность процессора может составлять 12 GFLOPS .

В настоящее время созданы однокристальные векторно-конвейерные процессоры, основными компонентами которых являются скалярный процессор и 8 идентичных векторных устройств, суммарная производительность которых составляет 64 GFLOPS . На их основе построена система SX-6 компании NEC.

Матричные процессоры

Наиболее распространенными из систем класса один поток команд – множество потоков данных ( SIMD ) являются матричные системы, которые лучше всего приспособлены для решения задач, характеризующихся параллелизмом независимых объектов или данных . Организация систем подобного типа, на первый взгляд, достаточно проста. Они имеют общее управляющее устройство , генерирующее поток команд и большое число процессорных элементов , работающих параллельно и обрабатывающих каждая свой поток данных. Таким образом, производительность системы оказывается равной сумме производительностей всех процессорных элементов . Однако на практике чтобы обеспечить достаточную эффективность системы при решении широкого круга задач, необходимо организовать связи между процессорными элементами с тем, чтобы наиболее полно загрузить их работой. Именно характер связей между процессорными элементами и определяет разные свойства системы.

Одним из первых матричных процессоров был SОLОМОN (60-е годы).

Система SOLOMON содержит 1024 процессорных элемента , которые соединены в виде матрицы: 32х32. Каждый процессорный элемент матрицы включает в себя процессор , обеспечивающий выполнение последовательных поразрядных арифметических и логических операций, а также оперативное ЗУ емкостью 16 Кбайт. Длина слова – переменная от 1 до 128 разрядов. Разрядность слов устанавливается программно. По каналам связи от устройства управления передаются команды и общие константы . В процессорном элементе используется так называемая многомодальная логика, которая позволяет каждому процессорному элементу выполнять или не выполнять общую операцию в зависимости от значений обрабатываемых данных. В каждый момент все активные процессорные элементы выполняют одну и ту же операцию над данными, хранящимися в собственной памяти и имеющими один и тот же адрес .

Идея многомодальности заключается в том, что в каждом процессорном элементе имеется специальный регистр на 4 состояния – регистр моды . Мода (модальность) заносится в этот регистр от устройства управления. При выполнении последовательности команд модальность передается в коде операции и сравнивается с содержимым регистра моды . Если есть совпадения, то операция выполняется. В других случаях процессорный элемент не выполняет операцию, но может, в зависимости от кода, пересылать свои операнды соседнему процессорному элементу . Такой механизм позволяет выделить строку или столбец процессорных элементов , что очень полезно при операциях над матрицами. Взаимодействуют процессорные элементы с периферийным оборудованием через внешний процессор .

Дальнейшим развитием матричных процессоров стала система ILLIАC-4, разработанная фирмой BURROUGHS. Первоначально система должна была включать в себя 256 процессорных элементов , разбитых на группы, каждый из которых должен управляться специальным процессором. Однако по различным причинам была создана система, содержащая одну группу процессорных элементов и управляющий процессор . Если в начале предполагалось достичь быстродействия 1 млрд. операций в секунду, то реальная система работала с быстродействием 200 млн. операций в секунду. Эта система в течение ряда лет считалась одной из самых высокопроизводительных в мире.

В начале 80-х годов в СССР была создана система ПС-2000, которая также является матричной. Основой этой системы является мультипроцессор ПС-2000, состоящий из решающего поля и устройства управления мультипроцессором. Решающее поле строится из одного, двух, четырех или восьми устройств обработки, в каждом из которых 8 процессорных элементов . Мультипроцессор из 64 процессорных элементов обеспечивает быстродействие 200 млн. операций в секунду на коротких операциях.

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

Транспьютеры применяются: в качестве плат-ускорителей для повышения производительности существующих персональных компьютеров, в качестве встроенных ЭВМ, например, в многопроцессорных ЭВМ общего назначения для организации параллельных вычислительных процессов и в лазерных принтерах.

Матричные и векторные процессоры

Матричные и векторные процессоры предназначены для обработки изображений, матриц, массивов данных.

Матричный процессор – имеет архитектуру, рассчитанную на обработку числовых массивов. Архитектура включает в себя матрицу процессорных элементов, например 64x64, работающих одновременно. Постпроцессор предназначен для реализации специальных функций, например управление базой данных.

Векторный процессор – обеспечивает параллельное выполнение операций над массивами данных, векторами. Он характеризуется специальной архитектурой, выполненной на группе параллельно работающих процессорных элементах.

Векторная обработка увеличивает производительность за счет обработки целого набора данных (вектора) одной командой, в различие скалярных, которые обрабатывают отдельные элементы этого массива. При работе в векторном режиме векторные процессоры обрабатывают данные практически параллельно, что делает их в несколько раз быстрыми, чем в скалярном режиме. Максимальная скорость передачи данных в векторном формате составляет 64 Гбайт \ с, что почти в 2 раза больше, чем в скалярных машинах. В настоящее время созданы однокристальные векторно-конвейерные процессоры, такие, как SX-6. Основными компонентами микропроцессора являются скалярный процессор и 8 векторных, суммарная производительность которых составляет 64 Гфлопс. Процессоры NEC, HITACHI.

Персональный компьютер, рабочая станция, современные периферийные устройства.

ПЕРСОНАЛЬНЫЙ КОМПЬЮТЕР - универсальная ЭВМ для индивидуального использования при решении самых разных задач. Основные части ПК: системный блок, клавиатура, монитор. Доп. части (т. н. периферийные устройства): "мышь", сканер, плоттер, графический планшет бесклавиатурного ввода, световое перо, дисковод CD-ROM и др.

Обычно персональные компьютеры проектируются на основе принципа открытой архитектуры и создаются на базе микропроцессоров.

Основу компьютеров образует аппаратура (HardWare), построенная, в

основном, с использованием электронных и электромеханических элементов и

устройств. Принцип действия компьютеров состоит в выполнении программ

(SoftWare) - заранее заданных, четко определённых последовательностей

арифметических, логических и других операций.

Отличия рабочей станции от персональной ЭВМ

- рабочая станция – ПК, оптимизированный для решения определенного типа задач (ex: графическая станция)

- в рабочей станции используется более мощный процессор RISC

- в рабочей станции используется быстродействующая графическая система

- все внешние устройства подключены по интерфейсу SCSI (в том числе жёсткие диски)

- рабочая станция находится под управлением открытой ОС

- как правило, рабочие станции готовы для работы в сети

- на них используются профессиональные пакеты для аэродинамических и прочностных расчётов, автоматизированного проектирования.

Периферийное устройство - часть технического обеспечения, конструктивно отделенная от основного блока вычислительной системы.

Периферийные устройства имеют собственное управление и функционируют по командам центрального процессора.

Периферийные устройства предназначены для внешней обработки данных, обеспечивающий их подготовку, ввод, хранение, управление, защиту, вывод и передачу на расстояние по каналам связи.

Транспьютер - сверхбольшая интегральная схема, которая содержит

- коммуникационные каналы для межпроцессорной связи, которые позволяют монтировать несколько Т. на одной плате, создавая многопроцессорные ЭВМ;

- кэш небольшого объема.

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

Транспьютеры применяются: в качестве плат-ускорителей для повышения производительности существующих персональных компьютеров, в качестве встроенных ЭВМ, например, в многопроцессорных ЭВМ общего назначения для организации параллельных вычислительных процессов и в лазерных принтерах.

Матричные и векторные процессоры

Матричные и векторные процессоры предназначены для обработки изображений, матриц, массивов данных.

Матричный процессор – имеет архитектуру, рассчитанную на обработку числовых массивов. Архитектура включает в себя матрицу процессорных элементов, например 64x64, работающих одновременно. Постпроцессор предназначен для реализации специальных функций, например управление базой данных.

Векторный процессор – обеспечивает параллельное выполнение операций над массивами данных, векторами. Он характеризуется специальной архитектурой, выполненной на группе параллельно работающих процессорных элементах.

Векторная обработка увеличивает производительность за счет обработки целого набора данных (вектора) одной командой, в различие скалярных, которые обрабатывают отдельные элементы этого массива. При работе в векторном режиме векторные процессоры обрабатывают данные практически параллельно, что делает их в несколько раз быстрыми, чем в скалярном режиме. Максимальная скорость передачи данных в векторном формате составляет 64 Гбайт \ с, что почти в 2 раза больше, чем в скалярных машинах. В настоящее время созданы однокристальные векторно-конвейерные процессоры, такие, как SX-6. Основными компонентами микропроцессора являются скалярный процессор и 8 векторных, суммарная производительность которых составляет 64 Гфлопс. Процессоры NEC, HITACHI.

Персональный компьютер, рабочая станция, современные периферийные устройства.

ПЕРСОНАЛЬНЫЙ КОМПЬЮТЕР - универсальная ЭВМ для индивидуального использования при решении самых разных задач. Основные части ПК: системный блок, клавиатура, монитор. Доп. части (т. н. периферийные устройства): "мышь", сканер, плоттер, графический планшет бесклавиатурного ввода, световое перо, дисковод CD-ROM и др.

Обычно персональные компьютеры проектируются на основе принципа открытой архитектуры и создаются на базе микропроцессоров.

Основу компьютеров образует аппаратура (HardWare), построенная, в

основном, с использованием электронных и электромеханических элементов и

устройств. Принцип действия компьютеров состоит в выполнении программ

(SoftWare) - заранее заданных, четко определённых последовательностей

арифметических, логических и других операций.

Отличия рабочей станции от персональной ЭВМ

- рабочая станция – ПК, оптимизированный для решения определенного типа задач (ex: графическая станция)

- в рабочей станции используется более мощный процессор RISC

- в рабочей станции используется быстродействующая графическая система

- все внешние устройства подключены по интерфейсу SCSI (в том числе жёсткие диски)

- рабочая станция находится под управлением открытой ОС

- как правило, рабочие станции готовы для работы в сети

- на них используются профессиональные пакеты для аэродинамических и прочностных расчётов, автоматизированного проектирования.

Периферийное устройство - часть технического обеспечения, конструктивно отделенная от основного блока вычислительной системы.

Периферийные устройства имеют собственное управление и функционируют по командам центрального процессора.

Периферийные устройства предназначены для внешней обработки данных, обеспечивающий их подготовку, ввод, хранение, управление, защиту, вывод и передачу на расстояние по каналам связи.

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций.


Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой.



Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).

Так матричныйпроцессор рассчитан на обработку числовых массивов. Архитектура его включает матрицу (например, 64 на 64) параллельно работающих процессорных элементов.

Векторныйпроцессор – обеспечивает параллельное выполнение операций над массивами данных, векторами (пример – серия векторных процессоровCray).

Технология динамического исполнения

Эта технология реализует комбинацию трёх методов обработки данных:

Анализ потока данных

Множественное предсказание ветвлений

Анализ потока данных и Множественное предсказание ветвлений: процессор может предвидеть разделение потока команд, используя алгоритм множественного предсказания ветвлений. Он просматривает программу на несколько шагов вперёд и с точностью более 80% предсказывает, по каким адресам памяти можно найти следующие команды.

Спекулятивное исполнение– программа просматривается вперёд и на основе предсказания ветвлений выполняются необходимые команды. Процессор выполняет команды по мере их поступления в оптимизированной последовательности (спекулятивно), до пяти команд одновременно. Результаты выполнения сохраняются. Когда происходит переход к реальному выполнению ветви, то используется соответствующий результат спекулятивного исполнения, альтернативные результаты удаляются.

ТехнологияHyper-Threading.

В этом случае реализуется разделение времени на аппаратном уровне: процессор физически разбивается на два логических процессора, каждый из которых использует ядро, кэш-память, шины, АЛУ. Ядро процессора выполняет одновременно два процесса. Специалисты оценивают , что использование НТ-технологий повышает эффективность ЭВМ на 30%.

Мультипроцессоры

Это система из нескольких параллельных процессоров, разделяющих общую память. Каждый процессор должен работать с любой областью памяти по чтению и записи, поэтому их работа должна согласовываться программными средствами. Мультипроцессирование может быть реализовано по разным схемам. Наиболее простая – вариант, когда несколько процессоров и одна общая память соединяются с помощью общей шины.

Компьютеры, даже персональные, становятся все сложнее. Не так уж давно в гудящем на столе ящике все было просто — чем больше частота, тем больше производительность. Теперь же системы стали многоядерными, многопроцессорными, в них появились специализированные ускорители, компьютеры все чаще объединяются в кластеры.
Зачем? Как во всем этом многообразии разобраться?
Что значит SIMD, SMP, GPGPU и другие страшные слова, которые встречаются все чаще?
Каковы границы применимости существующих технологий повышения производительности?

Введение

Откуда такие сложности?
Формула производительности

Возьмем самую общую формулу производительности:


Видим, что производительность можно измерять в количестве выполняемых инструкций за секунду.
Распишем процесс поподробнее, введем туда тактовую частоту:


Включаем параллельность

Параллелизм на уровне инструкций

Технологии параллелизма на уровне инструкций активно развивались в 90е и первую половину 2000х годов, но в настоящее время их потенциал практически исчерпан. Можно переставлять местами команды, переименовывать регистры и использовать другие оптимизации, выделяя из последовательного кода параллельно исполняющиеся участки, но все равно зависимости и ветвления не дадут полностью автоматически распараллелить код. Параллелизм на уровне инструкций хорош тем, что не требует вмешательства человека — но этим он и плох: пока человек умнее микропроцессора, писать по-настоящему параллельный код придется ему.

Параллелизм на уровне данных

Векторные процессоры

float a[4] = < 300.0, 4.0, 4.0, 12.0 >;
float b[4] = < 1.5, 2.5, 3.5, 4.5 >;
__asm movups xmm0, a ; // поместить 4 переменные с плавающей точкой из a в регистр xmm0
movups xmm1, b ; // поместить 4 переменные с плавающей точкой из b в регистр xmm1
mulps xmm1, xmm0 ; // перемножить пакеты плавающих точек: xmm1=xmm1*xmm0
movups a, xmm1 ; // выгрузить результаты из регистра xmm1 по адресам a
>;

Таким образом, вместо четырех последовательных скалярных умножений мы сделали только одно — векторное.
Векторные процессоры могут значительно ускорить вычисления над большими объемами данных, но сфера их применимости ограничена, далеко не везде применимы типовые операции над фиксированными массивами.
Впрочем, гонка векторизации вычислений далеко не закончена — так в последних процессорах Intel появилось новое векторное расширение AVX (Advanced Vector Extension)
Но гораздо интереснее сейчас выглядят

Графические процессоры


Теоретическая вычислительная мощность процессоров в современных видеокартах растет гораздо быстрее, чем в обычных процессорах (посмотрим знаменитую картинку от NVIDIA)

Не так давно эта мощность была приспособлена для универсальных высокопроизводительных вычислений с помощью CUDA/OpenCL.
Архитектура графических процессоров (GPGPU, General Purpose computation on GPU – универсальные расчеты средствами видеокарты), близка к уже рассмотренной SIMD.
Она называется SIMT — (single instruction, multiple threads, одна инструкция — множество потоков). Так же как в SIMD операции производятся с массивами данных, но степеней свободы гораздо больше — для каждой ячейки обрабатываемых данных работает отдельная нить команд.
В результате
1) Параллельно могут выполняться сотни операций над сотнями ячеек данных.
2) В каждом потоке выполняется произвольная последовательность команд, она может обращаться к разным ячейкам.
3) Возможны ветвления. При этом, правда, параллельно могут выполняться только нити с одной и той же последовательностью операций.

GPGPU позволяют достичь на некоторых задачах впечатляющих результатов. но существуют и принципиальные ограничения, не позволяющие этой технологии стать универсальной палочкой-выручалочкой, а именно
1) Ускорить на GPU можно только хорошо параллелящийся по данным код.
2) GPU использует собственную память. Трансфер данных между памятью GPU и памятью компьютера довольно затратен.
3) Алгоритмы с большим количеством ветвлений работают на GPU неэффективно

Мультиархитектуры-

Суров закон, но это закон

Параллельность, это хороший способ обойти ограничение роста тактовой частоты, но у него есть собственные ограничения.
Прежде всего, это закон Амдала, который гласит
Ускорение выполнения программы за счет распараллеливания её инструкций на множестве вычислителей ограничено временем, необходимым для выполнения её последовательных инструкций.

Ускорение кода зависит от числа процессоров и параллельности кода согласно формуле


Действительно, с помощью параллельного выполнения мы можем ускорить время выполнения только параллельного кода.
В любой же программе кроме параллельного кода есть и последовательные участки и ускорить их с помощью увеличения количества процессоров не получится, над ними будет работать только один процессор.


Например, если выполнение последовательного кода занимает всего 25% от времени выполнения всей программы, то ускорить эту программу более чем в 4 раза не получится никак.
Давайте построим график зависимости ускорения нашей программы от количества параллельно работающих вычислителей-процессоров. Подставив в формулу 1/4 последовательного кода и 3/4 параллельного, получим

Мультипроцессор

Мультипроцессор — это компьютерная система, которая содержит несколько процессоров и одно видимое для всех процессоров. адресное пространство.
Мультипроцессоры отличаются по организации работы с памятью.

Системы с общей памятью


В таких системах множество процессоров (и процессорных кэшей) имеет доступ к одной и той же физической оперативной памяти. Такая модель часто называется симметричной мультипроцессорностью (SMP). Доступ к памяти при таком построении системы называется UMA (uniform memory access, равномерный доступ) т.к. любой процессор может обратиться к любой ячейке памяти и скорость этого обращения не зависит от адреса памяти. Однако каждый микропроцессор может использовать свой собственный кэш.

Несколько подсистем кэш-памяти процессоров, как правило, подключены к общей памяти через шину

Посмотрим на рисунок.
Что у нас хорошего?
Любой процессор обращается ко всей памяти и вся она работает одинаково. Программировать для таких систем проще, чем для любых других мультиархитектур. Плохо то, что все процессоры обращаются к памяти через шину, и с ростом числа вычислительных ядер пропускная способность этой шины быстро становится узким местом.
Добавляет головной боли и проблема обеспечения когерентности кэшей.

Когерентность кэша
Многоядерные процессоры


Мультикомпьютер

Сводим все воедино

Ну вот, вкратце пробежались почти по всем технологиям и принципам построения мощных вычислительных систем.
Теперь есть возможность представить себе строение современного суперкомпьютера.
Это мультикомпьютер-кластер, каждый узел которого — NUMA или SMP система с несколькими процессорами, каждый из процессоров с несколькими ядрами, каждое ядро с возможностью суперскалярного внутреннего параллелизма и векторными расширениями. Вдобавок ко всему этому во многих суперкомпьютерах установлены GPGPU — ускорители.
У всех этих технологий есть плюсы и ограничения, есть тонкости в применении.
А теперь попробуйте эффективно загрузить-запрограммировать всё это великолепие!
Задача нетривиальная… но очень интересная.
Что-то будет дальше?

Читайте также: