基于多流SIMD机制的CNN加速器设计与矩阵运算优化
1. 矩阵运算优化
在矩阵运算中,通过观察各种矩阵分解算法,定义了矩阵的基本行列运算。利用CORDIC运算电路解释了如何使用CORDIC进行行列运算,并将每种矩阵分解方法的运算行为分为扫描模式和对角模式,在此基础上进行电路设计。
1.1 优化计算方面
- Row Major操作设计 :提出Row Major操作设计,以降低行列运算中数据的复杂度。矩阵数据可以自适应排列存储,通过一次读取多个数据,有效减少内存读取次数。
- 矩阵数据存储 :首先定义块存储方法,将矩阵存储为4×4的子矩阵单元,使行列运算具有良好的数据局部性。使用A/B缓冲区的两个缓冲块存储数据,根据矩阵分解方法的运算行为确定矩阵数据的存储位置,进一步减少与外部内存的数据交换次数。
- 运算加速 :使用递归CORDIC运算单元,通过旁路跳过大幅度旋转来加速CORDIC运算。采用相同的运算核心架构和自适应数据分配,设计了具有多个计算核心的运算模式,使运算核心能够灵活扩展。此外,通过移位操作,大大减少了矩阵运算的迭代次数。
通过软件模拟整个架构的运算,除了评估性能外,还通过测试平台使用模拟结果验证多个CORDIC运算核心的正确性。最后,将四个计算核心模块化成CORDIC 4,使整个架构可以由CPU控制,实现更灵活的扩展。
不过,本文提出的Row - Major操作方法可以优化特征值分解的运算,但在进行奇异值分解时,由于算法的限制,无法使用该方法进行优化