论文部分内容阅读
随着半导体制造技术的飞速发展,集成电路可以在单一芯片上实现信号采集、处理、存储以及I/O等多种功能,这种系统级集成电路又被称作片上系统(SoC,System on Chip)。SoC在单一的芯片上实现了系统级的各个功能模块,具有高速度,高集成度和低功耗的特点,同时很大程度上缩减了产品的体积和成本,因此被广泛应用于通信、控制以及多媒体等各个领域。深度神经网络被广泛用于图像检测,语音识别和自然语言处理等领域。由于深度神经网络模型越来越复杂,其对计算能力的要求也越来越高。然而片上系统多用于嵌入式领域,有着严格的性能和功耗限制,因此如何在片上系统(嵌入式系统)上应用神经网络成了一个亟待解决的问题。本文从以下三个方面对片上系统的神经网络应用问题进行了相关的研究:第一,片上系统是高度集成的嵌入式系统,由于面积和功耗等方面的限制,在片上系统上应用深度神经网络一般采取先在云端训练训练模型然后迁移到嵌入式设备上使用的方法。本文通过搭建深度神经网络模型并将公共数据集上训练好的模型用于个人化的数据集,验证了本地再训练的必要性。对于本地再训练过程中很难收集到有标签的数据的问题,本文提出了基于用户正确性反馈的训练方法,即虽然很难要求用户手动指定训练样本的标签,但是用户却可以对神经网络的推断结果做出一个反馈,“推断正确”或“推断错误”,然后根据用户的反馈生成对应样本的标签从而用于神经网络的训练。第二,基于专用指令的神经网络加速器和基于层的加速器设计相比具有灵活度高,扩展性强的特点。而独立的加速器实现需要额外的译码单元和编译器等软硬件资源,本文提出利用自定义指令来设计加速器的专用指令,这样加速器和CPU共享译码单元和编译器,同时两者之间通过协处理器接口紧耦合,具有更高的通信效率。第三,由于定点表示法相比与浮点表示法占用存储空间少,计算电路实现简单,所以本文的加速器实现采用了8位有符号定点数。但是定点数小数点位置固定,表数动态范围有限,计算结果很容易超出其表示范围。针对这个问题,本文给定点数引入了动态机制,即参与计算的每个向量内的元素小数点位置相同,不同的向量小数点位置可以不同。这样可以根据每个向量的数据范围设置小数点位置。