Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
совсем Конечный вариант.doc
Скачиваний:
12
Добавлен:
19.05.2015
Размер:
937.98 Кб
Скачать

Систолический процессор cnaps

Данная архитектура разработана компанией Adaptive Solutions, она представляет собой SIMD мультипроцессор общего назначения, разработанный для нейроприложений. Так как чип представляет собой не узкоспециализированное устройство, а микропроцессор общего назначения, то становится возможным реализовать широкий спектр алгоритмов обучения и функционирования нейросети. Чип имеет действительно большую емкость памяти весов, позволяя хранить 2M 1 битных весов, или 256K 8 битных весов, или 128K 16 битных весов, поровну распределенных между 64 процессорами. Чипы могут образовывать мультимикропроцессорные системы различной конфигурации.

Базовым элементом системы CNAPS является чип N6400, который состоит из 64 обрабатывающих элементов, соединенных широковещательной шиной в режиме SIMD. Принципиальная структура системы CNAPS показана на рис. . Типовая система содержит управляющий чип (Sequencer) и четыре процессора N64000 (хотя есть системы с 8 процессорами).

Рис. 24: Структура системы CNAPS.

Рис. 25: Обрабатывающий узел процессора N64000

Обрабатывающие элементы (Processing nodes, PN) разработаны как обычные цифровые сигнальные процессоры, включающие сумматор и умножитель, выполняющие арифметические операции над числами с фиксированной запятой. Структура обрабатывающего узла PN показана на рис.25. Каждый PN содержит 4 Кбайта локальной статической памяти, которая используется для хранения весовых коэффициентов. Размер локальной памяти является узким местом для больших нейросетей, так как при нехватке памяти происходит обмен по широковещательной шине. Производительность падает катастрофически, когда 64 процессорных узла ведут обмен по общей шине.

Так как N64000 работает как микропроцессор общего назначения, то CNAPS может реализовать широкий класс нейросетевых алгоритмов. Для этой архитектуры создан инструментальный набор, который включает C-компилятор с надстройками, позволяющими получать код, использующий все преимущества параллельной архитектуры.

Применение нейросигнальных процессоров для построения нейросред. Нейросигнальный процессор nm6403.

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

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

Структура нейропроцессора nm6403.

Ядро nm6403 состоит из двух базовых блоков: 32-битного RISC процессора и 64 битного векторного процессора, обеспечивающего выполнение векторных операций над данными переменной разрядности. Имеются два идентичных программируемых интерфейса для работы с внешней памятью различного типа и два коммуникационных порта, аппаратно совместимых с портами DSP TMS320C4x, для построения многопроцессорных систем. Общая структура нейропроцессора показана на рис. refnm6403.

Рис. 12: Общая структура нейропроцессора NM6403

Нейропроцессор предназначен для обработки 32 разрядных скалярных данных и данных программируемой разрядности (с упаковкой в 64 разрядные слова). Основными узлами нейропроцессора являются:

  • RISC core. Ядро нейропроцессора, выполняющее операции сдвига, арифметико-логические операции над 32 разрядными данными, формирующее адреса команд и данных, выполняющее управление работой нейропроцессора.

  • VCP. Векторный сопроцессор, выполняющий арифметические и логические операции над 64 разрядными векторами упакованных данных переменной разрядности.

  • LMI и GMI. Два идентичных блока программируемого интерфейса с локальной и глобальной 64 разрядными внешними шинами, к каждой из которых может быть подключен блок внешней памяти, содержащий до 23132 разрядных ячеек. Обмен с внешней памятью может осуществляться 32 или 64 разрядными словами. Адресация осуществляется страничным способом, при котором на одну 15 разрядную адресную шину в режиме разделения времени выдаются как младшие, так и старшие разряды адреса. Причем старшие разряды адреса выдаются только при переходе к выборке новой страницы памяти.

  • CP0 и CP1. Два идентичных коммуникационных порта, полностью совместимых с коммуникационным портом сигнального процессора TMS320C4x.

Нейропроцессор содержит пять внутренних шин:

  • LOCAL ADDRESS BUS и GLOBAL ADDRESS BUS. Шины, служащие для пересылки адресов команд и данным, сформированных RISC-ядром и адресов данных, сформированных коммуникационными портами в режиме ПДП.

  • OUTPUT DATA BUS. Шина, служащая для пересылки данных, подлежащих записи в локальную или глобальную внешнюю память из RISC-ядра, векторного сопроцессора и коммуникационных портов в блоки программируемого интерфейса.

  • INPUT BUS #1 и INPUT BUS #2. Шины, предназначенные для пересылки данных и команд, считанных из локальной или глобальной внешней памяти, из блоков программируемого интерфейса в любой из основных узлов нейропроцессора. В программном режиме работы пересылка скалярных данных осуществляется только по шине INPUT BUS #2, а пересылка векторных данных - только по шине INPUT BUS #1. Пересылка данных в режиме ПДП и пересылка команд могут осуществляться по любой из этих шин.

Рис. 13: Ядро нейропроцессора NM6403

Структура ядра нейропроцессора представлена на рис.13. Регистровое АЛУ (RALU) служит для оперативного хранения до восьми 32 разрядных скалярных данных и выполнения над ними операций сдвига, одно и двухоперандных арифметических и логических операций. При выполнении операций в RALU формируются признаки, которые используются при выполнении условных команд. Данные, хранящиеся в RALU, могут также использоваться в качестве адресов и смещений при выполнении команд обращения к памяти и команд управления.

RALU содержит:

  • Регистры общего назначения GR0, ..., GR7, которые образуют регистровый файл;

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

  • SHIFTER - устройство сдвига, выполняющее за один такт циклический, логический или арифметический сдвиг на любое число разрядов вправо или влево содержимого любого регистра общего назначения, выдаваемого на шину первого операнда ALU.

DAG1 - первый генератор адресов данных служит для формирования адресов данных при выполнении команд обращения к памяти и адресов переходов при выполнении команд управления. Кроме того, DAG1 обеспечивает оперативное хранение и модификацию до четырех 32 разрядных адресов данных, адресов переходов или смещений адресов переходов. DAG1 содержит:

  • Адресные регистры AR0, ..., AR3, образующие регистровый файл;

  • AU1 - первое арифметическое устройство для выполнения арифметических операций при вычислении адреса или модификации одного из регистров AR0, ..., AR3;

  • MUX - мультиплексор для выдачи на одну из внутренних адресных шин нейропроцессора информации с выходов AU1 или с шины первого операнда AU1.

Второй генератор адресов данных DAG2 по своей структуре и выполняемым функциям аналогичен DAG1. Его специфика заключается в том, что один из его адресных регистров AR7(SP) дополнительно выполняет функции системного указателя стека.

Генератор адресов команд (PROGRAMM SEQUENCER), служит для формирования адреса очередной 64 разрядной команды или очередной пары 32 разрядных команд на линейных участках программы, когда вычисление адреса каждой следующей команды осуществляется путем инкремента адреса текущей команды.

Генератор адресов команд включает в себя следующие блоки:

  • PC. Счетчик команд, предназначенный для хранения адреса текущей выбираемой из памяти 64 разрядной команды (или пары 32 разрядных команд) и вычисления адреса следующей команды (или пары 32 разрядных команд) путем увеличения его содержимого на два. Выходы PC подключены к шине OUTPUT BUS, что делает данный регистр программно доступным для чтения.

  • MUX. Мультиплексор для выдачи на одну из внутренних адресных шин увеличенного на два содержимого счетчика команд PC или содержимого указателя стека AR7(SP).

Блок управления (CONTROL UNIT) выполняет предварительный анализ и дешифрацию команд, выбранных из внешней памяти, формирует сигналы управления всеми узлами нейропроцессора в процессе конвейерного выполнения команд, обрабатывает все запросы на внутренние и внешние прерывания, осуществляет арбитраж.

Рис. 14: Векторный сопроцессор

Векторный сопроцессор (VCP) является основным вычислительным узлом нейропроцессора особенно для нейросетевых приложений. VCP ориентирован на обработку данных произвольной разрядности от 1 до 64 разрядов, упакованных в 64 разрядные слова. Возможность выбора разрядности обрабатываемых данных является отличительной чертой нейропроцессора NM6403. Основными узлами VCP являются:

  • OU. Операционное устройство, служащее для выполнения арифметических и логических операций над 64 разрядными словами упакованных данных [(X)/vec] = <X1,,XK> и [(Y)/vec] = <Y1,,YI> , которые подаются на входы X и Y, и матрицей весов WOPER, которая подается на входыW1,,WJв виде J 64 разрядных слов упакованных весовых коэффициентов [(W1)/vec] = <W11W1I> ,, [(WJ)/vec] = <W11WJI> . Результат каждой операции формируется на выходе R в виде 64 разрядного слова упакованных данных [(R)/vec] = <R1,,RI> .

  • RCS.Циклический сдвигатель вправо, пропускает данные без изменений или циклически сдвигаются вправо на один разряд. За один такт выполняется сдвиг одного слова как единого операнда, не зависимо от количества данных в слове.

  • SU1, SU2.Узлы, аппаратно реализующие функцию насыщения, они служат для вычисления функции активации над 64 разрядными словами упакованных данных. Общий вид реализуемой функции активации показан на рис. .

Рис. 15: Реализуемая функция активации

Функция активации применяется к входному вектору [(X)/vec] до выполнения операции.

  • SWITCH 32. Коммутатор 3 в 2 обеспечивает выбор двух источников векторных данных, поступающих на входы исполнительных узлов VCP. На вход каждого нелинейного преобразователя могут поступать следующие вектора:

    • вектора данных с нулевыми значениями всех разрядов

    • содержимое RAM с шины векторных данных VCP (VECTOR DATA BUS)

    • содержимое AFIFO по цепи обратной связи VCP

    • вектора данных из внешней памяти

  • WBUF и WOPER. Память весовых коэффициентов, состоящая из двух матриц ячеек памяти, каждая из которых имеет емкость 32x64 бита и позволяющая хранить матрицу весрв в виде J 64 разрядных слов упакованных весовых коэффициентов. WOPER служит для хранения матрицы весов, используемых в операциях взвешенного суммирования в OU. WBUF служит для подкачки из WFIFO новой матрицы весов на фоне выполнения текущих операций взвешенного суммирования с использованием прежней матрицы весов, хранящейся в WOPER.

  • WFIFO.Этот блок используется в качестве накопительного буфера в процессе подкачки матрицы весов в WBUF из внешней памяти. Емкость буфера составляет 32x64 бит, запись и чтение ведется 64 разрядными словами.

  • AFIFO.Этот блок используется в качестве аккумулятора и служит для хранения 32x64 бит результата последней векторной операционной команды.

  • RAM.Векторный регистр типа FIFO емкостью 32x64 бита. Отличие от обычного буфера FIFO состоит в том, что после чтения из RAM его содержимое не меняется.