Как разработать микроархитектуру нейросетевого ускорителя
![Микроархитектура вычислительного ядра Микроархитектура вычислительного ядра](https://habrastorage.org/getpro/habr/upload_files/593/6c3/f87/5936c3f87d394bddc0038ee3efa75d5d.png)
Для создания микроархитектуры важно рассмотреть принципы работы вычислительного ядра и управляющего устройства.
Ядро фактически является вычислителем взвешенной суммы. Основная особенность заключается в наличии очередей входов и весов, которые подаются на умножители. Результаты с умножителей суммируются между собой и добавляются к текущему значению счетчика.
Реализация блока активации — более сложная задача, так как она предполагает вычисление тригонометрических формул, делений на переменные значения и других подобных операций. Но поступим проще — добавим таблицу значений (LUT, lookup table), которая позволяет посчитать примерное значение функции в заданной точке.
Статья Михаила Степанова, инженера-стажера из группы функциональной верификации YADRO, поможет вам понять, с чего начать погружение в тему ускорения нейросетей. Экспериментировать можно самостоятельно — ссылки на исходники простой нейросети на C++ и реализованную модель ускорителя на SystemC вы найдете в тексте.