Однокристальный цифровой нейропроцессор с переменной разрядностью операндов
Источник: "ПРИБОРОСТРОЕНИЕ". Тематический выпуск. Аппаратно-программные комплексы поддержки нейровычислений 7/1996.
Авторы: Виксне П.Е, Фомин Д.В, Черников В.М
Рассматривается архитектура и система команд однокристального цифрового нейропроцессора с переменной разрядностью
операндов предназначенного для работы в мультипроцессорных вычислительных системах как для поддержки нейронных, так
и матрично-векторных вычислений.
- Введение
- Архитектура и система команд нейрочипа
- Aрхитектурныe основы построения нейросистем на базе нейрочипа
- Сравнительные характеристики архитектур нейрочипа, TMS320C40 и Intel P55c
- Заключение
- Литература
Анализ современного состояния разработок в области аппаратной поддержки нейровычислений [1], [2] выявил
три направления деятельности - создание аналоговых, цифровых и аналогово-цифровых нейроускорителей. Исходя
из реальных возможностей отечественной микроэлектроники, опыта предыдущих работ, удобства работы для будущих
пользователей, а также имеющихся средств проектирования, в НТЦ "Модуль" был выбран второй путь
создания нейропроцессора, а именно полностью цифрового программируемого процессора - нейрочипа.
Выбор и обоснование принципов построения нейрочипа
Основными предпосылками, которыми руководствовались разработчики при создании архитектуры нейрочипа,
были следующие:
- нейрочип должен быть программируемым устройством, имеющим в своем составе операционные узлы специально,
разработанные для эффективной поддержки нейровычислений;
- нейрочип должен обеспечивать вычисление значений выходов нейронов как можно большего участка нейросети
за один процессорный такт;
- нейрочип должен производить вычисления над данными (синапсами и весами) произвольной разрядности
(от 1 до 64 бит);
- нейрочип должен иметь в своем составе средства комплексирования для создания распределенных параллельных
вычислительных систем, состоящих из любого количества процессорных узлов;
- нейрочип должен иметь достаточно развитую систему команд, способную поддерживать наиболее часто
используемые конструкции современных языков высокого уровня. Любая команда (кроме команд загрузки/выгрузки
массивов данных) должна выполняться за один процессорный такт.
Далее описаны архитектурные решения, принятые разработчиками, удовлетворяющие приведенным выше требованиям.
2. Архитектура и система команд нейрочипа
Нейрочип предназначен для реализации нейросетей, имеющих следующие функциональные характеристики:
a) Каждый слой нейросети (рис.1) выполняет следующую функцию:
- где:
- Zi - выходной сигнал i-го нейрона (i-й нейрон),
- Xj - j-й входной сигнал слоя (j-й синапс),
- Ui - смещение i-го нейрона,
- Wij - весовой коэффициент j-го входа i-го нейрона,
- Yi - сумма взвешенных входов i-го нейрона,
- f - функция активации,
- N - количество входных сигналов слоя,
- M- количество нейронов в слое.
б) Операнды Zi, Xj,
Ui и Wij представляются в прямом и дополнительном кодах и могут
иметь произвольную разрядность.
в) Количество слоев в нейросети, а также количество нейронов и сигналов в каждом слое могут быть произвольными.
г) Между входами и выходами отдельных слоев нейросети допускаются любые межсоединения. То есть выходной
сигнал k-го слоя может поступать на один из входов i-го слоя, где k=1,...,K, i=1,...,K, а K - число слоев нейросети.
Слой нейросети
Простейшие функции активации "f":
a) пороговая, б) насыщения
Рис.1
В основу архитектуры нейрочипа положен оригинальный метод выполнения его базовых операций с помощью
операционного узла (OU), представляющего собой однородную вычислительную среду которая позволяет производить
операции над синапсами и весами произвольной разрядности (от 1 до 64 бит). Следует отметить, что принцип
переменной разрядности операндов применен в нейропроцессоре фирмы
Philips L-neuro 1.0 [3], однако этот
нейропроцессор использует представление данных в последовательном коде., что значительно
снижает производительность, кроме того, разрядность обрабатываемых данных может выбираться только из
фиксированного набора 1, 2, 4, 8, 16. Функция активации L-neuro 1.0 реализована вне чипа, что тоже
отрицательно сказывается на производительности. Производительность в процессе вычислений L-neuro 1.0
чипа - 100 MCPS для 1 битного варианта и 26 MCPS для 8 битного варианта.
Взвешивание и сложение синапсов
Взвешивание и сложение синапсов является наиболее сложной операцией и требует больших аппаратных
и временных ресурсов. Поэтому данная операция является основной операцией, на которую
ориентирован ОU нейрочипа. Его структурная организация позволяет выполнить взвешивание и сложение
синапсов методом параллельного умножения синапсов на весовые коэффициенты.
В данном случае OU за один такт осуществляет взвешивание нескольких синапсов и вычисление их сумм
одновременно для нескольких нейронов. То есть за один такт OU реализует функции фрагмента нейросети,
включающего в себя несколько синапсов и несколько нейронов.
Работа OU в данном режиме иллюстрируется ниже на примере реализации функций фрагмента нейросети,
включающего 2 нейрона и 3 синапса (рис.2), на OU с m=19 (суммарная разрядность выходов) и
n=12 (суммарная разрядность входов). В данном примере операнды имеют следующие разрядности:
X1-3, X2-4, X3-5, U1-10,
U2-9, Y1-10, Y2-9, W1-5,
W12-4, W13-3, W21-4, W22-3,
W23-2.
Рис.2 Фрагменты слоя нейросети.
Предварительно в OU загружаются соответствующие битовые элементы матрицы весов, содержимое
которой определяется на этапе обучения нейросети. В данном режиме работы элементами матрицы
являются разряды весовых коэффициентов и нулевые элементы, расположенные в строго фиксированных
позициях.
Такая настройка как бы разбивает OU на РхR подматриц (рис.3), где Р - количество нейронов,
а R - количество синапсов в реализуемом фрагменте нейросети. Для рассматриваемого примера Р=2, R=З.
Будем считать, что подматрица с координатами (p,r) соответствует р-му нейрону (р=1,...,Р) и r-му
синапсу (г=1,...,R). Тогда каждая подматрица с координатами (р,1) вычисляет
функцию X1Wpl+Up, а каждая подматрица с координатами (р,t) формирует
произведение XtWpt и прибавляет к нему результат, полученный на выходе
подматрицы с координатами (р,t-1), где t=2,...,R.
Таким образом, на выходе подматрицы (р,R) формируется результат операции.
Рис.3 Разбиение матрицы на подматрицы
Необходимым условием работоспособности OU в данном режиме является то, что количество бит,
отводимых для каждого р-го нейрона, должно быть не больше максимально возможной разрядности Yp.
Только при этом условии исключается возможность прохождения сигналов переноса, возникающих в цепях
сложения, через границы между соседними нейронами. С одной стороны, данное условие обеспечивает
конкатенацию нескольких нейронов в единой вычислительной среде, какую представляет собой OU, а с другой,
оно исключает возможность арифметических переполнений и, следовательно, необходимость дополнительного
контроля. Выполнение этого условия должно обеспечиваться на этапе обучения нейросети путем введения в
матрицу весов нулевых столбцов в области старших разрядов каждого нейрона.
Таким образом, количество нейронов, одновременно обслуживаемых OU, зависит от числа синапсов,
их разрядности и значений весовых коэффициентов. Суммарная разрядность Yp не должна превышать
значения m. Количество синапсов, одновременно обрабатываемых OU, разрядностью синапсов. Суммарная
разрядность Х не должна превышать значения n. Настройка нейрочипа на работу с конкретными величинами
разрядности синапсов и весов производится путем загрузки в специальные регистры управляющей информации
как перед началом работы, так и в процессе вычислений. Это позволяет динамически изменять разрядность
обрабатываемых данных, а следовательно скорость и точность вычислений от слоя к слою, от нейрона к нейрону,
от синапса к синапсу.
В случае работы нейрочипа с одинаковой разрядностью синапсов и весов которая составляет 8 бит,
за один процессорный такт OU производит 24 операции умножения с накоплением, что при частоте тактовых
импульсов 30 MHz составит 720 MCPS (миллионов соединений в секунду). Другими словами, за один процессорный
такт производится вычисление участка нейросети, состоящего из 3 нейронов по 8 синапсов каждый, разрядности
нейронов и синапсов составляют при этом один байт.
Структура нейрочипа
Общая структура нейрочипа приведена на рис.4.
Рис.4 Общая структура нейрочипа
В состав нейрочипа входят:
- векторный процессор (Vector processor), который позволяет реализовать базовые операции
в нейросетях над массивами данных, представленных в виде векторов с элементами, которые
могут иметь переменную разрядность. Основным узлом векторного процессора является операционный
узел, описанный выше;
- скалярный процессор (Scalar processor), предназначенный для вычисления адресов команд,
управления их выборкой, вычисления адресов операндов и весовых коэффициентов при работе нейрочипа
с памятью, а также для поддержки скалярных операций над данными;
- два идентичных программируемых интерфейса с локальной и глобальной шинами (MUX),
по которым может работать с двумя внешними памятями по 64-разрядным шинам данных. Эти памяти
могут быть либо SRAM, либо DRAM. Тип памяти определяется в процессе инициализации;
- два коммуникационных порта с сопроцессорами ПДП , предназначенные для поддержки доступа в память
при обмене по двунаправленным байтовым линкам (Link0 и Link1) через коммуникационные порты
(Port0 и Port1) на фоне вычислений;
- устройство управления (Control unit) выполняет функции общего управления, осуществляет
арбитраж использования внешней памяти, а также поддерживает 8 прерываний - 1 внешнее и 7 внутренних,
в том числе прерывания от системного таймера, по завершению обмена по линкам, а также пользователь
может использовать пошаговое прерывание в режиме отладки.
Данный кристалл использует следующие внутренние шины:
- шину команд (INSTRUCTION BUS) - 32 разряда, по которой выбираются команды из памяти;
- шину адреса команд (INSTRUCTION ADDRESS BUS) - 32 разряда, по которой выставляется
адрес выбираемой команды;
- шину данных 1 (DATA BUS 1) и шину данных 2 (DATA BUS 2) по 64 разряда каждая для возможности
одновременной работы с операндами и подкачки весовых коэффициентов в векторный процессор;
- шину адреса данных 1 (DATA ADDRESS BUS 1) и шину адреса данных 2 (DATA ADDRESS BUS 2)
по 32 разряда каждая;
- шину ПДП (DMA BUS) - 64 разряда для обмена в режиме ПДП с линками;
- шину адреса ПДП (DMA ADDRESS BUS) - 32 разряда.
Шины памяти имеют сквозную адресацию. В какую из двух шин памяти производится доступ,
определяется старшим разрядом вычисленного адреса. Тем самым обеспечивается возможность иметь
данные и команды в любой памяти. Обмен с каждой из памятей в зависимости от команды может осуществляться
либо по 64 разряда, либо по 32, когда младший разряд вычисленного адреса указывает, с какой из половин
64-разрядной памяти необходимо работать.
Основные регистры
В нейропроцессоре имеется следующий набор 32-разрядных регистров:
- восемь АДРЕСНЫХ регистров AR0-AR7, предназначенных для организации доступа к
оперативной памяти;
- адресный регистр AR7 имеет альтернативное обозначение SP (stack pointer - указатель стека).
Этот регистр может использоваться для организации доступа к памяти по стековому принципу;
- восемь регистров ОБЩЕГО НАЗНАЧЕНИЯ GR0-GR7, которые предназначены для хранения значений,
считанных из памяти, и промежуточных результатов вычислений;
- регистр СЧЕТЧИКА КОМАНД PC (Program Counter), используемый для определения адреса очередной
команды, подлежащей выполнению. Программа имеет доступ к регистру PC как по чтению,
так и по записи; иными словами, допускается динамическое управление порядком выполнения
команд;
- регистр СЛОВА СОСТОЯНИЯ ПРОЦЕССОРА PSWR (Program Status Word Register) содержит информацию,
описывающую текущее состояние процессора, включая признаки, характеризующие результаты
выполнения последних скалярных операций ("флаги"), информацию о ресурсах процессора (например,
о локальной и глобальной шинах), а также текущие значения масок прерываний. Все поля данного
регистра доступны из программы по чтению; поля масок прерываний доступны также по записи;
- два 64-разрядных регистра для указания разрядности синапсов и весов.
Система команд нейрочипа
Нейрочип работает с командами фиксированной длины по 32 разряда, которые можно разделить на 4 основные
группы: команды скалярного процессора по обработке операндов, команды векторного процессора, команды
управления и команды пересылки.
Система команд скалярного процессора организована таким образом, что базовые операции (то есть
операции над регистрами общего назначения) могут совмещаться с операциями над адресными регистрами.
Система прерываний.
Нейрочип имеет одно внешнее прерывание и несколько внутренних: два прерывания от таймеров,
четыре прерывания от портов коммуникации по завершению ввода/вывода, пошаговое прерывание в режиме отладки.
3. Aрхитектурныe основы построения нейросистем на базе нейрочипа
Основными архитектурными особенностями нейрочипа для построения различных параллельных систем
являются наличие двух высокоскоростных двунаправленных байтовых коммуникационных портов, аппаратно
совместимых с портами сигнального процессора TMS320C40 и поддержка доступа к совместно используемой
памяти. Путем объединения нейрочипов различными способами можно добиться реализации большого числа
высокопроизводительных параллельных систем разнообразной конфигурации. На рис.5 приведены примеры построения
вычислительных сетей на базе нейрочипа.
а)
б)
в)
Рис.5 Примеры построения вычислительных сетей на базе нейрочипа:
а) двунаправленный конвейер (для операций над матрицами, эмуляции нейросетей прямого распространения
и других конвейеризированных вычислений),
б) структура типа двумерной решетки (для операций над матрицами и эмуляции нейросетей прямого
распространения),
в) двунаправленное кольцо (для эмуляции различных нейросетей, в том числе с обратными связями
и многослойных)
Кроме вышеперечисленных возможностей можно также создавать вычислительные сети практически любой конфигурации с использованием сигнального процессора TMS320C40 в качестве коммутирующего элемента.
Примеры такого подхода можно увидеть на рис.6:
а)
б)
Рис.6 Примеры построения вычислительных сетей на базе нейрочипа и TMS320C4x
в качестве коммутирующего элемента:
а) структура типа дерева (для эмуляции многослойных нейросетей, а также для задач распознавания образа),
б) структура типа трехмерной решетки (для эмуляции трехмерных нейросетей, а также для задач распознавания образа).
Используемый интерфейс с памятью определяет 3 основные группы архитектур систем на основе нейрочипа (см. рис.7):
а)
б)
в)
Рис.7. Сети с совместно используемой/распределенной памятью:
а) aрхитектура с совместно используемой памятью,
б) архитектура с распределенной памятью,
в) смешанная архитектура
Архитектура с совместно используемой памятью - глобальная память доступна нескольким нейрочипам.
Архитектура с распределенной памятью - каждый нейрочип имеет свою локальную память, а взаимодействие
нейрочипов осуществляется через коммуникационные порты.
Смешенная архитектура - каждый нейрочип имеет свою локальную память, а также возможность доступа
к глобальной памяти вместе с другими нейрочипами.
При объединении небольшого количества нейрочипов в систему можно использовать архитектуру
с совместно используемой глобальной памятью, но если число используемых нейрочипов большое,
затраты на доступ в глобальную память становятся слишком велики, поэтому рекомендуется архитектура
с распределенной памятью.
4. Сравнительные характеристики архитектур нейрочипа, TMS320C40 и Intel P55c
Для сравнения были взяты коммерчески доступные процессоры, имеющие в своем составе операционные
устройства, способные выполнять несколько сложений (TMS320C4x) [4] и умножений с накоплением
(Intel P55C) [5] за один такт.
Архитектура нейрочипа нацелена на определенный класс задач матрично-матричных операций и дает
на них значительное ускорение (до сорока раз, в тактах). На задачах класса вектор-матрица не
достигается эффективное использование всех функциональных возможностей операционного узла векторного
процессора, однако и эти задачи выполняются на нейрочипе в 4-8 раз быстрее чем на процессорах сравнения.
И, наконец, на задачах векторно-векторных вычислений нейрочип дает результаты сравнимые с результатами
TMS320C40 и худшие по сравнению с Intel P55C.
- Матрично-матричные операции (в тактах):
- Произведение матриц из 8-битовых величин:
ускорение в 43 раза по сравнению с TMS320C40
не менее 20 раз по сравнению с Intel P55C.
- Операция свертки с маской над массивом из 8-битовых величин (в тактах):
быстрее в 6-20 раз по сравнению с TMS320C40
быстрее в 3-20 раз по сравнению с Intel P55C, в зависимости от размера маски.
- Векторно-матричные операции (в тактах)
- Умножение вектора на матрицу (все элементы из 8-бит):
быстрее TMS320C40 в 6 раз
быстрее Intel P55C в 4-8 раз
- Векторно-векторные операции (в тактах):
- Скалярное произведение векторов (элементы векторов из 8-бит):
одинаково с TMS320C40
примерно одинаково с Intel P55C
Если исходить из предположения, что основная операция для нейронных сетей это умножение
вектора на матрицу получатся, что ускорение на данном классе задач достигает 4-6 раз. Для задач
обработки изображений основной операцией является операция свертки и хорошие показатели на операции
свертки дают основания полагать, что ускорение составит 3-10 раз, в зависимости от размера маски.
Предлагаемый нейропроцессор благодаря своей универсальности может применяться как базовый элемент для
нейроускорителей персональных компьютеров и нейрокомпьютерных параллельных вычислительных систем,
аппаратной поддержки операций над матрицами любой размерности, а также в процессорах цифровой обработки
сигналов. Возможность работы с данными переменной разрядности, обеспечивает способность нейропроцессора
увеличивать производительность с уменьшением разрядности операндов, что позволяет находить оптимальное
соотношение точность/производительность. Наличие развитой системы команд, мощной адресной арифметики,
высокоскоростных коммуникационных портов, аппаратно совместимых с одним из наиболее распространенных
сигнальных процессоров, а также программируемых интерфейсов с внешней памятью дает возможность использовать
нейрочип как самостоятельный вычислитель, не требующий дополнительной аппаратуры.
Ограниченный объем журнальной статьи не позволяет дать более подробное описание архитектуры нейрочипа,
а также раскрыть такие важные аспекты, как структуру конвейера команд, оригинальные схемотехнические
решения, принятые в процессе проектирования арифметических устройств (функций активации, схем ускоренного
переноса разработанных для случая произвольной разрядности и т.д). Также за рамками данной статьи остались
вопросы использования современной технологии проектирования и изготовления кристалла, но мы надеемся,
что нам будет предоставлена возможность осветить эти вопросы в следующих номерах журнала.
- Jan N.H Heemskerk. Neurocomputers for Brain-Style Processing. Design, Implementation and Application.
PhD thesis. Unit of Experimental and Psychology Leiden University, The Netherlands. 1995
- Clark S. Lindsey, Thomas Lindblad. Survey of neural network hardware. Physics Dept.-Frescati,
Royal Institute of Technology. Sweden. SPIE Vol. 2492. May 1995.
- Mauduit 1992: N. Mauduit, M. Duranton, J. Gobert, "L-Neuro 1.0: A Piece of Hardware LEGO
for Building Neural Network Systems", IEEE Trans. of Neural Networks, vol.3, no.3, pp.414-422,
May 1992.
- Texas Instruments. TMS320C4x User's Guide. 1993.
- Intel Corporation. MMX-Technology Overview.