© Георгиевский Анатолий, 15.03.2007

Использование реконфигурируемых DSP в суперкомпьютерах

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

Векторизация задач

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

Реконфигурация процессора для решения специфичиных задач

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

Мульти-ядерные процессоры

На сегодняшний день можно собрать кластер на процессорах IBM Cell которые помимо центрального процессора содержат восемь вычислительных узлов. Intel в ближайшей пятилетке гроизится выпустить реконфигурируемый процессор с 80-ю вчислительными узлами на одном кристалле. В общем, процесс пошел, машина запущена. Именно такое будущее ждет мир суперкомпьютеров и высокопроизводительных вычислений. Хотя, надо отметить и в прошлом имели место разработки подобного рода. Ещё в 80-х годах прошлого столетия разрабатывались компьютеры с 256 процессоров на одной плате 30х40см. Называлось это словом "транспьютер". Скажем если мне приспичит купить штук 80 микропроцессоров с ограниченным набором команд, типа умножить-сложить-и-дальше-передать, то как раз получится новомодная идея Intel или хорошо забытая идея Транспьютера.

Что такое FPGA?

FPGA - микросхемы программируемой логики. Современный уровень развития полупроводниковой технологии позволяет выпускать на одном кристалле десятки-сотни тысяч логических элементов, каждый логический элемент содержит логические таблицы и триггеры необходимые для реализации операции суммирования или любой другой логической функции. Уровень интеграции позволяет реализовать на одном кристалле несколько сотен умножителей с тактовыми частотами 250-350МГц. Кроме того, в моделях среднего уровня интеграции добавляют аппаратные умножители и банки синхронной памяти, работающие на тактовой частоте микросхемы. Таким образом, суммарная производительность вычислительных элементов может достигать нескольких десятков Гига операций умножения и сложения в секунду. Hi-end модели FPGA и модели среднего ценового диапазона могут быть сконфигурированы для работы на шине X-PCI, HyperTransport, PCI Express, могут использовать интерфейсы памяти DDR и DDR2, можно подобрать решение аппаратно ориентированное на работу с последовательными межсоединениями 2.5G, 3.2G и 10G. И всё это многообразие доступно по цене от 50 до 250у.е. за средний уровень интеграции и до 2 тыс USD за модели Hi-End.

Есть ещё одна замечательная возможность: полноценное процессорное ядро с 32 разрядной RISC архитектурой, может занимать всего несколько тысяч логических элемнтов внутри FPGA. Вспомнив идею реконфигурируемого процессора можно реализовать пару десятков "программных" вычислительных ядер на одном кристалле, со своей собственой архитектурой, многоядерной, векторной, конвейерной, какой ни заблагорассудится, архитектурой ориентированной на решение конкретного класса задач.

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

()