© Ваврук Є.Я.
Курс лекцій
"Комп’ютерні засоби обробки сигналів та зображень"
Тема 9
Тема: Використання нейрокомп’ютерів для обробки сигналів та зображень
Питання.
1. Визначення нейрокомп’ютера.
2. Основні компоненти нейрокомп’ютера.
3. Базова структура нейроприскорювача на основі ПОС.
4. Порівняльні характеристики нейроприскорювачів на базі ПОС.
5. Реалізація ШПФ на нейрокомп’ютері.
Вступ
Для кращого розуміння нейрообчислювальних систем зупинимося на найважливіших елементах нейрологіки з позиції апаратної реалізації. Однією з головних переваг нейрообчислювача є те, що його основу складають відносно прості, найчастіше - однотипні, елементи (комірки), що імітують роботу нейронів мозку - "нейрони". Кожен нейрон характеризується своїм поточним станом за аналогією з нервовими клітками головного мозку, що можуть бути збуджені чи загальмовані. Він має групу синапсів - однонаправлених вхідних зв'язків, з'єднаних з виходами інших нейронів, а також має аксон - вихідний зв'язок даного нейрона, з яким сигнал (збудження чи гальмування) надходить на синапсы наступних нейронів. Загальний вид нейрона приведений на рис.1.
Рис.1. Загальний вид нейрона.
Кожен синапс характеризується величиною синаптичного зв'язку чи його вагою wі, що по фізичному змісті еквівалентний електричній провідності. Поточний стан нейрона визначається, як зважена сума його входів:
Вихід нейрона є функція його стану: y = f(s), що називається активаційною і може мати різний вид. Однієї з найбільш розповсюджених - є нелінійна функція з насиченням, так звана логічна функція чи сигмоїд (тобто функція S-подібного виду):
Рис.2
а) одинична гранична функція;
б) лінійний поріг (гістерезис);
в) сигмоїд - гіперболічний тангенс;
г) логічний сигмоїд.
Паралелізм обробки досягається шляхом об'єднання великого числа нейронів у яруси і з'єднання певним чином різних нейронів між собою. Як приклад найпростішої НС приведемо трьох нейронний персептрон (рис.3), нейрони якого мають активаційну функцію у виді одиничної граничної функції. На n входів надходять деякі сигнали, що проходять по синапсах на 3 нейрони, що утворюють єдиний шар цієї НС і три вихідних сигнали, що видають:
Очевидно, що усі вагові коефіцієнти синапсів одного ярусу нейронів можна звести в матрицю W, у якій кожен елемент wіj задає величину і-го синаптичного зв'язку j-ого нейрона. Таким чином, процес, що відбувається в НС, може бути записаний у матричній формі: Y=F(XW), де X і Y - відповідно вхідній і вихідний сигнальні вектори, F(V) - активаційна функція, застосовувана поэлементно до компонентів вектора V. Теоретично число ярусів і число нейронів у кожному ярусі може бути довільним.
Рис.3 Одноярусний персептрон.
Для того щоб нейронная мережа працювала - її треба навчити. Від якості навчання залежить здатність мережі вирішувати поставлені перед нею проблеми. На етапі навчання крім параметра якості підбору вагових коефіцієнтів важливу роль грає час навчання. Як правило, ці два параметри зв'язані зворотньою залежністю і їх приходиться вибирати на основі компромісу. Навчання НС може вестися з вчителем чи без нього. У першому випадку мережі пред'являються значення як вхідних, так і бажаних вихідних сигналів, і вона по деякому внутрішньому алгоритмі налаштовує ваги своїх синаптичних зв'язків. В другому випадку виходи НС формуються самостійно, а ваги змінюються по алгоритму, що враховує тільки вхідні і похідні від них сигнали.
Розглядаючи класифікацію НС можна виділити: бінарні (цифрові) і аналогові НС, попередньо навчені (неадаптивні) і що самонавчаються (адаптивні) нейронні мережі, що украй важливо при їхній апаратній реалізації. Бінарні оперують із двійковими сигналами, і вихід кожного нейрона може приймати тільки два значення: логічний нуль ("загальмований" стан) і логічна одиниця ("збудженийстан). До цього класу мереж відноситься і розглянутий вище трьох нейронный персептрон, тому що виходи його нейронів, формовані функцією одиничного стрибка, рівні або 0, або 1. В аналогових мережах вихідні значення нейронів можуть приймати неперервні значення, що могло б мати місце після заміни активаційної функції нейронів персептрона на сигмоїд.
Рис. 4. Двоярусний персептрон
Мережі також можна класифікувати по топології (числу ярусів і зв'язків між ними). На рис.4 представлений двоярусний персептрон, отриманий з персептрона рис.3 шляхом додавання другого ярусу, що складається з двох нейронів.
Практично 80% реалізованих на сьогодні нейрочіпів, орієнтованих на задачі цифрової обробки сигналів, використовують при навчанні НС алгоритм зворотнього поширення помилки, крім всього інші він став деяким еталоном для виміру продуктивності нейрообчислювачів (наприклад, як ШПФ на 1024 відліки для сигнальних процесорів).
1. Визначення нейрокомп’ютера.
Нейрокомпьютери - дуже модне слово, яке використовують направо і наліво. На початку 90-х років був дуже бурхливий розвиток даної тематики у вітчизняних розробках. Але разом з рядом серйозних розробок з'явилося і дуже велике число “порожніх” (паперових) проектів, де описувалася вся краса вживання нейромережевих обчислювальних засобів, а реальної віддачі -  нуль. Все це викликало у багато кого розчарування в розрекламованих можливостях нейрообчислювачів і привело до відтоку значних сил розробників і дослідників в суміжні області. Разом з “смертю” вітчизняних виробників елементної бази практично завершилися і проекти пов'язані з розробкою вітчизняною елементною базою нейрокомп’ютерів - нейрочіпів. Змальована картина може показатися достатньо похмурою, проте не все такий погано....?????
В залежності від наукового напрямку використовуються різні визначення нейрокомп’ютера.
1. Математична статистика. Нейрокомп’ютер - це обчислювальна система, що автоматично формує опис характеристик випадкових процесів або їх сукупностей, що мають складні, часто багатомодальні або взагалі апріорі невідомі функції розподілу.
2. Математична логіка. Нейрокомп’ютер - це обчислювальна система, алгоритм роботи якої представлений логічною мережею елементів часткового вигляду - нейронів, з повною відмовою від булевих елементів типу І, АБО, НЕ.
3. Порогова логіка. Нейрокомп’ютер - це обчислювальна система, алгоритм розв’язання задач в якій представлений у вигляді мережі порогових елементів з динамічно перебудовуваними коефіцієнтами і алгоритмами налаштування, незалежними від розмірності мережі порогових елементів і їх вхідного простору.
4. Обчислювальна техніка. Нейрокомп’ютер - це обчислювальна система з MSIMD архітектурою, в якій процесорний елемент однорідної структури спрощений до рівня нейрона, різко ускладнені зв'язки між елементами і програмування перенесено на зміну вагових коефіцієнтів зв'язків між процесорними елементами.
5. Медицина (нейробіологічний підхід). Нейрокомп’ютер - це обчислювальна система, що є моделлю взаємодії клітинного ядра, аксонів і дендридів, зв'язаних синаптичними зв'язками (синапсами) (тобто модель біохімічних процесів, що протікають в нервових тканинах).
6. Економіка і фінанси. Конкретне визначення відсутнє, але частіше під нейрообчислювачем розуміють систему забезпечуючу паралельне виконання “бізнес”-транзакцій.
На сьогодні можна виділити три основних напрямки розвитку обчислювальних систем з масовим паралелізмом (ОСМП):
Нейромережеві системи, реалізовані на апаратних платформах першого напрямку (нехай і мультипроцесорних) будемо відносити до нейроемуляторів - тобто систем, що реалізують типові нейрооперації (зважене підсумовування і нелінійне перетворення) на програмному рівні. Нейромережеві системи, реалізовані на апаратних платформах другого і третього напрямку у виді плат розширення стандартних обчислювальних систем (1-го напрямку) - будемо називати нейроприскорювачами і системи, реалізовані на апаратній платформі третього напрямку у виді функціонально закінчених обчислювальних пристроїв, варто відносити до нейрокомп’ютерів (всі операції виконуються в нейромережевому логічному базисі). Нейроприскорювачі можна розділити на два класи "віртуальні" (вставляються в слот розширення стандартного РС) і "зовнішні" ( щоз'єднуються з керуючою Host ЕОМ по конкретному інтерфейсі чи шині).
2. Основні компоненти нейрокомп’ютера.
3. Базова структура нейрокомп’ютера на основі ПОС.
Зупинимося на особливостях апаратної реалізації нейрообчислювача (НО) (див. рис.5) з можливістю паралельної обробки, що реалізують елементи нейромережі.
INCLUDEPICTURE "F:\\..\\..\\Svitlana\\Ksm-53_2\\Vavruk\\text\\L9\\НЕЙРОКОМПЬЮТЕРЫ - АРХИТЕКТУРА И РЕАЛИЗАЦИЯ-1.files\\neyrocomp_47.gif" \* MERGEFORMATINET
Рис.5. Базова (узагальнена) функціональна схема віртуального НО.
В основі побудови НО лежить використання сигнальних процесорів, об'єднаних між собою відповідно до визначеної архітектури, що забезпечує паралельність виконання обчислювальних операцій. Як правило, такі НО будуються на основі гнучкої модульної архітектури, що забезпечує простоту конфігурації системи і нарощуваність обчислювальної потужності шляхом збільшення числа процесорних модулів чи застосування більш продуктивних сигнальних процесорів. НО даного типу реалізуються в основному на базі несучих модулів стандартів ІSA, PCІ, VME. Основними їхніми функціональними елементами є модуль матричних сигнальних процесорів (МСП), робоча пам'ять, пам'ять програм, модуль забезпечення вводу/виводу сигналів (включаючи АЦП, ЦАП і TTL лінії), а також модуль керування, що може бути реалізований на основі спеціалізованого керуючого сигнального процесора (КП), на основі ПЛІС чи мати розподілену структуру, при якій функції загального керування розподілені між МСП.

4. Порівняльні характеристики нейрокомп’ютерів на базі ПОС.
Для побудови НО (нейрообчислювач) перспективним є використання сигнальних процесорів із плаваючою крапкою ADSP2106x, TMS320C4x,8x, DSP96002 і ін. Типова структурна схема реалізації НО на основі сигнальних процесорів ADSP2106x приведена на рис.6. До її складу включений один керуючий сигнальний процесор для здійснення функцій загального керування, і до восьми процесорів здійснюючих паралельні обчислення відповідно до закладених алгоритмів (матричні сигнальні процесори). Керуючий і матричні процесори утворять кластер процесорів із загальною шиною і ресурсами розподіленої пам'яті. Обмін інформацією між керуючим процесором, матричними процесорами, Host-ЕОМ і зовнішнім середовищем здійснюється за допомогою портів вводу/виводу. Для тестування і налагодження  - JTAG-порт. Є 12 зовнішніх лінків, а по 3 лінка кожного з МСП призначені для внутрімодульного міжпроцесорного обміну. Синхронізація роботи системи може здійснюватися як від внутрішніх кварцових генераторів, так і від зовнішніх генераторів. Активізація обчислень програмна чи зовнішня. Для вводу/виводу й АЦ/ЦА перетворень сигналів призначений спеціалізований модуль, що містить у собі: універсальний цифровий TTL порт, АЦП, ЦАП, вузол програмувальних напруг для зсуву шкал АПЦ і установки порога спрацьовування стартових компараторів, вузол фільтрації вихідних аналогових сигналів, підсистему тестування, вузол синхронізації і керування, буферну пам'ять FІFO. Первісне завантаження здійснюється по Host-інтерфейсі чи по лінках. Керуючий інтерфейс будь-якого МСП дозволяє керувати процесорним скиданням і перериваннями, його ідентифікаційним номером і т.п.
INCLUDEPICTURE "F:\\..\\..\\Svitlana\\Ksm-53_2\\Vavruk\\text\\L9\\НЕЙРОКОМПЬЮТЕРЫ - АРХИТЕКТУРА И РЕАЛИЗАЦИЯ-1.files\\neyrocomp_48.gif" \* MERGEFORMATINET
Рис.6. Реалізація НО на основі ADSP2106x
Така архітектура НО забезпечує виконання операцій ЦОС у реальному часі, прискорення векторних обчислень, можливість реалізації нейромережевих алгоритмів з високим паралелізмом виконання векторних і матричних операцій.
Структурна схема НО на основі сигнальних процесорів TMS320C4x представлена на рис.7. Декілька DSP, що входять у структуру НО утворять розподілену обчислювальну структуру з процесорних модулів, з'єднаних між собою високошвидкісними портами. Даний варіант реалізації НО може бути побудований з використанням від двох до восьми сигнальних процесорів.
INCLUDEPICTURE "F:\\..\\..\\Svitlana\\Ksm-53_2\\Vavruk\\text\\L9\\НЕЙРОКОМПЬЮТЕРЫ - АРХИТЕКТУРА И РЕАЛИЗАЦИЯ-1.files\\neyrocomp_49.gif" \* MERGEFORMATINET
Рис.7. Структура НО на основі TMS320C4x.
При використанні двох паралельних 32-розрядних DSP TMS320C40 обмін інформацією при реалізації нейромережевих алгоритмів здійснюється за допомогою шести зв'язаних портів із пропускною здатністю в 30 Мб/c і каналів DMA кожного з процесорів. Підтримуючи парелельну незалежну роботу, підсистема DMA і процесор забезпечують паралельний обмін інформацією зі швидкостями до 560 Мб/c. За допомогою високошвидкісних портів можлива реалізація на основі даних DSP таких архітектур, як: кільця, ієрархічні дерева, гіперкуб і т.п. Кожна з локальних шин TMS320C40 забезпечує обмін інформацією на швидкостях до 120 Мбайт/с.
Процесорні модулі функціонують незалежно і при необхідності поєднуються за допомогою зв'язаних портів. Функції обміну, керування процесорними модулями, перериваннями і каналами DMA реалізують ПЛІС, наприклад фірми Xіlіnx. Застосування в НО динамічних реконфігуруючих структур (нейромережі зі структурною адаптацією) і використання останніх ПЛІС, вимагає мінімізації часу на реконфігурацію ПЛІС, що найчастіше програмуються в режимах Master Serіal і Perіpherіal. Основний недолік при використанні даних режимів перепрограмування полягає в залежності процесу переконфігурації ПЛІС від вбудованого тактового генератора. Мінімальні втрати часу можливо одержати при проведенні переконфігурації ПЛІС у режимі Slave Serіal, у якому внутрішній тактовий генератор відключений, а синхронізація здійснюється за допомогою зовнішніх синхросигналів.
Підсистема збереження інформації включає модулі локальної статичної (до 256Кх32) і динамічної пам'яті (до 8Мх32) на кожний із процесорів і глобальної статичної пам'яті (до 256Кх32). Host-ЕОМ здійснює звертання до глобальній статичній пам'яті 16-бітними словами в режимі рядкових пересилань з автоінкрементованням адреси за допомогою адресного простору портів вводу/виводу. Для дозволу можливих конфліктних ситуацій до складу НО введені арбітри доступу. Додатковий обмін інформацією може бути здійснений через високошвидкісний комунікаційний порт. Host-ЕОМ має можливість переривати роботу кожного з процесорних модулів. Підсистема переривань підтримує обробку переривань до кожного з DSP при обміні інформацією з Host-ЕОМ.
Реалізація НО, блок матричних процесорів якого побудований на основі чотирьох матричних TMS320C44 із продуктивністю 60 MFLOPS, являє собою розподілену обчислювальну структуру з процесорних модулів із продуктивністю до 960 MFLOPS, з'єднаних між собою високошвидкісними портами Структура НО містить у собі КП (TMS320C44), чотири МСП (TMS320C44), статичну пам'ять (до 512Кх32), динамічну пам'ять (до 16Мх32) і интерфейсні засоби для обміну з зовнішнім середовищем. Використовуваний процесор має дві незалежні шини: глобальну і локальну зі швидкістю обміну до 240 Мбайт/c і чотири паралельних байтових порти з пропускною здатністю 30 Мбайт/с. Комунікаційні порти забезпечують проведення міжпроцесорного обміну з мінімальним навантаженням на мікропроцесорне ядро, для чого використовуються відповідні контролери DMA для кожного з портів. Кожний з портів забезпечує передачу інформації зі швидкістю до 20 Мбайт/c, що дозволяє досягати пікової продуктивності по всіх портах близько 120 Мбайт/с.
Чотири процесорних модулі функціонують на платі незалежно. Обмін інформації між ними здійснюється за допомогою байтового порту. Комунікаційні порти і канали DMA забезпечують різноманітні можливості високошвидкісного обміну. Host-ЕОМ має можливість переривати роботу кожного з процесорних модулів. Для використання спеціалізованого багатовіконного відлагоджувача задач ЦОС фірми Texas Іnstruments у структуру НО уводиться JTAG інтерфейс. Завантаження програм і даних, обмін даними між НО і Host-ЕОМ здійснюється через високошвидкісний комунікаційний порт, що має FІFO буфера в обох напрямках. Вузли вводу/виводу підключаються через глобальну шину з пропускною здатністю до 100 Мбайт/c. Внутрішня структура інтерфейсу визначається завантаженою в ПЛІС конфігурацією.
Розглянуті варіанти НО забезпечують виконання ЦОС і нейроалгоритмів у реальному масштабі часу, прискорення векторних і матричних обчислень, у порівнянні з традиційними обчислювальними засобами в кілька разів і дозволяють реалізовувати нейромережу з числом синапсів до декількох мільйонів.
INCLUDEPICTURE "F:\\..\\..\\Svitlana\\Ksm-53_2\\Vavruk\\text\\L9\\НЕЙРОКОМПЬЮТЕРЫ - АРХИТЕКТУРА И РЕАЛИЗАЦИЯ-1.files\\neyrocomp_50.gif" \* MERGEFORMATINET
Рис.8. Структура НО на основі TMS320C44
Ще більше підвищити продуктивність НО даного типу можна при використанні одного із самих потужних на сьогодні сигнальних процесорів - TMS320C80, TMS320C6ххх фірми TІ.
Прикладом реалізації НО на DSP фірми Моторолла є нейрообчислювач NEURO TURBO фірми Fujіtsu. Він реалізований на основі 4-х зв'язаних кільцем 24-розрядних DSP із плаваючою крапкою МВ86220 (основні параметри: внутрішня точність 30 розрядів, машинний цикл 150 нс., пам'ять програм-25Кслів х2 (внутрішня), 64К слів х4 (зовнішня), технологія виготовлення КМОП 1,2 мкм). Активаційна функція нейронів обмежується в діапазоні від 0 до 1, а можливі значення входів не перевищують 16 розрядів, що обумовлює достатню точність при 24-х розрядній архітектурі. Побудова нейрокомп’ютера на основі кільцевої структури об'єднання DSP дозволяє знизити апаратні витрати на реалізацію підсистеми централізованого арбітражу міжпроцесорної взаємодії.
Нейрокомп’ютер NEURO TURBO (рис.9) складається з чотирьох DSP, зв'язаних один з одним за допомогою двопортової пам'яті. Кожний з DSP може звертатися до двох модулів такої пам'яті (ємністю 2К слів кожна) і до робочої пам'яті (РП) (ємністю 64К слів х4 Банку) у своєму адресному просторі. Внаслідок того, що доступ до двопортової пам'яті здійснюється випадковим чином одним із сусідніх DSP, то передача даних між ними відбувається в асинхронному режимі. Робоча пам'ять використовується для збереження вагових коефіцієнтів, даних і допоміжної інформації. Для успішної роботи НМ необхідне одержання згорток у всіх елементарних нейронних вузлах. Кільцева структура об'єднання DSP забезпечує конвеєрну архітектуру згортки, причому передача даних по конвеєрі здійснюється за допомогою ДПП. Після того як DSP завантажує дані з однієї ДПП, він записує результати своєї роботи в суміжну ДПП, отже, кільцева архітектура паралельної обробки забезпечує високу швидкість операції з використанням відносно простих апаратних рішень.
Для виконання функцій загального керування використовується Host-ЕОМ на основі звичайної обчислювальної системи. Обмін даними між нейроплатою і Host-ЕОМ через центральний модуль ДПП. Завантаження програм у DSP здійснюється за допомогою пам'яті команд для кожного DSP. Отже, його архітектура цілком відповідає паралельній розподіленій архітектурі типу MІMD. Пікова продуктивність системи 24 MFLOPS.
INCLUDEPICTURE "F:\\..\\..\\Svitlana\\Ksm-53_2\\Vavruk\\text\\L9\\НЕЙРОКОМПЬЮТЕРЫ - АРХИТЕКТУРА И РЕАЛИЗАЦИЯ-1.files\\neyrocomp_51.gif" \* MERGEFORMATINET
Рис.9. Структура нейрокомп’ютера NEURO TURBO (фірми Fujіtsu)
Для реалізації моделі НМ ієрархічного типу фірмою Fujіtsu випущена нейроплата на основі DSP МВ86232, із власною пам'яттю до 4 Мб, що дозволяє здійснювати моделювання НМ, що містить більш 1000 нейронів. Структура НМ містить у собі вхідний, проміжний і вихідний рівні (найбільше число схованих шарів - два (обмеження по пам'яті)). Для навчання нейрокомп’ютера використовуються оригінальні фірмові алгоритми: алгоритм віртуального імпедансу, алгоритм скоректованого навчання й алгоритм розширеного навчання.
Кожна з розглянутих типових структур реалізації НМ може бути промодельована на основі розглянутих вище варіантів побудови мультипроцесорних НО. Так, для НО на основі TMS320C4x при реалізації якої-небудь з розглянутих архітектур (кільце, ієрархічне дерево, гіперкуб і т.п.) досить тільки змінити призначення комунікаційних портів, що забезпечує гнучкість і масштабування при дослідженні і розробках нейромережевих систем різної архітектури.
Нейроприскорювачі на базі ПЛІС. Нейрообчислювачі на базі ПЛІС - як правило позиціонуються як гнучкі нейрообчислювальні системи для науково-дослідних цілей і дрібносерійного виробництва. Для побудови більш продуктивних і ефективних нейрообчислювачів як правило потрібно застосування сигнальних процесорів.
Паралельний перепрограмовувальний обчислювач (ППВ) розроблений у стандарті VME і реалізований на базі перепрограмовувальних мікросхем сімейства 10К фірми Altera. Обчислювач призначається для роботи як апаратний прискорювач на шині VME. Він повинний включатися в систему як підлеглий пристрій основної керуючої ЕОМ (host-машини) з універсальним процесором.
ППВ використовується для побудови систем розпізнавання образів на основі обробки телевізійної, тепловізійної і іншої інформації, а також систем, заснованих на реалізації алгоритмів із граничними функціями і найпростішими арифметичними операціями і дозволяє домогтися значної швидкості обчислень.
Обчислювач складається з наступних функціональних блоків [3]:
· схема керування (Сх Кер);
· базові обчислювальні елементи (БОЕ1-БОЕ6);
· контролер зовнішньої шини (Контролер E-bus);
· контролер системної шини (Контролер VME);
· два масиви статичної пам'яті (ОЗУ0, ОЗУ1);
· блок високошвидкісних приймачів/передавачів.
Схема керування використовується для керування БОЕ і потоками даних в обчислювачі і є найпростішим RІSC процесором. Структура і набір команд процесора можуть змінюватися в залежності від типу розв'язуваної задачі.
БОЕ використовуються для виконання найпростіших арифметичних операцій типу додавання, віднімання, множення й обчислення граничних функцій. Тому що БОЕ реалізовані на перепрограмовувальних мікросхемах, їхня архітектура може змінюватися. Архітектура БОЕ для різних алгоритмів може відрізнятися, але зазвичай легко реалізується шляхом комбінації бібліотечних функцій, компіляції їх за допомогою САПР (типу MaxPlus) і завантаження файлу конфігурації в обраний БВЭ (базовий обчислювальний елемент).
INCLUDEPICTURE "F:\\..\\..\\Svitlana\\Ksm-53_2\\Vavruk\\text\\L9\\НЕЙРОКОМПЬЮТЕРЫ - АРХИТЕКТУРА И РЕАЛИЗАЦИЯ-1.files\\neyrocomp_46.gif" \* MERGEFORMATINET
Рис.. Структурна схема ППВ [3].
Два масиви локальної статичної пам'яті зібрані з 8 мікросхем статичної пам'яті ємністю 0,5 Мбайт, мають розмір 4Мбайт і організовані як масив 512К 8-байтовых слів. Масиви пам'яті зв'язані зі схемою керування окремими адресними шинами і можуть функціонувати незалежно один від одного. Пам'ять призначена для збереження загальних коефіцієнтів, а також проміжних результатів обчислень чи остаточних результатів, підготовлених до передачі через контролер системної шини в центральний процесор чи через контролер E-bus на лінк-порти.
Зв'язок декількох обчислювачів між собою чи обчислювача з пристроєм оцифровування зображення, при наявності в пристрої оцифровування відповідного інтерфейсу, здійснюється за допомогою послідовного каналу приймачів/передавачів HOTLіnk фірми CYPRESS. Керування передачею даних виконує контролер зовнішньої шини, що представляє собою набір 4-х стандартних FІFO і регістрів керування і даних. Контролер шини VME виконує функцію інтерфейсу з центральним процесором і є стандартним пристроєм.
З погляду програміста обчислювач можна представити як RіSC-процессор (схема керування чи керуючий процесор) і шість векторних процесорів (обчислювальних елементів), що відпрацьовують SіMD-команды (одна команда для багатьох даних). Велика кількість шин даних, можливість одночасної роботи всіх БОЕ і виконання арифметичних операцій множення і додавання за один такт дозволяє ефективно розпаралелювати процес обробки інформації.
Особливістю схеми керування перепрограмувального обчислювача для систем обробки інформації є наявність робочої команди, що керує шістьма базовими обчислювальними елементами. Команда дозволяє одночасно, за один такт, задавати різні режими функціонування шести базовим обчислювальним елементам і інкрементувати адреси обох масивів пам'яті на будь-яке число від 0 до 255, збережене в регістрах інкремента, причому кожному масиву відповідає свій регістр. Команда може повторюватися будь-яку кількість разів у відповідності зі значенням, збереженим у спеціальному регістрі. Це дозволяє виконувати основну команду без втрат на організацію циклів і переходів. Робоча команда дозволяє одночасно запускати обидва контролери локальної пам'яті, інкрементувати адресні регістри на необхідне значення, виставляти на адресні шини адреси з відповідних регістрів адреси, виставляти на шини керування БОЕ команди з відповідних регістрів БОЕ. Крім того, робоча команда здійснює організацію обміну даними між контролером зовнішньої шини і локальною пам'яттю.
5. Реалізація ШПФ на нейрокомп’ютері.
Розглянемо реалізацію ШПФ на базі процесора Л1879ВМ1(NM6403). Процесор Л1879ВМ1 -  високопродуктивний спеціалізований мікропроцесор, що об’єднює в собі риси двох сучасних архітектур: VLIW (Very Long Instruction Word) і SIMD (Single Instruction Multiple Data) (рис.10). Тактова частота - 40 МГц; напруга живлення - від 3,0 до 3,6 В; споживана потужність - 1,3Вт. Основні обчислювальні вузли процесора - керуюче RISC-ядро і векторний співпроцесор.
RISC-ядро – центральний процесорний вузол, що виконує всі основні функції по керуванню роботою кристала. Крім того, RISC-процесор робить арифметико-логічні і операції зсуву над 32-розрядними скалярними даними і формує 32-розрядні адреси команд і даних при звертаннях до зовнішньої пам'яті. Довжина команди - 32 і 64 розряди (звичайно в команді виконуються дві операції). Процесор реалізує п’ятиступінчатий 32-розрядний конвеєр. Адресний простір - 16 Гбайт, два адресних генератори, вісім регістрів загального призначення і вісім адресних регістрів. Будь-яка інструкція виконується за один такт.
Векторний співпроцесор призначений для арифметичних і логічних операцій над 64-розрядними скалярними даними програмувальної розрядності. Обмін даними між основними вузлами процесора відбувається по трьох внутрішніх шинах, двом вхідним і однієї
вихідній.
EMBED Word.Picture.8
GMI і LMI - два однакових блоки програмувального інтерфейсу з локальною і глобальною 64-розрядними зовнішніми шинами. До кожної з них може бути підключена зовнішня пам'ять, що містить до 231 32-розрядних комірок. Обмін даними з зовнішньою пам'яттю здійснюється як 32-, так і 64-розрядними словами (NM6403 одночасно вибирає дві сусідні комірки пам'яті). Кожен блок програмувального інтерфейсу дозволяє працювати з двома банками зовнішньої пам'яті різного обсягу, типу (DRAM, SRAM, Flash ROM, EDO DRAM і т.д.) і швидкодії без додаткового устаткування. Передбачено апаратну підтримку режиму розподіленої пам'яті для різних мультипроцесорних конфігурацій зовнішніх шин.
СР1 і СР2 - ідентичні комунікаційні порти, що забезпечують інформаційний обмін по двонаправленій восьмиразрядной шині. Вони призначені для побудови високопродуктивних мультипроцесорних систем і цілком сумісні з комунікаційними портами процесора ТМ320C4x. Кожен комунікаційний порт має вбудований контролер прямого доступу до пам'яті (ПДП, DMA), що дозволяє обмінюватися 64-розрядними даними з пам'яттю на зовнішніх шинах.
ВЕКТОРНИЙ СПІВПРОЦЕСОР
Векторний співпроцесор структурно являє собою матрично-векторний операційний пристрій і набір регістрів різного призначення.
Операційний пристрій (ОУ) - регулярна матрична структура 64х64 комірки (рис.11). Матриця може бути довільно розділена на стовпці і рядки. В утворені після поділу макрокомірки завантажуються вагові коефіцієнти Wіj . На вхід матриці подається вектор вхідних даних EMBED Equation.3 , кожному елементу якого відповідає рядок матриці. Ширина рядка (у бітах) - розрядність даного елемента вхідних даних. У макрокомірках відбувається множення елемента вектора вхідних даних на ваговий коефіцієнт і додавання зі значенням верхньої комірки (або значень входів і U ). Таким чином, для кожного стовпця обчислюється скалярне вираз EMBED Equation.3 . Для зниження розрядності вихідних даних і захисту від арифметичного переповнення використовується програмувальна функція насичення (рис. 12) .
63
1
Вхід X
0
63
32
0
Вхід Y
Тіньова матриця
EMBED Equation.3
EMBED Equation.3
EMBED Equation.3
32






Рис. 11. Структура операційного пристрою векторного співпроцесора

Рис. 12. Програмувальна функція насичення.
Операнди і вихідні значення упаковуються в 64-х розрядне слово. Всі операції в матриці ОУ робить паралельно, за один такт. Завантаження вагових коефіцієнтів відбувається за 32 такти. У векторному співпроцесорі є "тіньова" матриця, в яку вагові коефіцієнти можна завантажувати у фоновому режимі. Переключення "тіньової" і робочої матриць займає один такт. Найважливіша особливість векторного співпроцесора - робота з операндами довільної довжини (навіть не кратного степеня двійки) у діапазоні 1-64 біт. Цим досягається оптимальне співвідношення між швидкістю і точністю обчислень: при однобітових операндах на тактовій частоті 40 МГЦ продуктивність складе 11 520 MMAC (мільйонів операцій множення з нагромадженням) чи 40 000 MOPS (мільйонів логічних операцій у секунду), при 32-бітових операндах і 64-бітовому результаті вона стане номінальною – 40 MMAC. Вміння динамічно, в процесі обчислень змінювати розрядність операндів дозволяє підвищити продуктивність в тих випадках, коли звичайні процесори працюють "вхолосту", з надлишковою точністю.
Для обчислення продуктивності використовуються наступні вирази:

де: МСРS - мільйон з'єднань у секунду (еквівалентно ММАС)
64 - ширина слова даних;
Nх- ширина синапсів;
Nw- ширина ваг;
F = 50 МГЦ - тактова частота.
У випадку Nх?1 і Nw=1, вираз набуває вигляду:

У випадку Nх=1 і Nw?1, вираз набуває вигляду:

У випадку Nх=Nw=1, вираз набуває вигляду:

У випадку Nх=Nw=32, вираз набуває вигляду:

Організація паралельних обчислень в алгоритмах ШПФ на процесорі NM6403
. На практиці найбільш широке поширення одержали алгоритми ШПФ за основою 2, де кожен функціональний вузол виконує базову операцію - двохвходового "метелика". Ці алгоритми орієнтовані, насамперед , на зведення до мінімуму числа операцій множення. Але з появою векторних процесорів цей критерій стає несуттєвим. Навпроти, число одночасно виконуваних множень головним чином визначає продуктивність процесора. Тому виникає питання про розпаралелюваня обчислень і реалізацію алгоритмів ШПФ із більш високими основами і їхніми можливими комбінаціями. Послідовність обчислень будь-якого ШПФ можна описати у вигляді графа, вузли якого виконують фактично звичайне дискретне перетворення, але з меншою розмірністю вхідних векторів (меншою основою). В залежності від вибору основи міняється як загальне число арифметичних операцій, так і кількість шарів графа (рис.13).
Таблиця 1. Обчислювальна складність ШПФ
Complex muls - кількість комплексних множень
Complex adds - кількість комплексних додавань
В алгоритмах ШПФ за основою 2 кількість таких шарів максимальна (табл.1), тому при поетапному надходженні результатів обчислень від шару до шару відбувається більше нагромадження помилок округлення, ніж в алгоритмах з більш високими основами. І чим вища розмірність вектора вхідних даних, тим більша буде кількість шарів і в наслідок значніша помилка. Це особливо критично у випадках, коли обчислення проводяться в цілочисельній арифметиці (з фіксованою крапкою) чи при недостатньо широкій розрядності даних. Слід також зазначити, що в цьому випадку для запобігання переповнення проміжні результати після кожного чи після групи етапів множення (шарів графа) необхідно додатково нормалізувати, застосовуючи операцію зсуву вправо (рис.13). Нормалізація крім зсуву може містити в собі процедуру округлення, що також вносить додаткові обчислювальні витрати. Можливим компромісним рішенням може виступати підхід, оснований на збільшенні основи в алгоритмах ШПФ. Нижче розглядається варіант ШПФ-256 за основою 16. Вибір такої основи з однієїсторони дає можливість для організації паралельних обчислень, а з іншої знижує кількість шарів графа до двох.
Дискретне 256-точкове перетворення Фур'є визначається формулою:
,де
Дана формула після тотожних перетворень приймає вид, що є опорним для побудови
ШПФ-256 за основою 16:

Кінцевий граф обчислення ШПФ-256 за основою-16 будується з цієї формули. Структура такого графа показана на рис.13

Рис.13 Узагальнений граф обчислення ШПФ-256 Рис.14 Розгорнута схема блоку 16-точкового
за основою 16. дискретного перетворення Фур'є
Граф складається з двох шарів по 16 блоків. Кожен блок графа має 16 комплексних входів і виходів. Як показано на рис.14 кожен блок графа являє собою 16-точкове дискретне перетворення Фур'є і відрізняється від інших блоків тільки комплексними коефіцієнтами W. Таким чином, распаралелювання алгоритму БПФ фактично зводиться до реалізації ефективного обчислення ДПФ-16, тобто до знаходження 16 скалярних добутків різних векторів [W] з одним вектором [x], що еквівалентно множенню матриці коефіцієнтів перетворення Фур'є -[W] розмірністю 16х16 на вхідний вектор [х].
Всі арифметичні обчислення, що відносяться безпосередньо до обчислення ДПФ-16, виробляються на векторному співпроцесорі. Так як векторний співпроцесор дозволяє оперувати даними перемінної розрядності, то для збереження вхідних даних і результатів обчислень зручно відводити по 32 розряди на уявну і дійсну частину, а для збереження комплексних коефіцієнтів W - по 8 біт на дійсну і уявну частину. Таким чином, в одному 64р. слові може міститися одне комплексне число. Уявні і дійсні частини коефіцієнтів W зберігаються так само в упакованому виді, але в різних 64р. словах. Усі коефіцієнти W обчислюються заздалегідь і тому зберігаються усередині масиву в порядку зручному для наступних обчислень (рис.15).

Рис.15 Формат збереження вхідних даних і коефіцієнтів перетворення
Внаслідок такого представлення даних векторний помножувач працює в двох конфігураціях:

Рис.16 Еквівалентна схема помножувача векторного Рис.17 Еквівалентна схема помножувача векторного
співпроцесора NM6403 при розбитті матриці співпроцесора NM6403 при розбитті матриці
вагових коефіцієнтів - (2х32біти)/(8х8біт) вагових коефіцієнтів - (2х32біти)/(2х32біти)
По приведених двох варіантах розбивки матриці векторного помножувача виробляється повний процес скалярного множення двох комплексних векторів. Перша схема виконує 16 множень з нагромадженням за такт і служить для знаходження сум попарних добутків уявних і дійсних частин, друга виконує 4 множення з нагромадженням за такт, але фактично служить тільки для остаточного додавання отриманих часткових сум. Повна схема множення двох комплексних векторів довжиною 16 елементів відображена на рис.18. Тому що за один раз у матрицю вагових коефіцієнтів можна завантажити тільки 8 елементів вектора [х], завантаження усього вектора [х] відбуваються в два етапи.
Весь процес обчислення скалярного добутку EMBED Equation.3 складається з трьох етапів:
В матрицю вагових коефіцієнтів завантажуються 8 комплексних чисел x(0)..x(7).
На вхід помножувача X по черзі подаються спочатку вектор з 8-ми дійсних частин комплексних
коефіцієнтів W(0)..W(7) (тут EMBED Equation.3 ), а потім вектор з 8-ми уявних частин. Множення робиться відповідно до схеми на рис.16.
Далі з виходу помножувача результат добутку у виді двох 64р. слів безпосередньо надходить на підсумовуючий Y-вхід помножувача . При цьому в матрицю вагових коефіцієнтів завантажуються числа x(8)..x(15), а на вхід X помножувача аналогічно надходять і збільшуються нові коефіцієнти W(8)..W(15).
Для одержання остаточного результату -y(k), суми в лівих і правих частинах двох останніх результатів ("3-rd product" і "4-th poduct" ) необхідно перехресно скласти ( з врахуванням знака "-"). Для цього, як показано на рис.6, в матрицю вагових коефіцієнтів завантажуються числа 0,1 і -1, а самі суми подаються на вхід X і Y і далі, працюючи за схемою на рис.5, векторний помножувача видає кінцевий результат для y(k).
Для наочності на рис.18 проілюстрований процес скалярного множення тільки двох векторів. В дійсності завантаження вхідних даних здійснюється пакетами по 32 64-розрядні слова, що дозволяє
максимально ефективно використовувати векторний співпроцесор. В результаті, з врахуванням часу передачі даних кожен крок множення (рис 16, рис 17) практично займає один процесорний такт, це досягається за рахунок одночасного використання двох шин даних - підкачування вхідних даних x(і) по одній шині суміщається з завантаженням коефіцієнтів W(і) чи вивантаженням результатів множення y(і) по іншій. Таким чином, реально вся процедура скалярного множення двох комплексних 16-мірних векторів у середньому по всьому ШПФ-256 складає 7 процесорних тактів.

Рис.18 Послідовність обчислення скалярного добутку EMBED Equation.3
Продуктивність і точність обчислень.
Точність обчислень визначається кількістю біт, що відводяться для представлення коефіцієнтівW. Є два способи представлення значень косинусів і синусів у 8 розрядній сітці:
1. W =round(64.0*cos(x)) - (умовно 6 біт на одиницю)
2. W =round(127.0*cos(x)) - (умовно 7 біт на одиницю)
Перший спосіб має 65 градацій косинуса в діапазоні 0..1, у той час як другий спосіб - 128 і
отже має більш високу точність. Однак, виконуючи в ході обчислень тільки операції цілочисельного множення і додавання, наприкінці необхідно провести нормалізацію результатів, тобто кожен елемент вихідного масиву потрібно поділити на відповідний масштабуючий коефіцієнт. Для першого випадку він дорівнює 642, а для другого - 1272. В обох випадках розподіл доцільний замінити зсувом вправо, але на відміну від першого способу заміна розподілу на 1272 зсувом на 14 біт вправо привносить невелику систематичну похибку. Нормалізацію можна проводити або один раз наприкінці множень, або двічі – після кожного етапу множення (рис.1) (проміжна нормалізація служить для запобігання переповнення в ході обчислень). Кількість необхідних етапів нормалізації визначаться в залежності від діапазону вхідних даних див. табл. 3.
Для оцінки точності довільний сигнал оброблявся прямим і зворотнім перетворенням Фур'є, після
чого вихідний x порівнювався з відновленим сигналом x'. Зокрема , знаходилося математичне сподівання M і середнє квадратичне відхилення ? відносних похибок .?. EMBED Equation.3
Таблиця 2. Порівняльна характеристика точності відновленого сигналу після прямого і зворотного ШПФ із різними основами
Знак "-" означає, що відновлений сигнал послабляється на М відсотків у порівнянні з вихідним.
Як видно з приведеної таблиці 7-бітне представлення коефіцієнтів для ШПФ за основою 2 вносить
значну систематичну похибку і робить такий алгоритм менш ефективним. Алгоритми ШПФ із основами 16 і 32 дозволяють більш ефективно використовувати наявну розрядну сітку під коефіцієнти W і мають більш високу точність за рахунок у 4-5 разів меншого числа шарів графа, що також знижує додаткові витрати на нормалізацію й округлення. При цьому операція округлення на процесорі NM6403 виконується за допомогою векторного регістра vr [2] разом з основними обчисленнями, не приводячи до додаткових витрат часу. Також є можливість проведення додаткової оптимізації за рахунок сполучення процедури нормалізації (арифметичного зсуву вправо) з останнім етапом обчислення скалярного добутку (рис. 6).
Загальна характеристика функцій ШПФ.
Вхідні і вихідні дані - цілі 32р. комплексні числа, формат збереження показаний на рис.3
Діапазон вхідних даних зазначений у таблиці 3.
Розрядність коефіцієнтів перетворення - 8 біт (два варіанти представлення: 6 і 7 біт на одиницю)
Робота з даними - арифметика з фіксованою крапкою.
Вихідні дані розташовані в правильному порядку.
Таблиця 3. Продуктивність функцій прямого і зворотного ШПФ на процесорі NM6403
NM6403 cycle tіme=25 ns (40MHz)