Новая классификация массово-параллельных процессоров

Существующие классификации описывают в основном различные варианты организации процессинга обработки данных в архитектуре фон-Неймана или Гарвардской архитектуре. Это классические варианты работы с числами. Все они имеют стандарт данных. Любые    множества данных можно разделить на числа, целые, или с плавающей точкой, которые имеют разрядность. В настоящее время это в основном 32 или 64 разряда. Встречаются немного большие размерности вплоть до 1024 разрядов. Речь идёт о массово-выпускаемых процессорах.  Для того, что бы сравнивать мощности процессоров, придумана единица вычислительной мощности процессоров Гига- и Мегафлопс. Она основана на числах в единицу времени. Математики бы сказали, что вычисления процессоров основаны на моноиде целых чисел. Из чисел можно построить любые данные, даже те, которые казалось бы не имеют никакого отношения к числам. Например, модели карт погоды и 3D-объектов. Или расчёт задачи 4 красок. Таким образом вся математика представляет собой операции с числами.012414_1236_FAQ2

Операции над операндами

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

1 ТИП параллельности обработки данных – количество разрядов.

2 ТИП параллельности обработки данных – многоядерность.

Это современные CPU и GPU. Основное ограничение производительности вызвано наличием общей шины (ОШ) или нескольких ОШ. Больше 8-ми «стандартных» ядер почти для всех задач не имеют смысла. При дальнейшем увеличении количества ядер ядра начинают простаивать больше, чем работать. Выигрыш от параллельности перестаёт быстро расти с ростом количества ядер. Рост кеша различных уровней (L1, L2, L3) для ряда задач позволяет наращивать производительность при дальнейшем росте количества ядер. Для этих задач всё нужное для программы помещается в кешируемую память и обмен с основной памятью происходит редко. Чем реже это происходит, тем больше можно наращивать количество ядер.

А ещё больше параллельных ядер?

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

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

Один из самых востребованных вариантов – обработка кадров видео:

Для генерации кадра из графических примитивов

Для распознавания изображения путём сравнения с примитивами

Современные экраны имеют порядка 4 -8 Мпс. Современным технологиям вполне доступно создать подобный процессор с таким количеством ядер и кеш-памяти. Итак

3 ТИП параллельности обработки данных – локально-многоядерная.

Такой процессор не требует доступа каждого ядра к обшей шине данных. Иначе всё преимущество параллельности потеряется. Достаточно связать только соседние ядра, по двум направлениям. Тогда имеем 4 связи каждого ядра с соседними ядрами. В трёхмерном случае – шесть связей с соседями. Эти связи позволяют имитировать пространство 3Д-сцены или 2Д-экрана. Передача данных соседнему ядру будет требоваться чаще всего.

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

Добавить комментарий