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

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

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

cnaps

Мал. 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 розрядні слова). Основними вузлами нейропроцесора є:

VCP. Векторний співпроцесор виконує арифметичні талогічні операції над 64-розрядними векторами упакованих даних змінної розрядності.

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

Нейропроцесор містить п'ять внутрішніх шин:

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

INPUT BUS #1 та INPUT BUS #2. Шини, призначені для пересилання даних і команд, зчитаних з локальної або глобальної зовнішньої пам'яті, з блоків програмованого інтерфейсу будь-який з основних вузлів нейропроцесора. У програмному режимі роботи пересилання скалярних даних здійснюється лише з шині INPUT BUS #2, а пересилання векторних даних - лише з шині INPUT BUS #1. Пересилання даних у режимі ПДП та пересилання команд можуть здійснюватися за будь-якою з цих шин.

cnaps

Мал. 13: Ядро нейропроцесора NM6403

Регістри загального призначення GR0, . GR7, які утворюють регістровий файл;

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

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

Адресні регістри AR0, . AR3, що утворюють регістровий файл;

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

cnaps

Мал. 14: Векторний співпроцесор

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

OU. Операційний пристрій, що служить для виконання арифметичних та логічних операцій над 64 розрядними словами упакованих даних [(X)/vec] = та [(Y)/vec] = , що подаються на входи X і Y, і матрицею ваг WOPER, яка подається на входиW1,,WJу вигляді J 64 розрядних слів упакованих вагових коефіцієнтів [(W1)/vec] = ,, [(WJ)/vec] = . Результат кожної операції формується на виході R у вигляді 64 розрядного слова упакованих даних [(R)/vec] = .

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

SU1, SU2. Вузли, апаратно реалізують функцію насичення, вони служать обчислення функції активації над 64 розрядними словами упакованих даних. Загальний вигляд функції активації, що реалізується, показаний на рис. .

процесор

Мал. 15: Реалізована функція активації

Функція активації застосовується до вхідного вектора [(X)/vec] до виконання операції.

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

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

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

вміст AFIFO з ланцюга зворотного зв'язку VCP

вектор даних із зовнішньої пам'яті

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

WFIFO.Цей блок використовується як накопичувальний буфер у процесі підкачування матриці ваг у WBUF із зовнішньої пам'яті. Місткість буфера становить 32x64 біт, запис та читання ведеться 64 розрядними словами.

AFIFO. Цей блок використовується як акумулятор і служить для зберігання 32x64 біт результату останньої векторної операційної команди.

RAM.Векторний регістр типу FIFO ємністю 32x64 біта. На відміну від звичайного буфера FIFO у тому, що після читання з RAM його вміст змінюється.