Вычисления в памяти Увеличение емкости памяти и скорости обработки
Современные наиболее распространенные вычислительные архитектуры построены на предположениях о доступе к памяти и ее использовании. Эти системы предполагают, что полное пространство памяти слишком велико, чтобы поместиться на кристалле рядом с процессором, и что мы не знаем, какая память потребуется в какое время. Чтобы решить проблему нехватки места и проблему неопределенности, эти архитектуры строят иерархию памяти. Иерархия памяти рядом с ЦП небольшая и быстрая и может поддерживать высокую частоту использования, в то время как DRAM и SSD достаточно велики для хранения более объемных и менее чувствительных ко времени данных.
Вычисления в памяти строятся с использованием разных предположений: у нас есть большой объем данных, к которым нам нужно получить доступ , но мы точно знаем, когда они нам понадобятся. Эти предположения возможны для приложений вывода ИИ, потому что поток выполнения нейронной сети детерминирован — он не зависит от входных данных, как многие другие приложения. Используя это знание, мы можем стратегически контролировать расположение данных в памяти, вместо того чтобы строить иерархию кеша, чтобы компенсировать недостаток знаний. Вычисления в памяти также добавляют локальные вычисления к каждому массиву памяти, что позволяет обрабатывать данные непосредственно рядом с каждой памятью . Имея вычисление рядом с каждым массивом памяти, мы можем иметь огромную память, которая имеет ту же производительность и эффективность, что и кэш L1 (или даже регистровые файлы).
Архитектура потока данных
Максимизация производительности вывода за счет тщательного проектирования архитектуры