У меня есть следующие данные:
A = [a0 a1 a2 a3 a4 a5 .... a24]
B = [b0 b1 b2 b3 b4 b5 .... b24]
который я затем хочу умножить следующим образом:
C = A * B' = [a0b0 a1b1 a2b2 ... a24b24]
Это явно включает 25 умножений.
Однако в моем сценарии только 5 новых значений сдвигаются в A за «итерацию цикла» (и 5 старых значений сдвигаются из A). Есть ли какой-нибудь быстрый способ использовать тот факт, что данные перемещаются через A, а не являются совершенно новыми? В идеале я хочу свести к минимуму количество операций умножения (за счет, возможно, большего количества сложений/вычитаний/накоплений). Сначала я думал, что систолический массив может помочь, но это не так (я думаю!?)
Обновление 1: Примечание B фиксируется на длительное время, но его можно перепрограммировать.
Обновление 2: смещение A выглядит следующим образом: a[24] ‹= a[19], a[23] ‹= a[18]... a[1] ‹= new01, a[0] ‹= новый00. И так далее каждый такт
Большое спасибо!
B
неизменным на протяжении всего процесса перехода? - person Sergey Kalinichenko   schedule 11.04.2013a[0]
с новым элементом илиa[0]
сa[1]
иa[1]
сa[2]
и так далее? Вы играете с DMA для прямого хранения? - person Koushik Shetty   schedule 11.04.2013