Высокопроизводительные сопроцессоры для параллельной обработки данных в формате с плавающей точкой в системах цифровой обработки сигналов тема диссертации и автореферата по ВАК РФ 05.13.05, кандидат технических наук Пантелеев, Алексей Юрьевич
- Специальность ВАК РФ05.13.05
- Количество страниц 154
Оглавление диссертации кандидат технических наук Пантелеев, Алексей Юрьевич
Оглавление
Введение
Научная новизна диссертации
Практическая значимость диссертации
Основные положения, выносимые на защиту
1. Архитектура систем и алгоритмы цифровой обработки сигналов
1.1. Архитектура цифровых сигнальных процессоров
1.2. Архитектура СнК, предназначенных для цифровой обработки сигналов
1.3. Архитектура параллельных процессоров
1.4. Архитектура процессоров с поддержкой явного параллелизма на уровне инструкций (VLIW)
1.5. Базовые алгоритмы цифровой обработки сигналов
1.5.1. Дискретное и быстрое преобразование Фурье
1.5.2. Операции над векторами и матрицами
1.5.3. Корреляция и КИХ-фильтры
1.5.4. БИХ-фильтры
1.6. Вычисления с плавающей точкой
1.7. Выводы и постановка задачи
2. Исследование проблем построения параллельных сопроцессоров для ЦОС с использованием многопоточной архитектуры
2.1. Модель исполнения OpenCL
2.2. Модель сопроцессора М1 с поддержкой многопоточной модели исполнения
2.2.1. Структура и набор инструкций модели сопроцессора М1
2.2.2. Блок выбора исполняемого варпа и выборки инструкции
2.2.3. Блок доступа к разделяемой памяти
2.2.4. Производительность модели сопроцессора М1 с использованием различных параметров архитектуры при реализации алгоритмов ЦОС
2.3. Модель сопроцессора М2 с поддержкой многопоточной модели исполнения и параллелизма на уровне инструкций по принципу УЫ\¥
2.3.1. Структура модели сопроцессора М2
2.3.2. Набор инструкций модели М2
2.3.3. Блок планирования выполнения инструкций и влияние алгоритмов планирования на производительность сопроцессора М2
2.3.4. Производительность модели сопроцессора М2 с использованием различных параметров архитектуры при реализации алгоритмов ЦОС
2.4. Выводы
3. Способы повышения эффективности реализации алгоритмов ЦОС на параллельных сопроцессорах
3.1. Применение конвертируемой адресации памяти
3.1.1. Расположение матриц в регистровой памяти модели М2
3.1.2. Реализация БПФ и свертки для сопроцессора М2 с применением конвертируемой адресации регистров
3.1.3. Расположение матриц в векторной памяти с применением скошенной адресации
3.2. Применение векторов переменной длины
3.2.1. Модель исполнения программы при использовании векторов переменной длины
3.2.2. Структура планировщика выполнения инструкций, использующих вектора переменной длины
3.2.3. Производительность выполнения программ при использовании векторов переменной длины
3.3. Применение инструкций, работающих с комплексными числами
3.3.1. Сокращение объема кода алгоритмов ЦОС и числа обращений к
памяти
3.3.2. Многофункциональный векторный вычислительный блок с изменяемой структурой конвейера
3.3.3. Многофункциональный вычислительный конвейер на основе сумматора с 3 операндами
3.4. Выводы
4. Разработка высокопроизводительного векторного сопроцессора с поддержкой векторов переменной длины и конвертируемой адресации памяти
4.1. Сопроцессор МЗ с поддержкой векторов переменной длины и конвертируемой адресации памяти
4.1.1. Структура и модель исполнения сопроцессора МЗ
4.1.2. Набор инструкций сопроцессора МЗ
4.2. Реализация алгоритмов ЦОС для сопроцессора МЗ
4.2.1. Реализация БПФ по алгоритму двумерного разложения
4.2.2. Реализация свертки
4.2.3. Реализация умножения матрицы на вектор
4.2.4. Реализация параллельной редукции
4.3. Производительность сопроцессора МЗ с использованием различных параметров архитектуры при реализации алгоритмов ЦОС
4.4. Результаты синтеза RTL-модели сопроцессора МЗ
4.5. Сравнение сопроцессоров Ml, М2 и МЗ
4.6. Выводы
Заключение
Перечень используемых сокращений
Литература
Приложение А. Реализация БПФ по алгоритму Cooley-Tukey с
использованием OpenCL С
Приложение Б. Реализация БПФ по алгоритму двумерного разложения с использованием OpenCL С
Приложение В. Акт о внедрении результатов диссертационной работы
Рекомендованный список диссертаций по специальности «Элементы и устройства вычислительной техники и систем управления», 05.13.05 шифр ВАК
Вычислительные устройства с параллельной и изменяемой архитектурой для задач обработки изображения2002 год, кандидат технических наук Аряшев, Сергей Иванович
Исследование и разработка методов передачи информации в высокоскоростных беспроводных сетях2008 год, кандидат технических наук Аристархов, Василий Юрьевич
Компьютерно-ориентированные схемы минимизации временной сложности цифровой обработки сигналов при динамическом изменении отсчетов2010 год, кандидат технических наук Забеглов, Валерий Валерьевич
Исследование и разработка методов цифровой согласованной фильтрации радиолокационных сигналов в гетерогенных системах на кристалле2009 год, кандидат технических наук Янакова, Елена Сергеевна
Разработка инструментальных средств отработки блоков информационно-измерительных и управляющих систем с использованием оптоэлектронных процессоров2005 год, кандидат технических наук Соловьёв, Сергей Юрьевич
Введение диссертации (часть автореферата) на тему «Высокопроизводительные сопроцессоры для параллельной обработки данных в формате с плавающей точкой в системах цифровой обработки сигналов»
Введение
Цифровая обработка сигналов (ЦОС) - область науки и техники, занимающаяся анализом, синтезом и преобразованием сигналов, представленных в цифровой форме. Сигналы в цифровой форме состоят из отсчетов, представляющих значение сигнала в определенные моменты времени, т.е. являются дискретизованными по времени. Каждый отсчет представляется в виде числа с ограниченной точностью, т.е. сигналы также являются квантованными по уровню. Чем выше частота дискретизации и количество уровней квантования, тем точнее представляется сигнал, тем меньше в него вносится шума при дискретизации и обработке [1].
Требования приложений к скорости обработки данных постоянно растут: появляются новые стандарты связи с широкими полосами пропускания, используется цифровая модуляция радиосигналов, требуется обрабатывать многоканальные сигналы в одном устройстве, повышается разрешение передаваемых видеопотоков, которые необходимо кодировать и декодировать, и так далее. Для этого необходима высокая производительность систем обработки данных. До недавнего времени основным средством повышения производительности процессоров было повышение тактовой частоты с уменьшением технологических норм и соответствующим уменьшением напряжения питания устройств с целью понижения энергопотребления. Однако несколько лет назад ситуация изменилась, и в связи с технологическими проблемами дальнейшее увеличение тактовой частоты при сохранении приемлемого энергопотребления стало невозможным [2]. Поэтому в настоящее время основным способом наращивания производительности является оптимизация архитектуры устройств, позволяющая повысить энергоэффективность, то есть производительность в расчете на единицу потребляемой энергии. Энергопотребление устройств важно практически в любых применениях: в центрах обработки данных и просто высокопроизводительных стационарных устройствах понижение энергопотребления позволяет упростить системы охлаждения и уменьшить расходы на электроэнергию; портативные устройства могут дольше работать от аккумулятора или иметь меньшие размеры при том же времени автономной работы. Параллельные вычисления являются основным средством повышения энергоэффективности [3].
Оптимизация архитектуры программируемых устройств (процессоров и сопроцессоров) часто приводит к необходимости разрабатывать и оптимизировать алгоритмы для новой архитектуры. Появление в 2006 году графических процессоров с поддержкой вычислений общего назначения (технология NVIDIA CUD А [4]) привело к реализации разработчиками по всему миру огромного количества высокопроизводительных параллельных алгоритмов для решения самых разных задач, включая ЦОС [5, 6]. Многие сложные алгоритмы цифровой обработки сигналов строятся из обычных, базовых алгоритмов [7]. Такими базовыми алгоритмами являются дискретное и быстрое преобразование Фурье, фильтрация и корреляция сигналов, а также простые векторные и матричные операции. Подходы к параллельной реализации этих алгоритмов в настоящее время достаточно хорошо изучены.
При реализации алгоритмов цифровой обработки сигналов применяется как представление чисел в формате с фиксированной точкой, так и в формате с плавающей точкой. Серийно выпускаются процессоры, поддерживающие как тот, так и другой формат. Выбор формата используемых данных связан с различными факторами, определяемыми приложением, такими как необходимая точность результата, производительность, скорость разработки, стоимость и энергопотребление микросхемы. Реализация алгоритмов ЦОС с использованием формата с плавающей точкой часто значительно проще [8], т.к. в большинстве случаев не приходится дополнительно учитывать изменение масштаба чисел, переполнение или потерю точности: всё это делается вычислительным устройством динамически, обычно в соответствии со стандартом IEEE 754 [9, 10]. При современных технологических нормах на одном кристалле можно разместить тысячи блоков, производящих вычисления с фиксированной или плавающей точкой, но передача данных между разными частями большого чипа за один такт уже невозможна из-за больших задержек распространения сигнала по проводникам, что приводит к рассинхрони-зации приемного и передающего устройств [11]. Поэтому сейчас одна из основных проблем заключается в эффективной передаче данных между устройствами, расположенными на одном чипе - как с точки зрения реализации алгоритмов, так и с точки зрения размещения устройств на кристалле и уменьшения задержек и потерь энергии на проводниках [12]. Для решения этой проблемы применяются различные подходы, такие как применение многоядерных систем, синхронных коммутаторов и сетей на кристалле.
Целью диссертации является повышение производительности СБИС класса «система на кристалле» при выполнении цифровой обработки сигналов путем применения новых архитектурных решений, позволяющих эффективно организовать параллельную обработку данных в формате с плавающей точкой.
Научная новизна диссертации
1) Предложен способ организации векторной памяти с использованием конвертируемых режимов адресации, который позволяет размещать в памяти матрицы и обеспечивать параллельный доступ к элементам строк или столбцов матриц без транспонирования, а также реализовать другие режимы адресации, характерные для алгоритмов цифровой обработки сигналов.
2) Предложено использовать в программируемых сопроцессорах, предназначенных для цифровой обработки сигналов, векторные вычисления с поддержкой векторов переменной длины. Это позволяет исключить внутренние циклы в программах и обеспечить детерминированное время выполнения программ.
3) Предложен способ построения планировщика выполнения векторных инструкций для сопроцессора с поддержкой векторов переменной длины, основанный на расчете длительности блокировок, используемых для разрешения зависимостей по данным в программе. Планировщик, построенный таким образом, обеспечивает высокое быстродействие сопроцессора в широком диапазоне параметров выполняемой программы (длина векторов, длина последовательностей независимых инструкций) и потребляет небольшое количество аппаратных ресурсов.
4) Предложен способ построения быстродействующего конвейерного арифметического блока, выполняющего составные вычислительные операции в действительных и комплексных числах формата с плавающей точкой, такие как умножение со сложением и вычитанием, путем различного соединения арифметических блоков, выполняющих по отдельности сложение и умножение действительных чисел того же формата. Применение такого блока обеспечивает небольшую длину конвейера при выполнении простых операций, минимальное количество обращений к памяти при выполнении сложных операций, и быструю смену типа выполняемых операций.
Практическая значимость диссертации
1) Разработана RTL-модель векторного сопроцессора для цифровой обработки сигналов, которая может быть использована в качестве сложнофункционального блока при реализации СБИС класса «система на кристалле». Разработанная модель обеспечивает возможность эффективной реализации основных алгоритмов цифровой обработки сигналов (быстрое преобразование Фурье, свертка, умножение вектора на матрицу и др.) с применением чисел формата с плавающей точкой. Функционирование данной модели проверено путем выполнения на ней набора функциональных и алгоритмических тестов с использованием различных симуляторов Verilog HDL.
2) Проведен логический синтез и получена логическая структура сопроцессора с 4 вычислительными конвейерами и 96 КБ внутренней памяти данных, которая при изготовлении СБИС по технологическому процессу с проектной нормой 40 нм занимает на кристалле площадь 1,88 мм2 и может работать при тактовой частоте до 1 ГГц. Эффективность работы сопроцессора при реализации алгоритмов цифровой обработки сигналов достигает 98% и при увеличении числа вычислительных конвейеров снижается незначительно, что позволяет при необходимости получить логическую структуру сопроцессоров, имеющих в 2 или в 4 раза большую производительность.
В ЗАО НТЦ «Модуль» проводилась ОКР «Процессор-1-Модуль» по разработке архитектуры СФ-блока NM-кластера на основе матрично-векторных процессорных ядер. В состав процессорного ядра NM-кластера входит программируемый сопроцессор векторной обработки данных в формате с плавающей точкой, в котором использовались результаты разработки модели сопроцессора МЗ. Применение такого сопроцессора в составе NM6407 позволяет организовать выполнение алгоритмов цифровой обработки сигналов в числах стандартного 32-битного формата с плавающей точкой с высокой производительностью - до 20 операций за такт при тактовой частоте в 1 ГГц при реализации по технологическим нормам 40 нм. В частности, данный сопроцессор позволяет выполнять быстрое преобразование Фурье размерностью в 1024 точки за 3130 процессорных тактов, что существенно превосходит существующие процессоры цифровой обработки сигналов. Сопроцессор эффективно реализует и другие функции, такие как КИХ-фильтрация и вычисление фрагментов нейросетей.
Основные положения, выносимые на защиту
1) Архитектура и структура масштабируемого векторного сопроцессора, предназначенного для применения в составе СБИС класса «система на кристалле» для цифровой обработки сигналов.
2) Способ организации и адресации векторной памяти с несколькими раздельно адресуемыми банками, который позволяет размещать в памяти матрицы произвольного размера и получать доступ к строкам или к столбцам матрицы без транспонирования, а также упрощать реализацию нематричных алгоритмов цифровой обработки сигналов на векторных процессорах.
3) Способ построения планировщика вычислений для процессора с поддержкой векторов переменной длины. Применение векторов переменной длины позволяет упростить программы и сократить объем кода, требуемый для реализации основных алгоритмов цифровой обработки сигналов по сравнению с процессорами, использующими вектора фиксированной длины, а также обеспечивает детерминированное время выполнения программ.
4) Структура многофункционального векторного вычислительного блока, производящего операции с действительными и комплексными числами при помощи изменения порядка соединения вычислительных блоков.
и
1. Архитектура систем и алгоритмы цифровой обработки сигналов
В данной главе рассмотрены варианты реализации архитектуры процессоров и систем на кристалле (СнК), предназначенных для цифровой обработки сигналов. Также рассмотрены основные алгоритмы ЦОС и способы их реализации на параллельных процессорах.
1.1. Архитектура цифровых сигнальных процессоров
Для обработки сигналов часто применяются специализированные процессоры, позволяющие реализовать типичные алгоритмы с минимальными издержками, используя вычислительные ресурсы устройства близко к их максимальным возможностям. Такие процессоры называются ЦСП (Цифровой Сигнальный Процессор). Большинство ЦСП имеют характерные особенности архитектуры [13], позволяющие им эффективно выполнять алгоритмы цифровой обработки сигналов, отличающиеся высокой плотностью вычислений и обилием циклов.
1) Поддержка операции умножения с накоплением (Multiply-Accumulate, или MAC), которая обычно выполняется за один такт. Эта операция очень полезна при реализации алгоритмов ЦОС [14], которые включают скалярное произведение векторов, таких как фильтры с конечной импульсной характеристикой (КИХ-фильтры), корреляция и дискретное преобразование Фурье (ДПФ). Чтобы обеспечить выполнение операции MAC за один такт, ЦСП используют специальные аппаратные блоки, совмещающие умножитель, сумматор и накопительный регистр (аккумулятор). Для того чтобы последовательность таких операций можно было выполнять без переполнения, регистр-аккумулятор содержит несколько дополнительных старших разрядов (например, 8).
2) Возможность выполнять несколько операций доступа к памяти каждый такт. Это позволяет процессору производить выборку инструкции одновременно с загрузкой операндов и выгрузкой результатов предыдущих инструкций. Например, при реализации КИХ-фильтра большинство ЦСП могут выполнять операцию MAC одновременно с загрузкой отсчета и коэффициента для следующей операции MAC. Организация доступа к нескольким значениям в памяти обычно подвержена существенным ограничениям: например, все или почти все операнды должны находиться во внутренней памяти процессора, причем в разных банках. Выборка инструкций производится из отдельной па-
мяти программы, имеющей свое адресное пространство, т.е. используется гарвардская или расширенная гарвардская архитектура. Это явно отражено в названии одного из самых высокопроизводительных семейств ЦОС - SHARC фирмы Analog Devices (расшифровывается как Super Harvard Architecture).
3) Специальные режимы адресации памяти и блоки генерации адресов. Типичным режимом адресации является косвенная регистровая адресация с постинкрементом, т.е. содержимое адресного регистра увеличивается после выполнения инструкции обращения к памяти. Такая адресация полезна при последовательном доступе к элементам векторов (т.е. массивов) данных, расположенных в памяти. Помимо простой адресации с инкрементом, бывают и другие специализированные режимы: адресация по модулю, когда увеличение адресного регистра происходит по заданному модулю — этот режим применяется для реализации циркулярных буферов; адресация с бит-реверсом, которая позволяет повысить производительность некоторых алгоритмов быстрого преобразования Фурье. Помимо режимов генерации адреса для одной инструкции, ЦСП поддерживают режим прямого доступа к памяти (Direct Memory Access, DMA), который позволяет передавать блоки данных между областями памяти или между памятью и внешними устройствами без непосредственного участия процессора, освобождая его для выполнения других задач.
4) Аппаратная реализация циклов. Обычно предоставляются специальные инструкции, позволяющие организовать цикл со счетчиком (цикл for), не тратя на это дополнительных тактов. В отличие от ЦСП, при реализации циклов на процессорах общего назначения необходимо на каждой итерации цикла явно изменить значение счетчика, сравнить его с конечным значением, и если таковое не достигнуто, производить условный переход на начало цикла. Часто применяются инструкции, объединяющие эти операции. В зависимости от конкретной архитектуры, на организацию цикла уходит от 1 до 3 инструкций на каждой итерации цикла, а операции условного перехода негативно отражаются на производительности конвейерных процессоров, не использующих предсказание ветвлений и спекулятивное выполнение [15, 16].
5) Поддержка выполнения нескольких операций за такт. Большинство процессоров предоставляют возможность параллельной обработки коротких (до 8 элементов) векторов данных при помощи инструкций, выполняющих одну и ту же операцию над каждой парой или тройкой элементов этих векторов, то есть используют архитектуру
SIMD (Single Instruction, Multiple Data). Некоторые высокопроизводительные ЦСП позволяют выполнять несколько разнородных операций над несвязанными данными каждый такт; такая архитектура называется VLIW (Very Long Instruction Word), потому что в каждой инструкции необходимо закодировать все выполняемые операции вместе с их операндами, что приводит к кратному увеличению длины слова инструкции.
6) Предсказуемость времени выполнения программы. Поскольку задачи ЦОС часто выполняются в условиях реального времени, эта особенность очень важна. В современных процессорах семейства х86 микроархитектура процессора радикально отличается от видимой программисту архитектуры [17], и программа сначала подвергается трансформации внутри процессора, а затем выполняется уже новая программа, которая только функционально эквивалентна исходной. К тому же, точное количество вычислительных блоков разных типов может быть неизвестно, а доступ к памяти происходит через систему кэшей, которые вносят неопределенные задержки. Эти особенности приводят к тому, что единственным способом получить сведения о производительности на «закрытых» процессорах является измерение времени выполнения конкретной программы. В отличие от х86, предсказуемость времени выполнения программ на ЦСП достигается благодаря относительной простоте и открытости микроархитектуры (внутреннего устройства), а также прямому управлению системой памяти.
1.2. Архитектура СнК, предназначенных для цифровой обработки сигналов
Система на кристалле это микросхема сверхвысокой степени интеграции, выполняющая большую часть функций проектируемого устройства [18, 19, 20]. Для реализации СнК могут использоваться как заказные микросхемы (ASIC), так и микросхемы программируемой логики (FPGA). Применение FPGA позволяет существенно сократить время разработки и модификации СнК по сравнению с процессом изготовления ASIC [21], но FPGA обладают значительно меньшей (в 10—100 раз) логической емкостью и энергоэффективностью в связи тем, что для обеспечения гибкости FPGA используют многократно больше логических элементов и коммутационных проводников, чем ASIC [22, 23, 24]. Из-за низкой энергетической эффективности FPGA хуже подходят для реализации высокопроизводительных вычислительных устройств, чем ASIC. Несмотря на это, многие специализированные высокопроизводительные вычислительные устройства
реализуются именно на FPGA, т.к. разработка и производство ASIC требует очень больших финансовых и временных затрат.
Рис. 1.1. Типовая структура СнКдля цифровой обработки сигналов
Типовая структура СнК для цифровой обработки сигналов представлена на рис. 1.1. В ее входят следующие основные блоки.
1) Центральный процессор для управления системой. Обычно это достаточно производительное процессорное ядро типа RISC, которое занимается распределением работы по остальным блокам, а также решает вычислительные задачи, не требующие очень высокой производительности, или те, которые сложно или нецелесообразно реа-лизовывать аппаратно (например, JIT-компиляцию кода).
2) Интерфейсные блоки для работы с периферией, такие как UART, АЦП.
3) Внутренняя память типа SRAM для хранения обрабатываемых данных. Это может быть как кэш, так и выделенная память с прямой адресацией. В системах реального времени обычно применяется второй вариант, т.к. кэш вносит недетерминированные задержки в выполнение вычислительных задач [25, 26, 27].
4) Контроллеры прямого доступа к памяти (DMA) для быстрой передачи массивов данных между памятью и устройствами, либо между различными областями памяти. Такие контроллеры в принципе могут поддерживать очереди задач и производить доступ к непоследовательным адресам в памяти [28] - например, для работы с многомерными массивами, но такие решения встречаются редко. Контроллеры DMA работают асинхронно с остальными блоками.
5) Шины и коммутаторы для соединения контроллеров DMA, памяти и устройств. Шины применяются только в небольших системах, т.к. не позволяют произ-
водить больше одной передачи в каждый момент времени. Часто используется две и более шины, к которым подключены различные устройства. Этот подход позволяет повысить производительность по сравнению с одной шиной, но плохо масштабируется, т.е. при увеличении числа независимых шин происходит существенное усложнение правил передачи данных. В больших системах применяются либо полные коммутаторы (Crossbar switch), соединяющие, например, каждое вычислительное устройство с каждым блоком памяти, либо сети на кристалле. Коммутаторы масштабируются лучше отдельных шин, но их размер пропорционален квадрату числа подключенных устройств. Сети на кристалле масштабируются значительно лучше, и могут содержать 100 и более ядер [29], но разработка алгоритмов для такте устройств может быть очень сложной [30].
6) Специализированные цифровые или аналоговые блоки. Для того чтобы какой-либо алгоритм выполнялся с высокой производительностью и/или энергоэффективностью, в состав СнК часто включаются специализированные блоки. Существует множество вариантов реализации таких блоков, всё зависит от требуемых алгоритмов и характеристик. Самый простой и эффективный вариант - когда блок выполняет один алгоритм для входных данных фиксированной размерности, например, КИХ-фильтр [31, 32] или БПФ. Такие блоки применяются как при проектировании ASIC [33, 34], так и в составе FPGA [35,36].
7) Программируемые сопроцессоры [37, 38]. Эти устройства применяются реже, чем специализированные блоки с фиксированной функциональностью, но они способны выполнять более широкий набор задач, т.е. обладают большей гибкостью. Однако их производительность обычно ниже, чем у блоков с фиксированной функциональностью -это связано с реализацией требуемых режимов адресации данных [39, 40] и, соответственно, обеспечением эффективной загрузки вычислительного конвейера.
Как отмечено выше, организация передачи данных между составляющими частями СнК очень важна для обеспечения эффективной работы. Помимо физической топологии системы (шина, коммутатор, различные виды сетей) важен и используемый протокол управления передачами. Многопроцессорные системы традиционно разделялись на две категории [41]: системы с разделяемой памятью, которые подразделяются на однородные (UMA) и распределенные или неоднородные (NUMA), и системы, основанные на передаче сообщений (MPI). Несколько лет назад появилась и третья категория - потоковые архитектуры [42, 43, 44], которые особенно хорошо подходят для реализации
систем ЦОС [45]. Суть их заключается в том, что каждое вычислительное ядро не обращается к глобальной памяти или другим ядрам по необходимости, а работает с заранее организованными потоками входящих и исходящих данных. Это позволяет скрыть ла-тентность памяти и не использовать кэши, что обеспечивает детерминированное время выполнения программы.
1.3. Архитектура параллельных процессоров
Архитектура параллельных вычислительных устройств - крайне обширная тема, т.к. за последние полвека было создано огромное количество различных вычислительных машин, способных производить более одной вычислительной операции за такт, имеющих разное предназначение и порой совершенно разное устройство [47, 41], и в последние годы параллельные вычисления набирают все большую популярность [3]. Классифицировать параллельные архитектуры можно по уровню системы, на котором используется параллелизм.
1) Синхронная обработка независимых гетерогенных операций из одной программы. К этому классу относятся суперскалярные архитектуры, которые выявляют независимые инструкции автоматически [46], и архитектуры со сверхдлинным словом инструкции (VLIW - Very Long Instruction Word), которые получают эту информацию из программы. Несмотря на возможность выполнять несколько инструкций за такт, такие машины обычно не считаются параллельными [47].
2) Синхронная или синхронно-конвейерная обработка векторов данных, управляемая одной инструкцией (SIMD - Single Instruction Multiple Data) [48]. К этому классу относятся классические векторные процессоры, применявшиеся в суперкомпьютерах 1980-2000-х годов, например, Cray XI и Cray YMP [16, с. F-4], а также процессоры, поддерживающие векторные инструкции в виде расширения основной архитектуры, например ММХ, SSE и AVX в процессорах архитектуры х86 [49], AltiVec в PowerPC [50], NEON в ARM [51]. Важной характеристикой SIMD-процессоров является длина обрабатываемых векторов. В современных CPU с поддержкой векторных расширений она обычно достигает 4-16 элементов, тогда как в векторных процессорах суперкомпьютеров вектора могли быть очень длинными и обрабатываться за множество тактов, а длина их задавалась специальным регистром [16, с. F-16].
3) Асинхронная обработка различных данных, управляемая одной программой, работающей на раздельных вычислительных устройствах (SPMD - Single Program Multiple Data). Этот сравнительно новый класс [52] включает системы на кристалле, состоящие из множества одинаковых ядер, а также сами вычислительные ядра, если они способны выполнять несколько копий одной и той же программы. Ярким примером архитектуры класса SPMD являются современные графические процессоры (GPU) [53].
4) Асинхронная обработка различных данных, управляемая разными программами в рамках одной системы (MIMD - Multiple Instruction Multiple Data). К этому классу относятся современные многоядерные CPU, которые оптимизированы под выполнение до 20 разных программ одновременно (например, Intel Xeon Е7 [54]), а также многопроцессорные системы, СнК с программируемыми ядрами, и сети на кристалле (например, семейство процессоров Tilera [29]). Сюда также относятся сопроцессоры Intel Xeon Phi с архитектурой MIC [55], объединяющие на одном кристалле десятки х86-совместимых ядер, поддерживающих работу с длинными векторами через специальные SIMD расширения набора инструкций.
Данная классификация не является исключающей, т.к. многие устройства используют несколько видов параллелизма сразу. Например, графические процессоры организованы как массив независимых вычислительных ядер (MIMD), где каждое ядро обрабатывает множество потоков, выполняющих одну программу (SPMD); эти потоки объединены в синхронные группы (SIMD), а для повышения загрузки конвейерных вычислительных устройств используется ограниченная суперскалярная обработка (в устройствах NVIDIA) или VLIW (в устройствах AMD). Многоядерные процессоры с архитектурой х86 организованы как несколько независимых ядер (MIMD), где каждое ядро поддерживает векторные расширения (SIMD) и использует суперскалярную обработку.
В устройствах для цифровой обработки сигналов параллельная обработка данных в настоящее время встречается редко, за исключением аппаратных ускорителей, предназначенных для быстрого выполнения одного алгоритма. Многие ЦСП имеют поддержку VLIW и способны таким образом выполнять несколько инструкций за такт. Часто применяются многоядерные СнК и многопроцессорные системы, состоящие из непараллельных устройств. Однако архитектуры, обладающие явным параллелизмом на уровне данных, т.е. SIMD или SPMD, на рынке ЦСП представлены лишь небольшим количеством продуктов:
1) SIMD расширения наборов инструкций процессоров общего назначения -вышеупомянутые AltiVec, NEON, ММХ и др.
2) Процессоры Analog Devices ADSP-21160 и ADSP-21161N [56] могут выполнять две операции с плавающей точкой за такт в режиме SIMD.
3) Два вычислительных блока процессора TigerSHARC ADSP-TS201S [57] могут быть задействованы в режиме SIMD, так что каждый из них может выполнять операцию над 64-битными данными с поддержкой различного их разбиения (на байты, слова и т.д.).
4) Семейство процессоров CWvX от Chip Wrights [58], выполняющих от 8 до 16 операций с 32-битными целыми числами за такт при частоте в 200-325 МГц.
5) Некоторое количество исследовательских проектов, например, проект eLite ЦОС, проводящийся в ЮМ [59], проект SAMIRA из Vodafone [60, 61], а также проект VIRAM из университетов Stanford и Berkeley [62].
6) Процессоры семейства «Мультикор» производства ГУЛ НПЦ «Элвис» [38].
7) Сопроцессор векторно-матричного умножения с фиксированной точкой NeuroMatrix в устройствах NM6403-NM6406 производства ЗАО НТЦ «Модуль» [63, 64].
Таким образом, архитектуры типа SIMD, обладающие меньшей сложностью, большей эффективностью и лучшей масштабируемостью, чем архитектуры типа VLIW при выполнении задач цифровой обработки сигналов и изображений [65], относительно слабо распространены в мире ЦОС.
Как было замечено выше, графические процессоры представляют сразу несколько видов параллелизма. При этом они содержат тысячи вычислительных блоков, которые могут быть эффективно задействованы прикладными задачами, и позволяют получить производительность на уровне нескольких терафлопс (триллионов операций с плавающей точкой в секунду) на одном чипе. Для разработки прикладных вычислительных программ, работающих на GPU, используются специальные средства, такие как OpenCL, NVIDIA CUDA и вычислительные шейдеры, поддерживаемые библиотекой Microsoft DirectX начиная с 11 версии. Эти средства представляют одну и ту же модель исполнения, предусматривающую выполнения множества потоков команд, и имеют примерно одинаковые возможности. Модель исполнения OpenCL описана более детально в разделе 2.1.
1.4. Архитектура процессоров с поддержкой явного параллелизма на уровне инструкций (VLIW)
Отличительная особенность процессоров с архитектурой типа VLIW - поддержка выполнения нескольких разнородных операций за такт, причем такие группы параллельно выполняемых операций должны быть явно указаны в программе. Обычно применяют формат инструкций фиксированной длины, где закодированы операции для различных функциональных устройств. Из-за этого размер слова инструкции существенно возрастает по сравнению с обычными процессорами, т.е. инструкция становится очень длинной - отсюда название «Very Long Instruction Word». Существует еще одна разновидность архитектур такого типа - EPIC (Explicitly Parallel Instruction Computing), разработанная компаниями Intel и HP в виде процессоров семейства Itanium.
Архитектуры типа VLIW часто применяются в ЦСП, поскольку они позволяют получить относительно высокую производительность за счет эффективного использования имеющихся функциональных устройств без применения сложных схем суперскалярного планирования. Структурная схема процессора TigerSHARC фирмы Analog Devices представлена на рис. 1.2 как яркий пример применения VLIW в ЦСП.
DATA ADDRESS GENERATION
24М BITS INTERNAL MEMORY
PROGRAM SEQUENCER
INTEGER J ALU
32-BIT ж 32-BIT
a
ADDR FETCH
L
Г
, J-BUS ADDR
J-BUS DATA
, K-BUS ADDR
ё
l-BUS ADOR
l-BUS DATA
INTEGER К ALU
32-BIT X 32 BIT
'/"'SHfflC
Ü
CLU
m
X
REGISTER FILE 32-BIT X 32-BIT
MEMORY BLOCKS (PAGE CACHE) fl x CROSSBAR CONNÛT)
A"
12?
32
32
5ZÜ
S-BUS ADDR .
NT
S-BUS DATA J2I
soc£
l/F
128
Y
REGISTER FILE 32-BIT x 32-ВП
2
SOC BUS
о
COMPUTATIONAL BLOCKS
л ag
JTAG PORT S
MULTI-PROC
SDRAM CTRL
C-BUS ARB
EXTERNAL PORT 32
-«/-»-ADDR 64
-«T^Vctrl
•*t/*-CTRL
| REQ y
Tunk ports
-V
fcfe
-v.
Рис. 1.2. Структура процессора ADI TigerSHARC ADSP-TS201S [57]
Инструкции процессора TigerSHARC кодируются с помощью 128 битов, и содержат 4 команды. В набор его инструкций входят как команды общего назначения (целочисленная арифметика, арифметика с плавающей точкой, ветвления), так и специальные команды для ускорения различных операций, характерных для ЦОС, например, комплексное умножение с накоплением (но только для 16-битных целых чисел), дополнительные битовые операции, параллельная обработка 8- или 16-битных компонентов 32-битных регистров в стиле SIMD. Все команды поддерживают условное выполнение, что позволяет существенно уменьшить число ветвлений в программе. Для ускорения циклов также предусмотрено статическое предсказание ветвлений, реализуемое программистом или компилятором. Благодаря этим возможностям, процессор TigerSHARC является одним из самых эффективных и быстродействующих ЦСП.
Хотя архитектуры типа VLIW и позволяют повысить производительность без увеличения числа функциональных устройств процессора, у них есть ряд существенных недостатков:
1) В большинстве случаев программа не может использовать все доступные функциональные устройства, и поэтому во многих инструкциях некоторые поля оказываются пустыми, неиспользованными. Это приводит к существенному увеличению объема кода по сравнению с более традиционными RISC-процессорами. Чем больше максимальное число команд в инструкции, тем больше в них остается незаполненных мест. Для сокращения объема кода можно применять какие-либо схемы компрессии, не записывающие неиспользованные команды, но это усложняет блоки выборки и декодирования.
2) Компилировать программы для VLIW-архитектур значительно сложнее, чем для RISC-процессоров. Компилятор должен учитывать имеющиеся в наличии функциональные устройства и их латентности для генерации быстродействующего кода. К тому же, при использовании VLIW отсутствует возможность выполнять один и тот же код на процессорах схожей архитектуры с разным количеством функциональных устройств, поскольку кодировка инструкций будет отличаться; программы необходимо перекомпилировать для каждого варианта процессора. Применение управляемых сред исполнения с JIT (Just In Time) компиляцией помогает решить эту проблему, но такие среды (а именно Oracle Java и Microsoft .NET) применяются в основном для веб-серверов и прикладных приложений. Они не используются в высокопроизводительных системах ввиду
недостаточно высокой эффективности получаемых программ и наличия недетерминированных задержек во время выполнения, связанных с автоматическим удалением неиспользуемых объектов из памяти (сборкой мусора). Архитектура EPIC решает проблему двоичной совместимости путем использования инструкций небольшой ширины (по 3 команды в каждой), в которых дополнительно записаны флаги, определяющие группы независимых инструкций. Такие группы распределяются процессором по функциональным устройствам аппаратно; при наличии вышеупомянутых флагов реализация такого динамического параллелизма значительно проще, чем обычный суперскалярный подход.
3) По сравнению с процессорами, выполняющими одну операцию за такт, процессорам VLIW-архитектурой необходимо на каждом такте читать значительно больше исходных данных из регистрового файла (RF, Register File) и записывать результатов. Это приводит к росту числа портов RF. Поскольку площадь памяти с ростом числа портов кратно увеличивается без изменения объема, часто RF разделяют на банки, между которыми распределяется нагрузка. В рассмотренном выше процессоре TigerSHARC имеется два банка RF: X и Y. Такое разделение обычно сопровождается введением дополнительных правил на то, откуда и в каком количестве может читать данные каждая инструкция, что существенно усложняет и без того непростой процесс компиляции программ.
При всех этих недостатках, применение архитектур типа VLIW является одним из самых простых решений для повышения эффективности работы процессоров.
1.5. Базовые алгоритмы цифровой обработки сигналов
Несмотря на многообразие областей применения цифровой обработки сигналов, многие алгоритмы строятся на основе совместно используемых базовых алгоритмов. Далее рассмотрены эти алгоритмы с точки зрения возможности их параллельной реализации.
1.5.1. Дискретное и быстрое преобразование Фурье
Дискретное преобразование Фурье (ДПФ) это операция, переводящая цифровое представление сигнала во временной области в дискретный спектр этого сигнала и обратно. Преобразование работает только с конечными сигналами, и размерность спектра
обычно соответствует размерности исходного вектора. ДПФ вектора х размерности N
точек определяется следующей формулой: N-1
?{х]к ~ Ск ~ ^ хп
ИЛ
пк N
(1)
п=О
В выражении (1) символом обозначаются комплексные корни Ы-й степени из единицы, которые возводятся в степень пк: 2т
= (2)
Результат ДПФ, то есть спектр сигнала, содержит комплексные числа. Если сигнал состоит только из действительных чисел, то спектр также содержит комплексные числа, но обладает симметрией относительно среднего элемента [66]: Угг: 1т хп = 0 => Ск = (3)
Обратное преобразование, т.е. получение сигнала во временной области из его спектра, выполняется практически по тем же формулам и алгоритмам, что и прямое, с двумя отличиями (4): используется комплексное дополнение множителей после выполнения алгоритма обычно производится нормализация, т.е. деление сигнала на квадрат числа отсчетов. Эти отличия не влияют на реализацию алгоритмов, поэтому далее рассматривается только прямое преобразование.
N — 1
N-1
т-ЧПп = *п = ^^ с^1* Ск(-Ш»ку
к-0 к-О
ДПФ можно записать в матричной форме:
111- 1 1
N
(4)
Похожие диссертационные работы по специальности «Элементы и устройства вычислительной техники и систем управления», 05.13.05 шифр ВАК
Микро-ЭВМ с преобразованием информации отображением множеств на основе структур данных, размещаемых в едином запоминающем устройстве1984 год, доктор технических наук Мелехин, Виктор Федорович
Исследование методов реализации алгоритмов обработки больших потоков данных за счет конвейерного распараллеливания2009 год, кандидат технических наук Лысаков, Константин Федорович
Разработка и исследование аппаратурно-ориентированных алгоритмов для нахождения собственных значений матриц2002 год, кандидат технических наук Стрельников, Олег Иванович
Средства и методы повышения производительности и снижения энергопотребления систем на кристалле, реализуемых на базе программируемых логических интегральных схем2009 год, кандидат технических наук Шалтырев, Владимир Алексеевич
Системное проектирование оптоэлектронных процессоров с обработкой сигналов в ПЗС-фотоприемниках2011 год, доктор технических наук Молодяков, Сергей Александрович
Заключение диссертации по теме «Элементы и устройства вычислительной техники и систем управления», Пантелеев, Алексей Юрьевич
4.6. Выводы
По результатам разработки сопроцессора МЗ сделаны следующие выводы:
1) Сопроцессор МЗ обеспечивает возможность эффективной реализации основных алгоритмов ЦОС (БПФ, свертка, умножение вектора на матрицу и др.) с применением чисел формата «с плавающей точкой». Максимальная производительность рассматриваемых вариантов сопроцессора составляет от 20 до 80 вычислительных операций за такт, а реальная производительность достаточно хорошо масштабируется при увеличении количества вычислительных блоков. При реализации на ASIC по технологическим нормам 40 нм сопроцессор позволяет получить производительность вычисления БПФ от сигнала размерностью в 1024 отсчета на уровне 327 миллионов отсчетов в секунду, что превосходит существующие процессоры цифровой обработки сигналов, такие как ADI TigerSHARC и TI TMS320C674x, в 4.9 и более раз.
2) Использование потоковой модели вычислений, представленной в сопроцессоре МЗ в виде двухуровневой системы команд, позволяет организовать безопасные асинхронные передачи данных во время работы сопроцессора над какой-либо вычислительной задачей. Безопасность передач обеспечивается разделением внутренней памяти на сегменты и блокированию операций, которые могут изменить данные в сегментах, с которыми работают предыдущие операции. Применение двухуровневой системы команд также позволяет заменить внешние циклы в программах на множество запусков последовательности команд, реализующей тело цикла, со смещением сегментов данных, которые обрабатываются телом цикла. В совокупности с заменой внутренних циклов на инструкции, обрабатывающие вектора переменной длины, это позволяет полностью избавиться от циклов и условных переходов в программах и исключить их из набора инструкций сопроцессора.
Заключение
Основной результат диссертации заключается в решении актуальной задачи повышения производительности систем ЦОС, работающих с числами формата с плавающей точкой, путем применения новых способов построения блоков сопроцессоров и специализированной модели исполнения программ, позволяющих получить высокую эффективность работы параллельных программируемых сопроцессоров при решении основных задач ЦОС. Рассматривалась реализация алгоритмов быстрого преобразования Фурье, вычисления свертки, умножения вектора на матрицу и редукции.
Частные научные результаты:
1) Предложен способ построения системы векторной памяти, реализующей конвертируемые режимы адресации, которая позволяет размещать в памяти матрицы и обеспечивать параллельный доступ к элементам строк или столбцов матриц без транспонирования, а также реализовать другие режимы адресации, характерные для алгоритмов цифровой обработки сигналов. По сравнению с векторной памятью, реализующей универсальную операцию косвенной векторной адресации, предлагаемая система характеризуется лучшей масштабируемостью, а также отсутствием необходимости производить программное вычисление адресов. При реализации на ПЛИС, такая система с 16 банками памяти требует в 2 раза меньше логических ячеек и может работать на тактовой частоте в 2,3 раза большей, чем система памяти с поддержкой косвенной векторной адресации.
2) Предложено использовать в программируемых сопроцессорах, предназначенных для ЦОС, векторные вычисления с поддержкой векторов переменной длины. По сравнению с использованием векторов фиксированной длины, характерных для большинства используемых в настоящее время процессоров, применение такой модели исполнения позволяет исключить внутренние циклы в программах. По сравнению с использованием многопоточной модели исполнения, характерной для устройств с поддержкой ОрепСЬ, использование векторов переменной длины позволяет обеспечить детерминированное время выполнения программ, что важно при построении систем, работающих в условиях реального времени. В совокупности с применением системы векторной памяти, аппаратно реализующей требуемые режимы адресации, такая модель исполнения позволяет существенно сократить набор инструкций сопроцессора за счет исключения инструкций, используемых для вычисления адресов и организации циклов.
3) Разработан планировщик выполнения векторных инструкций для сопроцессора с поддержкой векторов переменной длины, основанный на расчете длительности блокировок, используемых для разрешения зависимостей по данным в программе. Такой планировщик обеспечивает высокое быстродействие сопроцессора в широком диапазоне параметров выполняемой программы (длина векторов, длина последовательностей независимых инструкций) и потребляет небольшое количество аппаратных ресурсов.
4) Предложен способ построения быстродействующего конвейерного арифметического блока, выполняющего составные вычислительные операции в действительных и комплексных числах формата с плавающей точкой, такие как умножение со сложением и вычитанием, путем различного соединения арифметических блоков, выполняющих по отдельности сложение и умножение действительных чисел того же формата. Блок, построенный таким образом, обеспечивает небольшую латентность простых операций (от 1 такта) и быструю смену типа выполняемых операций (более чем в половине случаев переключение операций выполняется без задержки). Также предложен способ построения конвейерного арифметического блока, основанного на использовании ассоциативного сумматора 3 чисел формата с плавающей точкой, который характеризуется большей точностью получаемых результатов, что приводит к уменьшению погрешности вычисления БПФ на 7-14%, но такой блок существенно сложнее в реализации.
Основной практический результат диссертации состоит в разработке и внедрении ЮЪ-модели сопроцессора МЗ, в котором использованы решения, предложенные в диссертации. Такой сопроцессор обеспечивает возможность эффективной реализации основных алгоритмов цифровой обработки сигналов с применением чисел формата с плавающей точкой. В частности, при реализации алгоритма БПФ от 1024 точек производительность сопроцессора с 4 вычислительными конвейерами достигает 97,6% от максимальной, а при вычислении свертки в комплексных числах с размерностью ядра 32 точки - 98,3%. При увеличении числа конвейеров эффективность работы сопроцессора при достаточно больших размерах решаемых задач снижается незначительно.
Проведен логический синтез ЫТЬ-модели сопроцессора МЗ и получена логическая структура сопроцессора с 4 вычислительными конвейерами и 96 КБ внутренней памяти данных, которая при изготовлении СБИС по технологическому процессу с проу ектной нормой 40 нм занимает на кристалле площадь 1,88 мм и может работать при тактовой частоте до 1 ГГц. С учетом вышеуказанных показателей эффективности реализации алгоритмов, данный сопроцессор существенно (более чем в 4 раза) превосходит по производительности существующие серийные ЦСП.
Перечень используемых сокращений
АЦП - аналого-цифровой преобразователь
БИХ - бесконечная импульсная характеристика
БПФ - быстрое преобразование Фурье
ДПФ - дискретное преобразование Фурье
КИХ - конечная импульсная характеристика
САПР - система автоматизированного проектирования
СБИС - сверхбольшая интегральная схема
СнК - система на кристалле
СФ-блок - сложнофункциональный блок
ЦОС - цифровая обработка сигналов
ЦСП - цифровой сигнальный процессор
ALU - Arithmetic and Logic Unit
ASIC - Application-Specific Integrated Circuit
BRAM - Block Random Access Memory
CPE - Cycles per Element
CPU - Central Processing Unit
CUDA - Compute Unified Device Architecture
DMA - Direct Memory Access
FFT - Fast Fourier Transform
FIR - Finite Impulse Response
FLOPS - Floating-Point Operations per Second
FMA - Fused Multiply-Add
FPGA - Field Programmable Gate Array
FPU - Floating-Point Unit
GPU - Graphics Processing Unit
LSU - Load-Store Unit
LUT-Look-Up Table
MAC - Multiply-Accumulate
MAD - Multiply-Add
MIMD - Multiple Instructions Multiple Data MMX - Multimedia Extensions N1 - Number of Independent Instructions NL - Number of Lanes RF - Register File
RISC - Reduced Instruction Set Computer
RTL - Register Transaction Level
SIMD - Single Instruction Multiple Data
SPMD - Single Program Multiple Data
SRAM - Static Random Access Memory
UART - Universal Asynchronous Receiver-Transmitter
VL - Vector Length
VLIW - Very Long Instruction Word
Список литературы диссертационного исследования кандидат технических наук Пантелеев, Алексей Юрьевич, 2013 год
Литература
1. Smith S.W. The Scientist and Engineer's Guide to Digital Signal Processing // California Technical Publishing, San Diego, Calif, USA - 640 p., 1997.
2. International Technology Roadmap for Semiconductors, 2011 Edition. URL: http://www.itrs.net/Links/2011TTRS/Home201 l.htm (дата обращения: 14.10.2012).
3. Asanovic К., Bodik R., Demmel J. et al. A View of the Parallel Computing Landscape // Communications of the ACM, Vol. 52, no. 10, Oct. 2009.
4. NVIDIA CUD A. URL: http://www.nvidia.com/obiect/cuda home_new.html (дата обращения: 14.10.2012).
5. Garland M., Le Grand S., Nickolls J. et al. Parallel Computing Experiences with CUDA // IEEE Micro, Vol. 28 no. 4, pp. 13-27, 2008.
6. Пантелеев А.Ю. Цифровая обработка сигналов на современных графических процессорах // Цифровая обработка сигналов. — 2012. - № 3. — С. 65—71.
7. Constantinides G.A., Cheung P.Y.K., Luk W. Synthesis and Optimization of DSP Algorithms // Kluwer Academic Publishers, USA, 162 p., 2004.
8. Inacio C., Ombres D. The DSP Decision: Fixed Point or Floating? // IEEE Spectrum, Vol. 33, no. 9, pp. 72-74, September 1996.
9. IEEE Standard for Binary Floating-Point Arithmetic (IEEE Std. 754-1985) // IEEE Computer Society, 1985.
10. IEEE Standard for Floating-Point Arithmetic (IEEE Std. 754-2008) // IEEE Computer Society, 2008.
11. Matzke D. Will Physical Scalability Sabotage Performance Gains? // Computer, Vol. 30, no. 9, pp. 37-39, September 1997.
12. Ho R. On-Chip Wires: Scaling and Efficiency. Ph.D. dissertation // Dept. of Electrical Engineering, Stanford University, August 2003.
13. Choosing a DSP Processor // Berkeley Design Technology, Inc., 2000.
14. Eyre J., Bier J. DSP Processors Hit the Mainstream // Computer, Vol. 31, no. 8, pp. 51-59, August 1998.
15. Lilja D.J. Reducing the Branch Penalty in Pipelined Processors // Computer, Vol. 21, no. 7, pp. 47-55, July 1988.
16. Hennessy J.L., Patterson D.A. Computer Architecture: A Quantitative Approach. Fourth edition // Morgan Kaufmann, USA, 2007.
17. Бессонов О. Обзор микроархитектур современных десктопных процессоров // iXBT.com, 2006. URL: http://www.ixbt.com/cpu/cpu-microarchitecture-part-l.shtml (дата обращения: 14.10.2012).
18. Bergamaschi R.A., Lee W.R. Designing Systems-on-Chip Using Cores // Proc. 37th Annual Design Automation Conference, pp. 420-425, 2000.
19. Шагурин И. Системы на кристалле. Особенности реализации и перспективы применения // Электронные компоненты №1, с. 37-39, 2009.
20. Немудров В., Мартин Г. Системы на кристалле. Проектирование и развитие // М.: Техносфера, 2004.
21. Шалтырев В.А. Средства и методы повышения производительности и снижения энергопотребления систем на кристалле, реализуемых на базе программируемых логических интегральных схем : дис. ... канд. тех. наук : 05.13.05 // Шалтырев Владимир Алексеевич. —М., 2009. — 149 с.
22. Kuon I., Rose J. Measuring the gap between FPGAs and ASICs // IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, Vol. 62, no. 2, pp. 203215,2007.
23. Shang L., Kaviani A.S., Bathala K. Dynamic Power Consumption in Virtex-II FPGA Family // Proc. 10th international symposium on Field-programmable gate arrays, pp. 157-164,2002.
24. Li F., Chen D., He L., Cong J. Architecture Evaluation for Power-Efficient FPGAs // Proc. 11th international symposium on Field programmable gate arrays, pp. 175-184, 2003.
25. Sebek F. The state of the art in Cache Memories and Real-Time Systems // Technical Report, Malardalen Unirversity, Sweden, 2001.
26. Носко M., Kalibera T. Reducing Performance Non-determinism via Cache-aware Page Allocation Strategies // Proc. first joint WOSP/SIPEW international conference on Performance engineering, pp. 223-234, 2010.
27. Starner J. Controlling Cache Behavior to Improve Predictability in Real-Time Systems // Proc. 10th Euromicro Workshop on real-time systems, 1998.
28. PrimeCell Single Master DMA Controller (PL081) Technical Reference Manual // ARM, 2001.
29. Tilera Processor Family. URL: hUp://www.tilera.com/products/processors (дата обращения: 14.10.2012).
30. Mattson T.G., Van der Wijngaart R., Frumkin M. Programming the Intel 80-core network-on-a-chip Terascale Processor // Proc. 2008 ACM/IEEE Conference on Supercomputing (SC'08), Art. 38,2008.
31. Evans J.B. An Efficient FIR Filter Architecture // 1993 IEEE International Symposium on Circuits and Systems (ISCAS '93), Vol. 1, pp. 627-630, May 1993.
32. Lerner B. Computing Module for Efficient FFT and FIR Hardware Accelerator // United States patent application US 2010/0036898 Al, February 2010.
33. Song-Nien Tang, Jui-Wei Tsai, Tsin-Yuan Chang. A 2.4-GS/s FFT Processor for OFDM-Based WPAN Applications // IEEE Transactions on Circuits and Systems II: Express Briefs, Vol. 57, no. 6,2010
34. He S., Torkelson M. A New Approach to Pipeline FFT Processor // Proceedings of IPPS '96, The 10th International Parallel Processing Symposium, pp. 766-770, 1996.
35. Patil В., Patil G. et al. FPGA Based Design of a High Speed 32-Bit Floating Point FFT Processor with Performance Comparison with traditional FFT // International Journal of Computer Applications, Vol. 1, No. 29, 2010.
36. Altera FFT MegaCore Function User Guide // Altera, 2011.
37. Зубковский П.С., Ивасюк E.B., Аряшев С.И. Сопроцессор комплексных вычислений // Проблемы разработки перспективных микро- и наноэлектронных систем -2010. Сборник трудов / под общ. ред. академика РАН A.JI. Стемпковского. - М.: ИППМ РАН, 2010. С. 356-359.
38. Солохина Т., Александров Ю. и др. Отечественные трехъядерные сигнальные микроконтроллеры с производительностью 1.5 GFLOPS // Электронные компоненты, №6 2006. С. 73-78.
39. Valero М., Lang Т., Ayguade Е. Conflict-free access of vectors with power-of-two strides // 6th international conference on Supercomputing, New York : ACM, 1992.
40. Shahbahram A., Juurlink В., Vassiliadis S. Efficient Vectorization of the FIR Filter // 16th Annual Workshop on Circuits, Systems and Signal Processing (ProRISC), 2005.
41. Culler D.E., Singh J.P., Gupta A. Parallel Computer Architecture: a Hardware/Software Approach //Morgan Kaufmann, USA, 1999.
42. Kapasi U.J., Rixner S., Dally W.J. et al. Programmable Stream Processors // Computer, Vol. 36, no. 8, pp. 54-62, August 2003.
43. Ciricescu S., Essick R., Lucas B. et al. The Reconfigurable Streaming Vector Processor (RSVP) // Proc. 36th International Symposium on Microarchitecture, 2003.
44. Wen M., Wu N., Zhang C. et al. FT64: Scientific Computing with Streams // High Performance Computing, 2007.
45. Stream Processing: Enabling the new generation of easy to use, high-performance DSPs. White paper // Stream Processors, Inc., June 2008.
46. Smith J.E., Sohi G.S. The Miroarchitecture of Superscalar Processors // Proc. IEEE, Vol. 83, no. 12, pp. 1609-1624, December 1995.
47. Duncan R. A Survey of Parallel Computer Architectures // Computer, Vol. 23, no. 2, pp. 5-16, Feb. 1990.
48. Flynn M.J. Very High-Speed Computing Systems // Proc. IEEE, Vol. 54, no. 12, pp. 1901-1909, Dec. 1966.
49. Intel 64 and IA-32 Architectures Software Developer Manual // Intel Corporation, May 2012.
50. AltiVec Technology Programming Environments Manual // Freescale, April 2006.
51. RealView Compilation Tools Version 4.0 Assembler Guide // ARM, 2010.
52. Darema F., George D.A., Norton V.A., Pfister G.F. A single-program-multiple-data computational model for EPEX/FORTRAN // Parallel Computing, Vol. 7, no. 1, pp. 11-24, April 1988.
53. Owens J.D., Houston M., Luebke D. et al. GPU Computing // Proc. IEEE, Vol. 96, no. 5, pp. 879-899, May 2008.
54. Intel Xeon E7-8800/4800/2800 Product Families Datasheet // Intel Corporation, April 2011.
55. Intel Many Integrated Core (MIC) Architecture. URL: http://www.intel.com /conient/w^wAv/us/enyarchitecture-and-technology/manv-integrated-core/intel-many-integrated-core-architecture.html (дата обращения: 14.10.2012).
56. SHARC Processor ADSP-21161N // Analog Devices, Inc., 2009.
57. TigerSHARC Embedded Processor ADSP-TS201S // Analog Devices, Inc., 2006.
58. ChipWrights CWvX Systems-on-Chip. URL: http://www.chipwrights.com /comp chart.php (дата обращения: 14.10.2012).
59. eLite DSP Project. URL: http://researcher.watson.ibm.com/researcher /view_project.php?id=2899 (дата обращения: 14.10.2012).
60. Cichon G., Robelly P., Seidel H. et al. SAMIRA: A SIMD-DSP Architecture Targeted to the Matlab Source Language // Proc. Global Signal Processing Expo & Conference (GSPX'04), Santa Clara, USA, July 2004.
61. Matiis E., Seidel H., Limberg T. et al. A GFLOPS Vector-DSP for Broadband Wireless Applications // IEEE Custom Integrated Circuits Conference (CICC'06), pp. 543-546, 2006.
62. Kozyrakis C.E., Patterson D.A. Scalable Vector Proecessors for Embedded Systems // IEEE Micro, Vol. 23, no. 6, pp. 36-45, 2003.
63. Процессор цифровой обработки сигналов NM6406. URL: http://w\vw.module.ru/ruproducts/pi'oc/nm6406.shtrnl (дата обращения: 14.10.2012).
64. Черников В., Виксне П., Фомин Д. Однокристальный цифровой нейропроцес-сор с переменной разрядностью операндов // Приборостроение, 1996.
65. Kozyrakis С.Е., Patterson D.A. Vector vs. Superscalar and VLIW Architectures for Embedded Multimedia Benchmarks // Proc. 35th International Symposium on Microarchitecture, Istanbul, Turkey, November 2002.
66. Jones D.L. DFT Definition and Properties // Connexions, 2006.
67. Кашкаров В.А., Мушкаев С.В. Организация параллельных вычислений в алгоритмах БПФ на процессоре NM6403 // Цифровая обработка сигналов №1, 2001.
68. Cooley J.W., Tukey J.W. An Algorithm for the Machine Calculation of Complex Fourier Series // Mathematics of Computation, Vol. 19, no. 90 (Apr., 1965), pp. 297-301.
69. Jones D.L. Decimation-in-Time (DIT) Radix-2 FFT // Connexions, 2006.
70. Jones D.L. Decimation-in-Frequency (DIF) Radix-2 FFT // Connexions, 2006.
71. Takahashi D. A Radix-16 FFT Algorithm Suitable for Multiply-Add Instruction Based on Goedecker Method // Proc. of International Conference on Multimedia and Expo, 2003.
72. Duhamel P., Hollmann H. 'Split-Radix' FFT algorithm // Electronics Letters, Vol. 20, no. 1, 1984.
73. Takahashi D. An extended split-radix FFT algorithm // Signal Processing Letters, IEEE, Vol. 8, no. 5, 2001.
74. Bergland G.D. A fast fourier transform algorithm for real-valued series // Communications of the ACM, Vol. 11, no. 1, 1968.
75. Rabiner L.R. On the Use of Symmetry in FFT Computation // IEEE Transactions on Acoustics, Speech and Signal Processing, Vol. 27, no. 3, 1979.
76. Frigo M., Johnson S.G. The Design and Implementation of FFTW3 // Proc. IEEE, Vol. 93, no. 2, pp. 216-231, 2005.
77. Gupta S.K.S., Huang C.-H., Sadayappan P., Johnson R.W. Implementing Fast Fourier Transforms on Distributed-Memory Multiprocessors using Data Redistributions // Parallel Processing Letters, Vol. 4, pp. 477^188, 1994.
78. Swarztrauber P.N. Multiprocessor FFTs // Parallel Computing, no. 5, pp. 197-210,
1987.
79. Lerner B. Parallel Implementation of Fixed-Point FFTs on TigerSHARC Processors // Analog Devices Technical Notes, February 2005.
80. Volkov V., Kazian B. Fitting FFT onto the G80 architecture. URL: httpi/A^^v.cs.berkelev.edu/~kubitron/courses/cs258-S08/proiects/reports /project6 report.pdf (дата обращения: 14.10.2012).
81. Govindaraju N., Lloyd B. et al. High Performance Discrete Fourier Transforms on Graphics Processors // Proc. ACM/IEEE conference on Supercomputing, 2008.
82. Ren G., Wu P., Padua D. Optimizing Data Permutations for SIMD Devices // Proc. ACM SIGPLAN conference on Programming language design and implementation, pp. 118131,2006.
83. Nguyen H., John L.K. Exploiting SIMD parallelism in DSP and multimedia algorithms using the AltiVec technology // Proc. ICS'99 13th international conference on Supercomputing, pp. 11-20, 1999.
84. Ruetsch G., Micikevicius P. Optimizing Matrix Transpose in CUDA // NVIDIA,
2009.
85. Choi G., Dongarra J.J., Walker D.W. Parallel Matrix Transpose Algorithms on Distributed Memory Concurrent Computers // Proc. Scalable Parallel Libraries Conference, pp. 245-252, 1993.
86. Hanounik В., Ни X. Linear-time Matrix Transpose Algorithms Using Vector Register File With Diagonal Registers // Proc. 15th International Parallel and Distributed Processing Symposium, 2001.
87. Hassanieh H., Indyk P., Katabi D., Price E. Simple and Practical Algorithm for Sparse Fourier Transform // Proc. 23rd Annual ACM-SIAM Symposium on Discrete Algorithms, pp. 1183-1194, 2012.
88. Kunis S., Melzer I. A Stable and Accurate Butterfly Sparse Fourier Transform // SIAM Journal on Numerical Analysis, Vol. 50, no. 3, pp. 1777-1880, 2012.
89. Ying L. Sparse Fourier Transform via Butterfly Algorithm // arXiv.org, 2008. URL: http://arxiv.org/abs/0801.1524 (дата обращения: 14.10.2012).
90. Demanet L., Ferrara M., Maxwell N. et al. A Butterfly Algorithm for Synthetic Aperture Radar Imaging // SIAM Journal on Imaging Sciences, Vol. 5, no. 1, pp. 203-243, 2012.
91. Lawson C.L., Hanson R.J., Kincaid D.R., Krogh F.T. Basic Linear Algebra Subprograms for Fortran Usage // ACM Transactions on Mathematical Software, Vol. 5, no. 3, pp. 308-323, 1979.
92. Библиотека BLAS. URL: http://www.netlib.org/blas/ (дата обращения: 14.10.2012).
93. Harris M. Optimizing Parallel Reduction in CUDA //NVIDIA, 2007.
94. Chevtchenko P.A., Fomine D.V., Tchernikov V.M., Vixne P.E. Using of Microprocessor NM6403 for Neural Net Emulation // SPIE Proceedings, Vol. 3728, 1999.
95. Sorensen H. Auto-Tuning Dense Vector and Matrix-Vector Operations for Fermi GPUs // Technical University of Denmark, 2012.
96. Volkov V., Demmel J. Benchmarking GPUs to Tune Dense Linear Algebra // International Conference for High Performance Computing, Networking, Storage and Analysis, 2008.
97. Лайонс P. Цифровая обработка сигналов: Второе издание. Пер. с англ. // М.: ООО «Бином-Пресс», 2007.
98. TigerSHARC Processor Benchmarks. URL: http://ww\v.analog.com/en /processors-DSP/TigerSHARC/processors/TigerSHARC_benchmarks/fca.html (дата обращения: 14.10.2012).
99. TMS320C674x Low Power DSP Benchmarks. URL: http://www.ti.com/dsp /docs/dspcontent.tsp'?contentId=55649 (дата обращения: 14.10.2012).
100. Stockham Т. G. High-Speed Convolution and Correlation // Proc. AFIPS '66 (Spring), 1966, pp. 229-233.
101. Burrus C.S. Fast Fourier Transforms // Connexions, 2008.
102. Podlozhnyuk V. Image Convolution with CUDA // NVIDIA, 2007.
103. Podlozhnyuk V. FFT-based 2D Convolution // NVIDIA, 2007.
104. Anwar S., Sung W. Digital Signal Processing Filtering with GPU // The Institute of Electronics Engineers of Korea, 2009.
105. Oppenheim A.V. Realization of Digital Filters Using Block-Floating-Point Arithmetic // IEEE Transactions on Audio and Electroacoustics, Vol. 18, no. 2, pp. 130-136, Jun 1970.
106. Berkeley Design Technology, Inc. DSP Dictionary. URL: http://www.bdti.com/resources/dspdictionary (дата обращения: 14.10.2012).
107. Whitehead N., Fit-Florea A. Precision and Performance: Floating Point and IEEE 754 Compliance for NVIDIA GPUs.
108. Lang Т., Bruguera J.D. Floating-Point Multiply-Add-Fused with Reduced Latency // IEEE Transactions on Computers, Vol. 53, no. 8, pp. 988-1003, August 2004.
109. Николина H.B., Зубковский П.С., Чибисов П.А. Сопроцессоры вещественной и комплексной арифметики и их тестирование // Проблемы разработки перспективных микро- и наноэлектронных систем - 2010. Сборник трудов / под общ. ред. академика РАН А.Л. Стемпковского. - М.: ИППМ РАН, 2010. С. 360-363.
110. Сох R.G., Yeager M.W., Flake L.L. Single Chip Complex Floating Point Numeric Processor//United States Patent 4,996,661, February 1991.
111. OpenCL 1.2 Specification. URL: hitp://www.khronos.om/re^istry/cl/specs /opencl-1.2.pdf (дата обращения: 14.10.2012).
112. Пантелеев А.Ю., Шагурин И.И., Деревянко Д.А. Применение технологии OpenCL для проектирования структуры СБИС векторных процессоров // Проблемы разработки перспективных микро- и наноэлектронных систем - 2010. Сборник трудов / под общ. ред. академика РАН А.Л. Стемпковского. -М.: ИППМ РАН, 2010. - С. 336-341.
113. Coon B.W., Lindholm J.E. System and Method for Managing Divergent Threads using Synchronization Tokens and Program Instructions That Include Set-Synchronization Bits //United States Patent no. 7,543,136 Bl, June 2009.
114. Пантелеев А.Ю. Обработка расходящихся потоков в векторном процессоре, предназначенном для использования в составе СБИС типа «система на кристалле» // Научная сессия МИФИ 2010: сборник научных трудов, том 2. - М.: МИФИ, 2010. - С. 113-114.
115. Беляев A.A. Исследование зависимости производительности DSP-ядра от глубины его конвейера инструкций // Проблемы разработки перспективных микро- и наноэлектронных систем - 2010. Сборник трудов / под общ. ред. академика РАН A.JL Стемпковского. - М: ИППМ РАН, 2010. - С. 382-385.
116. Пантелеев А.Ю., Иванов П.Ю. Конвейерный блок вычислений в комплексных числах с плавающей точкой // Научная сессия МИФИ 2012: сборник научных трудов, том 1.-М.: МИФИ, 2012.-С. 81.
117. Пантелеев А.Ю., Деревянко Д.А. Организация векторной памяти DSP-процессоров для размещения матриц с прямым и транспонированным доступом // Научная сессия МИФИ 2012: сборник научных трудов, том 1. - М.: МИФИ, 2012. - С. 81.
118. Bouknight W.J., Denenberg S.A., Mclntyre D.E. et al. The Illiac IV System // Proceedings of the IEEE, Vol. 60, No. 4, April 1972, pp. 369-388.
119. Пантелеев А.Ю., Шагурин И.И. Применение конвертируемых режимов адресации для повышения производительности сопроцессоров цифровой обработки сигналов в составе многоядерной СнК // Проблемы разработки перспективных микро- и наноэлектронных систем - 2012. Сборник трудов / под общ. ред. академика РАН A.JI. Стемпковского. - М.: ИППМ РАН, 2012. - С. 389-394.
120. Пантелеев А.Ю., Деревянко Д.А., Иванов П.Ю. Высокопроизводительный векторно-конвейерный сопроцессор для цифровой обработки сигналов // Микроэлектроника и информатика - 2012. 19-я Всероссийская межвузовская научно-техническая конференция студентов и аспирантов: Тезисы докладов. - М.: МИЭТ, 2012. - С. 185.
121. Пантелеев А.Ю., Шагурин И.И. Векторный сопроцессор для реализации DSP-алгоритмов в числах с плавающей точкой // Научная сессия МИФИ 2012: сборник научных трудов, том 1. -М.: МИФИ, 2012. - С. 80-81.
122. Пантелеев А.Ю., Шалтырев В.А. Процессорное ядро с изменяемым набором инструкций // Научная сессия МИФИ 2008: сборник научных трудов, том 8. - М.: МИФИ, 2008. - С. 192-194.
123. Пантелеев А.Ю. Планирование выполнения инструкций для векторных процессоров с переменной длиной векторов // Проблемы разработки перспективных микро-и наноэлектронных систем - 2012. Сборник трудов / под общ. ред. академика РАН А.Л. Стемпковского. -М.: ИППМ РАН, 2012.-С. 395-398.
124. Tenca A.F. Multi-operand Floating-point Addition // 19th IEEE International Symposium on Computer Arithmetic, 2009.
125. Пантелеев А.Ю., Шалтырев В.А. Компилятор последовательного языка программирования в синтезируемый конечный автомат // Научная сессия МИФИ 2009: сборник научных трудов, том 2. - М.: МИФИ, 2009. - С. 77-78.
126. Пантелеев А.Ю. Масштабируемая архитектура векторного процессора для эффективной реализации БПФ // Научная сессия МИФИ 2011: сборник научных трудов, том 1.-М.: МИФИ, 2011.-С. 133.
127. Библиотека CUFFT. URL: http://developer.nvidia.com/cufft (дата обращения: 17.11.2012).
128. Пантелеев А.Ю., Литвинов Е.И. Верификация и тестирование сложнофунк-циональных СБИС. Часть 1 // Электронные компоненты. - 2012. - № 7. - С. 20-24.
129. Пантелеев А.Ю., Литвинов Е.И. Верификация и тестирование сложнофунк-циональных СБИС. Часть 2 // Электронные компоненты. - 2012. - № 8. - С. 101-105.
Приложение А. Реализация БПФ по алгоритму Cooley-Tukey с использованием OpenCL С
kernel void fft(
int id = get_local_id(0);
int groupsize = get_local_size(0);
// Изначальная загрузка данных в буфер (buf) в разделяемой памяти for(int i = id; i < xsize; i += group_size) buf[i] = x[i]j
// Ьарьерная синхронизация после загрузки barrier(CLK_LOCAL_MEM_FENCE);
int step = 1;
int shift = (int)log2((float)xsize) - 1;
// Цикл no спаям ал?оршча БПФ
while(step < xsize) {
// Цикл иа тот случай, если количество потоков в группе меньше, чем N/2
for(int tid = id; tid < xsize/2; tid += group_size) {
// Вычисление индексов двух отсчетов (pair, natch) int group = tid & (step - 1); int pair = ((tid & ~(step - 1)) << 1) + group; int match = pair + step;
// Загрузка вращательного коэффициента W (factor) из таблицы int twiddle_index = (group << shift) % xsize; float2 factor = twiddles[twiddle_index];
// Вычисление «бабочки»: [pair J, [match] = [pair] ± [match] i factor float2 a = buf[pair]; float2 b = buf[match]; float2 c;
c.x = b.x * factor.x - b.y * factor.y; c.y = b.x * factor.у + b.y * factor.x; buffpair] = a + c; buf[match] = a - c;
global const float2 *x, global float2 *c, global float2 *twiddles local float2 *buf, int xsize)
// Исходный вектор X // Место для записи результата С // Вращательные коэффициенты // Буфер 8 разделяемой памяти // Размер исходного вектораj точек
{
}
step <<= 1; shift -= 1;
// Барьерная синхронизация мехду слоями Ьагг1ег(С1_К_1_0СА1._МЕМ_РЕГ\1СЕ);
}
// Сохранение результата вычисления в глобалачои -Рог(1.п1 1 = ±с1; 1 < Х51ге; 1 += §гоир_51ге) с[±] = Ьи1=[:1];
Приложение Б. Реализация БПФ по алгоритму двумерного разложения с использованием OpenCL С
// Реализация простых вспояогательчых функций опушена для кратности
// Расчет вращательного коэффициента Ы, _ 1"'!'v
float2 twiddle(int index, int size) { ... }
// Обращение порядка /¿ливших bits битов в слове х
int reverse_bits(int bits, int x) { ... }
// Комплексное умножение a " b
float2 complex_mul(float2 a, float2 b) { ... }
// Функция, которая производит БПФ размером size точек над данными в массиве data
void small_fft(int size, int log_size, float2 *data) {
int step = 1;
int shift = log_size;
while(step < size) {
int jump = step << 1; shift -= 1;
for(int group = 0; group < step; group++) {
int index = group << shift;
float2 factor = twiddle(index, size);
for(int pair = group; pair < size; pair += jump) {
int match = pair + step;
float2 a = data[pair];
float2 b = data[match];
float2 с = complex_mul(b, factor);
datafpair] = a + c;
data[match] = a - c;
}
}
step = jump;
}
}
// Определение размера преобразования (в данном случае - 16x16)
#define LOG_XSIZE 4
#define XSIZE (1 << LOG_XSIZE)
#define LOG_YSIZE 4
#define YSIZE (1 << LOG_YSIZE)
// Основная функиия, которая производит БПФ по алгоритму двумерного разложения _kernel void fft(
_global const float2 *x, // Входные данные - вектор X
_global float2 *c) // Выходные данные
{
// Массив для транспонирования матрицы 6 разделяемой памяти
_local float2 exchange[YSIZE][XSIZE+1];
int id = get_local_id(0);
// Шаг 1 - XSIZE преобразований в направлении Y
if(id < XSIZE) {
float2 stepl[YSIZE];
// Загрузка данных с бит-реверсной перестановкой векторов for(int i = 0; i < YSIZE; i++)
stepl[reverse_bits(LOG_YSIZE, i)] = x[i * XSIZE + id]j
// Вычисление небольших БПФ в каждом потоке small_fft(YSIZEj LOG_YSIZE, stepl);
// Умножение на вращательные коэффициенты и сохранение 6 разделяемой памяти
for(int i = 0; i < YSIZE; i++) {
float2 factor = twiddle(i * id, XSIZE * YSIZE); exchangefi][id] = complex_mul(stepl[i], factor);
}
// Барьерная синхронизация необходима при работе с разделяемой памятью Ьагг1ег (С1К_ЮСА1-_МЕМ_РЕМСЕ);
// Шар 2 - У512С преобразований в направлении X
if(id < У51гЕ) {
float2 step2[XSIZE];
// Загрузка данных с бит-реверсной перестановкой векторов 1 = 0; 1 < ХБ1гЕ; 1++) step2[reverse_bits(L0G_XSIZE, 1)] = ехсИаг^е^] [1];
// Вычисление небольших Ы1Ф в каждом потоке 5та1^П(ХБ1гЕл Ю6_ХБ1гЕ, step2);
// Сохранение результата вычисления в г повальной памяти 1 = 0; 1 < ХБ12Е; 1++) с[ 1 * \SIZE + ±с1] = step2[i];
}
}
Приложение В. Акт о внедрении результатов диссертационной работы
УТВЕРЖДАЮ Генеральный директор 3ЛО НТЦ «Модуль»
/фу**4 Адамов А А.
2012 г"
Адамов А А.
о внедрении в ЗАО «НТЦ Модз
АКТ
ре}улыатов диссертационной работы Пантелеева А.Ю,
В ЗЛО НТЦ «Модуль» проводилась ОКР «Процессор-1-Модуль» по разработке архитектуры СФ-блока ЫМ-кластера па основе матрично-векторн ы х процессорных ядер. В состав процессорного ядра ЫМ-кластера входит программируемый сопроцессор векторной обработки данных п формате «с плавающей тчкой», в котором использовались результаты разработки аспирантом НИЯУ «МИФИ» Пантелеевым А.Ю. модели сопроцессора «МЗ».
Применение такого сопроцессора в составе ЫМ-кластера позволяет организовать выполнение ашоригмов цифровой обработки сигналов в числах стандартного 32-битного формата «с плавающей тчкой» с высокой производительностью - до 20 операций за такт и тактовой частотой в 1 ГГц при реализации по технологическим нормам 40 нм. В частности, данный сопроцессор позволявI выполнять быстрое преобразование Фурье размерностью в 1024 точки за 3130 процессорных тактов, что существенно превосходит существующие процессоры цифровой обработки сигналов Сопроцессор эффективно реализует и другие функции, такие как КИХ-фильтрация и вычисление фрагментов нейросетей.
Начальник отделения 3
В.М. Черников
к.т.н , с.н с.
Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.