一种扩展单元

文档序号:34056849发布日期:2023-05-05 17:45阅读:37来源:国知局
一种扩展单元

本发明涉及存内计算,具体涉及一种扩展单元。


背景技术:

1、在大数据应用背景下,以数据为中心的新型计算架构:存算一体(computing-inmemory,cim)受到人们的广泛关注。

2、通过存算一体芯片提供一种新的神经网络硬件设计思路:通过在存储器内部嵌入一定的计算能力,比如在芯片外围或者存储阵列当中嵌入计算单元以减少数据在存储器与处理器之间的数据迁移,从而提高计算速度、缓解带宽压力并降低功耗。从计算范式上来看,存算一体架构存在数字式与模拟式两种。其中,数字式存算一体方案的计算单元由数字加法器或乘法器实现,而模拟式存算一体通过电流、电压叠加或电荷累积来实现乘累加运算。现阶段,由于在乘加运算电路的设计上更为简洁有效,且神经网络对于计算准确度有比较高的容忍性,模拟式存算一体芯片在神经网络加速方面表现出了更好的前景。

3、模拟存算一体技术实现乘累加运算的方式通过电流、电压、电荷等物理量的积累实现累加运算,不同于数字存算一体方案,模拟存算以及技术在计算规模变大时不需要增加计算电路而只需增加存储计算单元(改造后的sram或rram、mram),这使得模拟存算一体芯片在执行大规模矩阵运算时具有很大优势。但与之相对应的,现有神经网络计算方式不能够充分调用存算一体芯片的计算能力。例如:cnn网络具有多层卷积结构,当前卷积层计算完毕后开始下一层卷积计算。然而,一层卷积所占据的乘累加算力只占全部算力的小部分;另一方面,存算一体的计算带宽远大于cpu带宽,这导致数据调度的时间大于芯片进行存内计算的时间,这两点导致大规模部署模拟存算一体计算时,计算资源利用率不高,其高并行度的计算优势体现不明显。


技术实现思路

1、针对现有技术中的问题,本发明实施例提供一种扩展单元,能够至少部分地解决现有技术中存在的问题。

2、一方面,本发明提出一种扩展单元,包括:

3、输入输出模块、输入fifo、输出fifo、模拟存算一体阵列、近存电路和状态机;其中:

4、所述输入输出模块用于实现所述扩展单元与外部信号交互,与所述输入fifo、所述输出fifo、所述模拟存算一体阵列和所述近存电路分别相连接;

5、所述输入fifo用于缓冲输入数据,并在缓冲输入数据过程中将cpu时钟域转化为计算时钟域,与所述模拟存算一体阵列、所述近存电路和所述状态机分别相连接;

6、所述输出fifo用于缓冲输出数据,并在缓冲输出数据过程中将计算时钟域转化为cpu时钟域,与所述近存电路相连接;

7、所述模拟存算一体阵列用于实现乘累加运算,与所述近存电路和所述状态机分别相连接;

8、所述近存电路用于处理乘累加运算结果,与所述状态机相连接;

9、所述状态机用于运行所述模拟存算一体阵列。

10、其中,所述输入输出模块具体用于接收外部的地址信息和对应数据,并根据所述地址信息对应数据的数据类型发送目标数据至相应的数据接收方。

11、其中,所述近存电路包括配置寄存器;相应的,所述输入输出模块还具体用于:

12、接收由所述配置寄存器发送的计算状态信号,并根据所述计算状态信号确定计算模式;

13、根据所述计算模式确定外部数据总线高数据位是否被启用,以及向所述输入fifo写入的特征向量数据的数据宽度。

14、其中,所述输入fifo具体用于:

15、接收由所述配置寄存器发送的计算状态信号,并根据所述计算状态信号将所述输入fifo划分为对应子模块;

16、根据划分得到的子模块确定所述特征向量数据的存储位置。

17、其中,所述输入fifo还具体用于:

18、向所述状态机发送划分得到子模块的负载状态信号,并根据所述负载状态信号的数据宽度,确定与所述计算模式相对应的数据宽度启用位。

19、其中,所述近存电路还包括门控寄存器;相应的,所述状态机还具体用于:

20、接收由所述门控寄存器发送的门控信息,根据所述门控信息和所述负载状态信号确定与所述模拟存算一体阵列的行阵列相对应的划分得到子模块的负载状态;所述门控信息表示所述模拟存算一体阵列的行阵列是否被启用;

21、若确定全部划分得到子模块的负载状态都为非空状态,则将所述状态机切换为运转状态。

22、其中,所述状态机还具体用于:

23、向所述模拟存算一体阵列发送控制信号,以实现控制所述模拟存算一体阵列完成乘累加运算。

24、其中,所述模拟存算一体阵列还具体用于:

25、接收所述输入输出模块发送的权重数据和对应地址信息,并根据所述地址信息的存储空间映射关系将所述权重数据写入到对应存储位置;

26、接收所述门控寄存器发送的门控信号;所述门控信号包括对应位数的行门控信号和列门控信号;

27、根据所述行门控信号和所述列门控信号启用对应子阵列;

28、从所述存储位置读取所述权重数据,并通过所述子阵列对所述权重数据以及所述特征向量数据进行乘累加运算;

29、将乘累加运算结果发送至所述近存电路。

30、其中,所述近存电路还包括彼此顺序相连的向量移位模块、向量加法器和片上线网,以及与所述片上线网单独相连的线选寄存器;其中:

31、所述近存电路还具体用于按照预设位数拆分所述乘累加运算结果,得到拆分后的各计算结果向量;

32、所述向量移位模块与所述配置寄存器相连接,用于接收所述近存电路分配的各计算结果向量和所述配置寄存器的移位配置信息,根据所述移位配置信息对所述各计算结果向量进行移位,将移位后得到的第一中间计算结果发送至所述向量加法器;

33、所述向量加法器与所述配置寄存器相连接,用于接收所述第一中间计算结果和由所述配置寄存器发送的第一预设位数加数数据和第二预设位数宽度加减信号;

34、根据所述第二预设位数宽度加减信号和所述第一预设位数加数数据对所述第一中间计算结果进行相应的二次计算,得到第二中间计算结果;

35、发送所述第二中间计算结果至所述片上线网;

36、所述片上线网用于接收所述第二中间计算结果和由所述线选寄存器发送的线选信号,并根据所述线选信号对所述第二中间计算结果进行重新排列,将重新排列后的第二中间计算结果作为乘累加运算结果,并发送所述乘累加运算结果至所述输出fifo。

37、其中,所述扩展单元还包括控制器,所述控制器与所述状态机和所述近存电路分别连接;

38、所述控制器用于:

39、接收由所述状态机发送的启动信号,根据所述启动信号向所述向量移位模块、所述向量加法器和所述片上线网分别发送使能信号,以控制所述向量移位模块、所述向量加法器和所述片上线网启动。

40、本发明实施例提供的扩展单元,包括输入输出模块、输入fifo、输出fifo、模拟存算一体阵列、近存电路和状态机;其中:所述输入输出模块用于实现所述扩展单元与外部信号交互,与所述输入fifo、所述输出fifo、所述模拟存算一体阵列和所述近存电路分别相连接;所述输入fifo用于缓冲输入数据,并在缓冲输入数据过程中将cpu时钟域转化为计算时钟域,与所述模拟存算一体阵列、所述近存电路和所述状态机分别相连接;所述输出fifo用于缓冲输出数据,并在缓冲输出数据过程中将计算时钟域转化为cpu时钟域,与所述近存电路相连接;所述模拟存算一体阵列用于实现乘累加运算,与所述近存电路和所述状态机分别相连接;所述近存电路用于处理乘累加运算结果,与所述状态机相连接;所述状态机用于运行所述模拟存算一体阵列,能够提高计算资源利用率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1