CN112035398B - 一种系统级芯片SoC及适用于SoC的数据处理方法 - Google Patents
一种系统级芯片SoC及适用于SoC的数据处理方法 Download PDFInfo
- Publication number
- CN112035398B CN112035398B CN202010866661.8A CN202010866661A CN112035398B CN 112035398 B CN112035398 B CN 112035398B CN 202010866661 A CN202010866661 A CN 202010866661A CN 112035398 B CN112035398 B CN 112035398B
- Authority
- CN
- China
- Prior art keywords
- data
- bus
- npu
- dmac
- sram
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 14
- 230000002093 peripheral effect Effects 0.000 claims abstract description 66
- 238000012545 processing Methods 0.000 claims abstract description 46
- 238000013528 artificial neural network Methods 0.000 claims abstract description 12
- 230000003068 static effect Effects 0.000 claims abstract description 6
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 claims abstract 16
- 238000000034 method Methods 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 17
- 238000012546 transfer Methods 0.000 claims description 16
- 230000001133 acceleration Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 abstract description 9
- 238000000926 separation method Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/781—On-chip cache; Off-chip memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Abstract
本发明提供了一种系统级芯片SoC及适用于SoC的数据处理方法,包括:位于第一总线的外设单元和第一直接内存访问控制器DMAC;位于第二总线的神经网络处理器NPU、静态随机存取存储器SRAM和第二直接内存访问控制器DMAC;第一总线与第二总线通过异步桥连接,第一总线的数据位宽小于第二总线的数据位宽;第二总线的读通道与写通道分离。上述方案中通过加入了一个专门用于数据计算的NPU,可以提高数据处理的效率;在第一总线的基础上加入了第二总线,通过访问不同的总线缓解了每条总线的压力,同时又由于第二总线中读通道与写通道分离、数据位宽更大的特点,大幅度提高了DMAC搬运数据的效率,提高了总线的性能。
Description
技术领域
本发明涉及集成电路数据处理领域,尤其涉及一种系统级芯片SoC及适用于SoC的数据处理方法。
背景技术
随着集成电路工艺水平的提高,芯片也朝着高速、多功能、低电压、低功耗、便携、高可靠性系统化方向发展。系统级芯片SoC(system on chip)也由此应运而生。所谓SoC芯片是指在单一芯片上集成数字和模拟混合器、信号采集和转换、I/O接口、存储器、MCU和DSP等具有系统功能的IC。SoC芯片由于其片内资源丰富,集成度高,体积小,使用灵活性大等优点,成为了IC设计界的焦点。
随着深度学习技术的发展,越来越多的公司将SoC芯片应用于数据处理领域。例如语音识别领域,通过具有语音识别功能的SoC芯片,即可与机器进行语音交流,让机器明白你说什么。例如在车联网中,只需人员口述即可设置目的地直接导航。例如图像识别领域,通过具有人脸识别功能的SoC芯片,就可以进行安全检查、身份核验或移动支付;通过具有商品识别功能的SoC芯片,就可以应用在商品流通过程中,特别是无人货架、智能零售柜等无人零售领域;通过对输入的视频画面进行识别、检测、分析,得出目标轨迹或检测目标对象,可用于监控系统,路况识别等领域。
可以看出,这也对SoC芯片的架构设计和性能提出了更高的要求。因而,如何设计出具有高数据处理效率的SoC芯片是亟需解决的技术问题。
发明内容
本发明实施例提供一种系统级芯片SoC及适用于SoC的数据处理方法,用以解决现有SoC芯片处理数据效率慢的技术问题。
本发明实施例提供一种系统级芯片SoC,该SoC芯片包括:
位于第一总线的外设单元和第一直接内存访问控制器DMAC;位于第二总线的神经网络处理器NPU、静态随机存取存储器SRAM和第二直接内存访问控制器DMAC;所述第一总线与所述第二总线通过异步桥连接,所述第一总线的数据位宽小于所述第二总线的数据位宽;所述第二总线的读通道与写通道分离;
所述外设单元,用于采集第一数据并输出第二数据;
所述第一DMAC,用于将所述第一数据从所述外设单元搬迁至所述SRAM及将所述第二数据从所述SRAM搬迁至所述外设单元;
所述NPU,用于对所述第一数据进行处理,得到所述第二数据;
所述SRAM,用于存储所述第一数据和所述第二数据;
所述第二DMAC,用于将所述第一数据从所述SRAM搬迁至所述NPU及将所述第二数据从所述NPU搬迁至所述SRAM。
在SoC芯片中加入了一个专门用于数据计算的NPU,可以更加高效地完成数据处理所需要的运算,提高了数据处理的效率;通过引入两种总线,NPU在运算时通过第二总线读取指令和数据,外设单元采集的第一数据通过第一总线进行搬迁,通过访问不同的总线缓解了每条总线的压力,同时又由于第二总线中读通道与写通道分离、数据位宽更大的特点,大幅度提了高搬运数据的效率,解决了同时工作时总线易拥堵的问题;最后,在两条总线上分别设置DMAC进行数据的搬运,两个DMAC协同工作,密切配合,有效地提高了数据的搬运效率。
可选地,所述第二总线的运行频率与所述NPU的运行频率相同,且大于所述第一总线的运行频率。
本方案中的NPU与第二总线采用同一个时钟,运行频率相同,可以让NPU与第二总线运行在一个较高的频率下,提高NPU的数据处理效率;而第一总线与第一总线上的外设单元则可以保持在一个较低的频率上,使电路的时序容易收敛。
可选地,所述SoC芯片中还包括位于所述第二总线上的中央处理器CPU和位于所述第一总线上的闪存flash控制器;
所述CPU,用于通过所述flash控制器读取运行代码,并触发所述NPU运行所述运行代码;
所述flash控制器,用于获取所述运行代码。
通过CPU读取运行代码,并触发所述NPU运行所述运行代码,可以使得NPU基于CPU读取的代码对数据进行运算,避免NPU再次通过flash控制器读取运行代码,浪费计算资源的同时,造成第一总线的拥堵。
可选地,所述NPU中包括单片机MCU、运算加速模块MCA、快速傅里叶变换模块FFT和紧耦合内存TCM;
所述MCU,用于配置所述MCA和所述FFT对所述第一数据的运算,用于配置所述第一DMAC和所述第二DMAC进行数据搬迁;
所述MCA和所述FFT,用于对所述第一数据进行处理,得到所述第二数据;
所述TCM,用于存储所述运行代码、所述第一数据和所述第二数据。
本发明中加入的NPU的运行主要依靠MCU控制,MCU在运行代码后,配置所述第一DMAC和所述第二DMAC将数据搬迁至TCM,同时配置MCA与FFT对第一数据的运算,二者同时进行,提高了数据处理的效率;同时MCA与FFT是专门用于神经网络各类基本运算的模块,这种专用模块的运算效率要高于CPU内部的DSP。
所述TCM,将所述运行代码、所述第一数据和所述第二数据进行存储,方便所述MCA和所述FFT对所述运行代码、所述第一数据和所述第二数据的读取,避免到外部的SRAM中读取降低数据访问效率。
可选地,所述MCA,用于通过第一接口从所述TCM中获取所述第一数据并进行处理;
所述FFT,用于通过所述第二总线从所述TCM中获取所述第一数据并进行处理。
所述MCA通过专用接口访问TCM中的数据,不必绕到外部的第二总线上,提高了数据的访问效率。所述FFT的运行频率较低,通过异步桥连接所述第二总线,通过所述第二总线从所述TCM中获取所述第一数据并进行处理,有利于时序的收敛。
可选地,所述第二总线的数据通道与控制通道分离。
如此,当多个类似于CPU、DMAC等具有数据访问功能的部件同时访问第二总线时,不会造成总线拥堵,有利于数据处理效率的提高。
本发明实施例提供的一种适用于系统级芯片SoC的数据处理方法,该方法包括:
位于第一总线的第一DMAC将外设单元采集的第一数据搬迁至位于第二总线上的SRAM;
位于所述第二总线的第二DMAC将所述第一数据从所述SRAM搬迁至位于所述第二总线上的NPU;
所述NPU对所述第一数据进行处理,得到第二数据;
所述第二DMAC将所述第二数据从所述NPU中搬迁至所述SRAM;
所述第一DMAC将所述第二数据从所述SRAM搬迁至所述外设单元;
所述外设单元将所述第二数据输出;其中,所述第一总线与所述第二总线通过异步桥连接,所述第一总线的数据位宽小于所述第二总线的数据位宽;所述第二总线的读通道与写通道分离。
可选地,所述第二总线的运行频率与所述NPU的运行频率相同,且大于所述第一总线的运行频率。
可选地,在位于第一总线的第一DMAC将外设单元采集的第一数据搬迁至位于第二总线上的SRAM之前,还包括:
CPU通过flash控制器读取运行代码,并将所述运行代码搬迁到所述SRAM中;
所述CPU触发所述NPU运行所述运行代码。
可选地,所述数据处理方法还包括:
所述NPU中的MCU,配置所述第一DMAC和所述第二DMAC进行数据搬迁;
所述NPU对所述第一数据进行处理,得到第二数据,包括:
所述NPU中的MCA和所述NPU中的FFT对所述第一数据进行处理,得到所述第二数据。
可选地,所述NPU中的MCA和所述NPU中的FFT对所述第一数据进行处理,包括:
所述MCA通过第一接口从所述NPU中的TCM中获取所述第一数据并进行处理;
所述FFT通过所述第二总线从所述TCM中获取所述第一数据并进行处理。
可选地,位于第一总线的第一DMAC将外设单元采集的第一数据搬迁至位于第二总线上的SRAM之前,还包括:
所述外设单元通过握手信号触发所述第一DMAC进行数据搬迁。
外设单元完成第一数据的采集后,通过握手信号触发所述第一DMAC进行数据搬迁,可以实现资源的有效利用,提高了数据的搬迁效率。
可选地,在位于第一总线的第一DMAC将外设单元采集的第一数据搬迁至位于第二总线上的SRAM之后,在位于所述第二总线的第二DMAC将所述第一数据从所述SRAM搬迁至位于所述第二总线上的NPU之前,还包括:
所述第一DMAC向所述NPU发送中断信号。
所述第一DMAC向所述NPU发送中断信号,可提示所述NPU进行数据的搬迁配置工作,实现了资源的有效利用,提高了数据的搬迁效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了一种应用于语音识别的SoC芯片架构示意图;
图2为本发明实施例提供的一种可能的SoC芯片架构示意图;
图3为本发明实施例提供的一种适用于SoC的数据处理方法步骤示意图;
图4为本发明实施例提供的又一种可能的SoC芯片架构示意图;
图5为本发明实施例提供的一种可能的SoC芯片中的NPU的结构示意图;
图6为本发明实施例提供的一种SoC芯片中的NPU进行数据处理的方法步骤示意图;
图7为本发明实施例提供的一种SoC芯片应用于语音识别系统的方法流程图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1示出了一种应用于语音识别的SoC芯片架构。如图1所示,包括AHB总线及挂载在AHB总线上的中央处理器CPU、静态随机存取存储器SRAM、语音模块、QSPI flash控制器、直接内存访问控制器DMAC。CPU通过AHB总线从QSPI flash控制器中读取语音识别程序并将语音识别程序搬运至SRAM;之后配置语音模块开始工作。在语音模块采集到数据并经模数转换后,通过DMAC搬运至SRAM中;CPU再通过AHB总线读取SRAM中的数据,按照语音识别程序进行运算;运算后的结果再由DMAC搬运回语音模块中;语音模块将它们转换成模拟信号后驱动功放完成识别响应。
上述语音识别的SoC中,CPU需要通过AHB总线读取语音识别程序和语音模块采集的数据,而DMAC也需要通过AHB总线来搬运数据,同时访问AHB总线可能造成总线拥堵,降低数据处理的效率。
为了解决上述问题,本申请提供一种系统级芯片SoC及适用于SoC的数据处理方法,用于提高SoC的数据处理效率。
图2为本发明实施例提供的一种可能的SoC芯片架构示意图,该SoC芯片架构中可以包括位于第一总线的外设单元、第一直接内存访问控制器DMAC;位于第二总线的神经网络处理器NPU、静态随机存取存储器SRAM、第二直接内存访问控制器DMAC和中央处理器CPU;第一总线与第二总线通过异步桥连接,第一总线的数据位宽小于第二总线的数据位宽;第二总线的读通道与写通道分离。
首先,对图2所示的各部件进行简单介绍。
外设单元,是基于对SoC芯片中的输入数据而言的,即通过外设单元获取SoC芯片处理的数据。因而,如果是语音识别的SoC芯片,外设单元可以是图1所示的语音模块,用于获取语音信号并输出SoC芯片处理结果;如果是图像识别的SoC芯片,外设单元可以是图像模块,用于获取图像信号并输出SoC芯片处理结果等。
CPU,是SoC芯片的控制核心,用于对SoC芯片内的各部件进行控制管理;
NPU,采用“数据驱动并行计算”的架构,内部有着专门用于神经网络各类基本运算的模块,运算效率要高于CPU内部的DSP。
DMAC,可以用来控制在RAM随机存取存储器和I/O输入输出设备之间数据的传送。DMAC一旦被CPU激活,就可以自行传送数据;因而,可以减轻CPU的负担,提高数据传输的效率。
让设备可以绕过处理器,直接由内存来读取资料。
它允许不同速度的硬件设备来沟通,而不需要依赖于中央处理器的大量中断负载。否则,中央处理器需要从来源把每一片段的数据复制到寄存器,然后把它们再次写回到新的地方。在这个时间中,中央处理器对于其他的工作来说就无法使用。所以为了减轻CPU的负担,就把一部分任务下放给一个专用的处理器,即DMAC。利用DMAC传送数据的另一个好处是,数据直接在源地址和目的地址之间传送,不需要中间媒介。如果通过CPU把一个字节从适配卡传送至内存,需要两步操作。首先,CPU把这个字节从适配卡读到内部寄存器中,然后再从寄存器传送到内存的适当地址。DMAC将这些操作简化为一步,它操作总线上的控制信号,使写字节一次完成。这样大大提高了计算机运行速度和工作效率。本发明实施例采用两个DMAC:第一DMAC,用于根据NPU的配置将所述第一数据从所述外设单元搬迁至所述SRAM及将所述第二数据从所述SRAM搬迁至所述外设单元;第二DMAC,用于根据NPU的配置将所述第一数据从所述SRAM搬迁至所述NPU及将所述第二数据从所述NPU搬迁至所述SRAM。其中将第一数据从所述SRAM搬迁至所述NPU及将所述第二数据从所述NPU搬迁至所述SRAM,也可由NPU完成,本发明实施例对比不作限制。
SRAM,是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。相对之下,动态随机存取存储器(DRAM)里面所储存的数据就需要周期性地更新,否则内部的数据即会消失。因此SRAM具有较高的性能。
总线,是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束。总线是一种内部结构,它是CPU、内存、I/O设备传递信息的公用通道。
基于图2所示的SoC芯片,NPU用于对外设单元采集的第一数据进行处理得到第二数据,从而提升了数据处理的效率。位于第一总线的第一DMAC,用于将所述第一数据从所述外设单元搬迁至所述SRAM及将所述第二数据从所述SRAM搬迁至所述外设单元;位于第二总线的第二DMAC,用于将所述第一数据从所述SRAM搬迁至所述NPU及将所述第二数据从所述NPU搬迁至所述SRAM;通过将不同部件按照业务需求挂载在不同的总线,缓解了每条总线的压力;即NPU在运算时通过第二总线读取指令和数据,外设单元采集的第一数据通过第一总线进行搬迁。实际上,在搬迁数据量不大时,NPU也可以直接从SRAM搬迁第一数据或者直接将第二数据写入SRAM中。
本发明实施例中采用的第二总线可以为数据位宽较大且读写通道分离的AXI总线,第一总线可以为数据位宽相对较小的AHB总线、APB总线等,以上仅为示例,对此不作限制。
以采用AXI-128总线为例进行比较。本示例中将CPU、NPU与SRAM挂在了128bit的AXI总线上。表1为DMAC从SRAM中搬移1KB数据至NPU中所需要的时间对比,其中AXI-DMAC(128位)指的是本示例中的DMAC配置成128位宽的AXI总线后的搬移效率,AXI-DMAC(32位)指的是本示例中的DMAC配置成32位宽的AXI总线后的搬移效率,AHB-DMAC(32位)指的是DMAC配置为32位宽的AHB总线后的搬移效率。数据的单位为微秒,工作频率均为48MHz。可以看出,DMAC在128bit的AXI总线上的搬移效率最高。
搬运时间(us) | |
AXI-DMAC(128位) | 7.33 |
AXI-DMAC(32位) | 14.6 |
AHB-DMAC(32位) | 63.6 |
表1三种架构中DMAC数据搬运效率对比
需要说明的是,表1仅是一种示例性的简单说明,其所列举的总线对应的搬运时间仅是为了便于说明方案,并不构成对方案的限定。
进一步的,所述第二总线的数据通道与控制通道分离。
如此,当多个类似于CPU、DMAC等具有数据访问功能的部件同时访问第二总线时,不会造成总线拥堵,有利于数据处理效率的提高。
基于图2所示的SoC芯片,图3提供一种可行的数据处理方法,包括:
步骤301、位于第一总线的第一DMAC将外设单元采集的第一数据搬迁至位于第二总线上的SRAM;
具体地,NPU配置第一DMAC和外设单元的寄存器,控制外设单元进行第一数据的采集工作和第一DMAC将外设单元采集的第一数据搬迁至SRAM中。外设单元数据采集完成后,通过与第一DMAC之间的握手信号来通知第一DMAC,第一DMAC会把采集到的数据从外设单元中搬迁到SRAM中,并向NPU发送中断信号,提示NPU搬迁结束。此处,第一数据一般是对外设单元采集的数据经过一定处理后的数据,如进行模数转换处理等。
步骤302、位于所述第二总线的第二DMAC将所述第一数据从所述SRAM搬迁至位于所述第二总线上的NPU;
具体地,NPU配置第二DMAC的寄存器,控制第二DMAC将所述第一数据从所述SRAM搬迁至NPU中。NPU在数据量小的时候,也可以直接将所述第一数据从所述SRAM搬迁至NPU中。
步骤303、所述NPU对所述第一数据进行处理,得到第二数据;
具体处理过程详见下文对NPU的说明。
需要说明的是,步骤302和步骤303可同时进行。例如在数据量非常大的情况下,第二DMAC先搬迁第一部分数据供NPU运算,再去搬迁第二部分数据,与此同时,NPU可以对第一部分数据进行运算处理。如此,提高了数据处理的效率。
步骤304、所述第二DMAC将所述第二数据从所述NPU中搬迁至所述SRAM;
具体地,所述第二DMAC根据NPU的配置将所述第二数据从所述NPU中搬迁至所述SRAM;NPU在数据量小的时候,也可以直接将所述第二数据从所述NPU中搬迁至所述SRAM。
步骤305、所述第一DMAC将所述第二数据从所述SRAM搬迁至所述外设单元;
具体地,所述第一DMAC根据NPU的配置将所述第二数据从所述SRAM搬迁至所述外设单元;
步骤306、所述外设单元将所述第二数据输出。
从上述介绍中可以看出,通过在CPU的协调控制下,引入NPU专门进行数据处理,可以更加高效地完成数据处理所需要的运算,提高了数据处理的效率;通过引入两种总线,NPU在运算时通过第二总线读取指令和数据,外设单元采集的第一数据通过第一总线进行搬迁,通过访问不同的总线缓解了每条总线的压力,同时又由于第二总线中读通道与写通道分离、数据位宽更大的特点,大幅度提高了搬运数据的效率,解决了同时工作时总线易拥堵的问题;最后,在两条总线上分别设置DMAC进行数据的搬运,两个DMAC协同工作,密切配合,有效地提高了数据的搬运效率。
在图2所示的SoC芯片的基础上,进一步提供了一种可行的SoC芯片,如图4所示,还包括位于第一总线的flash控制器、串行通讯端口COM以及一些外设。
flash控制器,用于获取片内和/或片外的运行代码。根据数据运算需求的不同,可获取相应的运行代码。因而,如果是语音识别的SoC芯片,则获取进行语音识别运算的运行代码;如果是图像识别的SoC芯片,则获取进行图像识别运算的运行代码等。具体地,运行代码可集成在芯片内部,也可通过访问外部的flash获取,因此flash控制器可以用于获取片内和/或片外的运行代码,本发明实施例对此不作限定。
可选的,第一总线和第二总线还可以根据需求挂载其他外设单元。外设单元与第一总线或第二总线的交互设计也可以根据外设单元的特性而不同。如图4所示的外设单元1可通过一条总线挂载在第二总线上,外设单元2可直接挂载在第一总线上,外设单元3和本发明实施例的外设单元一起通过一条总线挂载在第一总线上。根据需求的不同,外设单元可以是图像模块,视频模块,打印模块等。本发明实施例对上述外设单元的种类和数量不作限定。
可选的,在第一总线和第二总线上挂载的外设单元较多时,还可在第二总线上挂载COM,用于NPU与CPU之间的通讯。例如,当外设单元1正在被CPU访问时,CPU会告知COM外设单元1正在被CPU访问。NPU在访问外设单元1之前会先访问COM,读取CPU对各个IP的占用状态,NPU发现外设单元1正在被CPU访问,则NPU会等到CPU释放了对外设单元1的占用后,再去访问外设单元1。如此,节省了计算资源,同时避免了NPU频繁通过总线访问外设造成总线的拥堵。需要说明的是,上述示例仅是对方案的描述,不构成对方案的限定。
在图3所示的数据处理方法之前,还包括:
首先,CPU的reset信号被释放,此时CPU会通过flash控制器从内部或外部的flash中读取代码并执行,然后CPU或第一DMAC将NPU需要执行的代码从flash搬运到SRAM中,之后CPU会将这些代码所存放的首地址配置到寄存器中,并释放NPU的reset信号。NPU的reset信号被释放后,NPU会从寄存器中获取CPU所配置的首地址,并根据首地址读取代码来运行,同时将运行代码搬迁至NPU中。NPU也可配置第二DMAC进行运行代码的搬迁,本发明实施例对比不作限定。
通过CPU读取运行代码,触发所述NPU运行并将运行代码搬迁至NPU,可以使得NPU基于CPU读取的代码对数据进行运算,避免NPU再次通过flash控制器读取运行代码,浪费计算资源的同时,造成第一总线的拥堵。
本发明实施例还提供一种可能的SoC芯片中的NPU的结构示意图。如图5所示,NPU中包括单片机MCU、运算加速模块MCA、快速傅里叶变换模块FFT、紧耦合内存TCM、第三总线,异步桥,以及一些接口转换桥。
TCM,是一个固定大小的RAM,紧密地耦合至处理器内核,提供与CACHE(高速缓冲存储器)相当的性能。TCM包括专门存储运行代码的指令区ITCM(图上未标出)与专门存储第一数据和第二数据的数据区DTCM(图上未标出)。NPU会将运行代码搬迁至ITCM中,将第一数据搬迁至DTCM中,运算完成的第二数据也会存放在DTCM中。如此,将运行代码和第一数据均存储到NPU中的TCM区,方便了MCA和FFT对运行代码的读取和对第一数据的运算,进一步提高了数据处理的效率。
MCU,是NPU的控制核心。NPU对程序代码的读取和搬迁、对第一DMAC和外设单元的配置、对第二DMAC的配置,以及MCA和FFT对数据的运算,均是在MCU的控制下进行的。MCU可通过第二接口(图上未标出)直接访问TCM。
MCA和FFT,用于对第一数据进行处理,得到第二数据;具体地,MCA可以通过第一接口(图上未标出)直接对DTCM中存储的数据进行乘累加、ReLU、softmax等神经网络算法所需要的基本运算,并可以直接将计算结果写回DTCM中,其运算效率要高于CPU中的DSP。因此使用MCA进行神经网络运算可以显著提高效率。FFT是专用的快速傅里叶变换计算模块,它可以从DTCM中读取数据进行FFT运算,运算完成后再写回DTCM中,运算效率相对于CPU内部的DSP也有较大的提高。
以对语音数据进行128位连续乘累加、矩阵行处理和512点32位实数FFT运算为例进行比较。如表2所示,其中数据的单位为时钟周期数。MCA进行128位连续乘累加运算的效率约为CPU的3倍左右,矩阵行处理的效率根据行数的不同约为CPU的1-3倍。FFT进行512点32位实数FFT的运算效率约为CPU的3-4倍。可以看出,NPU通过这两个专用的运算模块提高了语音识别的效率。
NPU | CPU | |
128位连续乘累加 | 2 | 6 |
矩阵行处理 | 10 | 32 |
512点32位实数FFT | 9 | 30 |
表2NPU与CPU运算效率对比
需要说明的是,表2仅是一种示例性的简单说明,其所列举的运算对应的时钟周期数仅是为了便于说明方案,并不构成对方案的限定。
第三总线,用于NPU内部与外部之间的数据传输。
本发明实施例中的第三总线可以为AHB_32、AHB_64等,本发明对此不做限制。
接口转换桥,负责将NPU内部各个IP的低数据位宽接口转换为第二总线的接口,与外部的第二总线相连,这样可以与外部模块进行数据传输。例如,如果NPU内部的第三总线采用AHB_32总线,其他总线采用AXI_64总线,NPU外部的第二总线采用AXI_128总线,则需要采用接口转换桥将NPU内部的AHB_32总线和AXI_64总线的接口转换为AXI_128总线的接口,方便与外部的AXI_128总线相连,进行数据传输。
相应的,基于图5所示的NPU的内部结构,图6提供一种可行的NPU进行数据处理的方法,以对步骤303进行详细说明,包括:
步骤601:MCU获取运行代码,并配置MCA和FFT进行运算;
具体地,MCU通过第二接口(图上未标出)直接访问ITCM中的运行代码,并根据神经网络算法通过第三总线配置MCA和FFT的寄存器,使其对DTCM中的第一数据进行运算。
如此,MCU通过第三总线可以实现对MCA和FFT的配置,不需要绕到外部的第二总线上进行配置,这样也能提高效率。
步骤602:MCA和FFT对所述第一数据进行处理,得到所述第二数据;
MCA是专用的神经网络运算模块,运算效率高于CPU中的DSP。MCA通过第一接口(图上未标出)直接对DTCM中存储的数据进行运算,进一步提高了运算效率。FFT是专用的快速傅里叶变换计算模块,它可以从DTCM中读取数据进行FFT运算。MCA和FFT对第一数据运算完成后将运算结果再写回DTCM中。
由于FFT的运行频率较低,FFT通过异步桥连接外部的第二总线,通过第二总线和第三总线获取DTCM中的第一数据并进行计算。有利于时序的收敛。
步骤603:运算结束,MCU配置第二DMAC、第一DMAC和外设单元进行第二数据的搬迁和输出工作;
具体地,每一次运算完成后,MCA和FFT向MCU发出中断,MCU收到中断后会根据算法需求来配置下一次的运算。运算最终完成后,MCU会根据运算结果配置第二DMAC的寄存器,控制第二DMAC向SRAM中写入需要发送的第二数据,并配置第一DMAC和外设单元的寄存器,控制第一DMAC和外设单元分别进行数据的搬迁和输出工作。
进一步的,所述第二总线的运行频率与所述NPU的运行频率相同,且大于所述第一总线的运行频率。
在图1所示的SoC芯片,受制于AHB总线的频率,CPU也无法进行高频率的工作,根据研究发现,CPU频率最高只能到150MHz。本方案中的NPU与第二总线采用同一个时钟,运行频率相同,可以让NPU与第二总线运行在一个较高的频率下,提高NPU的数据处理效率;而第一总线与第一总线上的外设单元则可以保持在一个较低的频率上,使电路的时序容易收敛。
表3为在FPGA平台上对两种架构进行响应时间的性能测试,工作频率为48MHz时,两种架构对10ms语音数据前处理的时间,其中数据单位为毫秒。两种架构分别指图1所示的用于语音识别的SoC芯片架构和图2所示的本发明实施例提供的一种可能的SoC芯片架构。本示例中,图1所示的架构中CPU的运行频率为150MHz;NPU的运行频率达到250MHz,可以看出,图2的架构进一步提高了数据处理的效率。
处理时间(ms) | |
图1架构 | 6.5 |
图2架构 | 4 |
表3两种架构语音数据处理时间对比
为了更清楚的介绍上述方法流程,本发明实施例以语音识别系统为例,进行详细介绍。
如图7所示例的一种SoC芯片应用于语音识别系统的方法流程图,用户可通过点击智能终端的预设按键,启用语音识别系统。
步骤701:CPU启动,读取语音识别运算的运行代码并搬迁运行代码;
具体地,语音识别系统启用后,CPU的reset信号被释放,此时CPU会通过flash控制器从内部或外部的flash中读取代码并执行,然后CPU或第一DMAC将NPU需要执行的代码搬迁到SRAM中,之后CPU会将这些代码所存放的首地址配置到特定的寄存器中,并释放NPU的reset信号。
步骤702:NPU启动,读取语音识别运算的运行代码并搬迁运行代码;
具体地,NPU的reset信号被释放后,NPU会从CPU所配置的地址中读取代码来运行,同时将运行代码搬迁至NPU中的指令区ITCM。
步骤703:语音模块采集第一语音数据,第一DMAC搬迁第一语音数据至SRAM中;
具体地,NPU配置第一DMAC和语音模块的寄存器,控制语音模块进行第一语音数据采集的工作和第一DMAC将语音模块采集的第一语音数据搬迁至SRAM中;
语音模块通过麦克风采集外部的模拟语音信号,并将采集到的模拟信号转换为数字信号。语音模块数据采集完成后,通过与第一DMAC之间的握手信号来通知第一DMAC,第一DMAC会把采集到的第一语音数据从语音模块中搬迁到SRAM中,并向NPU发送中断信号,提示NPU搬迁结束。
步骤704:第二DMAC搬迁第一语音数据至NPU中;
NPU配置第二DMAC的寄存器,控制第二DMAC将第一语音数据从SRAM搬迁至NPU中的数据区DTCM。
步骤705:NPU对第一语音数据进行运算;
具体地,MCU通过第二接口(图上未标出)直接访问ITCM中的运行代码,并根据神经网络算法配置MCA和FFT的寄存器,使其对DTCM中的第一语音数据进行运算;
MCA模块通过第一接口(图上未标出)直接对DTCM中存储的数据进行乘累加、ReLU、softmax等神经网络算法所需要的基本运算,并可以直接将计算结果写回DTCM中;FFT模块是专用的快速傅里叶变换计算模块,它可以从DTCM中读取数据进行FFT运算,运算完成后再写回DTCM中。
运算结束后MCA和FFT会向MCU发出中断,MCU收到中断后会根据算法需求来配置下一次的运算。
步骤706:运算完成;
具体地,运算最终完成后,MCU会根据运算结果配置第二DMAC的寄存器,控制第二DMAC向SRAM中写入需要发送的第二语音数据,并配置第一DMAC和语音模块的寄存器,控制第一DMAC和语音模块分别进行数据的搬运和输出工作。
步骤707:第二DMAC根据运算结果向SRAM中写入需要发送的第二语音数据;
步骤708:第一DMAC将第二语音数据SRAM中搬迁至语音模块;
步骤709:语音模块输出第二语音数据;
具体地,语音模块将第二语音数据转换为模拟信号,驱动外部功放来播放声音,完成语音识别的响应。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种系统级芯片SoC,其特征在于,包括:
位于第一总线的外设单元和第一直接内存访问控制器DMAC;位于第二总线的神经网络处理器NPU、静态随机存取存储器SRAM和第二直接内存访问控制器DMAC;所述第一总线与所述第二总线通过异步桥连接,所述第一总线的数据位宽小于所述第二总线的数据位宽;所述第二总线的读通道与写通道分离;所述NPU中包括单片机MCU、运算加速模块MCA、快速傅里叶变换模块FFT和紧耦合内存TCM;
所述外设单元,用于采集第一数据并输出第二数据;
所述第一直接内存访问控制器DMAC,用于将所述第一数据从所述外设单元搬迁至所述SRAM及将所述第二数据从所述SRAM搬迁至所述外设单元;
所述NPU,用于对所述第一数据进行处理,得到所述第二数据;
所述MCA和所述FFT,用于对所述第一数据进行处理,得到所述第二数据;
所述MCU,用于配置所述MCA和所述FFT对所述第一数据的运算,用于配置所述第一直接内存访问控制器DMAC和所述第二直接内存访问控制器DMAC进行数据搬迁;
所述TCM,用于存储运行代码、所述第一数据和所述第二数据;
所述SRAM,用于存储所述第一数据和所述第二数据;
所述第二直接内存访问控制器DMAC,用于将所述第一数据从所述SRAM搬迁至所述NPU及将所述第二数据从所述NPU搬迁至所述SRAM。
2.如权利要求1所述的SoC,其特征在于,
所述第二总线的运行频率与所述NPU的运行频率相同,且大于所述第一总线的运行频率。
3.如权利要求1所述的SoC,其特征在于,还包括位于所述第二总线上的中央处理器CPU和位于所述第一总线上的闪存flash控制器;
所述CPU,用于通过所述flash控制器读取运行代码,并触发所述NPU运行所述运行代码;
所述flash控制器,用于获取所述运行代码。
4.如权利要求1所述的SoC,其特征在于,
所述MCA,用于通过第一接口从所述TCM中获取所述第一数据并进行处理;
所述FFT,用于通过所述第二总线从所述TCM中获取所述第一数据并进行处理。
5.如权利要求1所述的SoC,其特征在于,
所述第二总线的数据通道与控制通道分离。
6.一种适用于系统级芯片SoC的数据处理方法,其特征在于,包括:
位于第一总线的第一DMAC将外设单元采集的第一数据搬迁至位于第二总线上的SRAM;
位于所述第二总线的第二DMAC将所述第一数据从所述SRAM搬迁至位于所述第二总线上的NPU;
所述NPU对所述第一数据进行处理,得到第二数据,包括:
所述NPU中的MCA和所述NPU中的FFT对所述第一数据进行处理,得到所述第二数据;
所述NPU中的MCU,配置所述第一DMAC和所述第二DMAC进行数据搬迁;
所述第二DMAC将所述第二数据从所述NPU中搬迁至所述SRAM;
所述第一DMAC将所述第二数据从所述SRAM搬迁至所述外设单元;
所述外设单元将所述第二数据输出;其中,所述第一总线与所述第二总线通过异步桥连接,所述第一总线的数据位宽小于所述第二总线的数据位宽;所述第二总线的读通道与写通道分离。
7.如权利要求6所述的数据处理方法,其特征在于,在位于第一总线的第一DMAC将外设单元采集的第一数据搬迁至位于第二总线上的SRAM之前,还包括:
CPU通过flash控制器读取运行代码,并将所述运行代码搬迁到所述SRAM中;
所述CPU触发所述NPU运行所述运行代码。
8.如权利要求6所述的数据处理方法,其特征在于,所述NPU中的MCA和所述NPU中的FFT对所述第一数据进行处理,包括:
所述MCA通过第一接口从所述NPU中的TCM中获取所述第一数据并进行处理;
所述FFT通过所述第二总线从所述TCM中获取所述第一数据并进行处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010866661.8A CN112035398B (zh) | 2020-08-25 | 2020-08-25 | 一种系统级芯片SoC及适用于SoC的数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010866661.8A CN112035398B (zh) | 2020-08-25 | 2020-08-25 | 一种系统级芯片SoC及适用于SoC的数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112035398A CN112035398A (zh) | 2020-12-04 |
CN112035398B true CN112035398B (zh) | 2023-10-24 |
Family
ID=73580853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010866661.8A Active CN112035398B (zh) | 2020-08-25 | 2020-08-25 | 一种系统级芯片SoC及适用于SoC的数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112035398B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114297105B (zh) * | 2021-12-29 | 2024-04-05 | 合肥市芯海电子科技有限公司 | 一种直接存储器访问的嵌入式控制电路、芯片和电子设备 |
CN115270668B (zh) * | 2022-07-18 | 2023-07-07 | 北京师范大学 | 一种信息科技教育开源硬件专用芯片 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6526462B1 (en) * | 1999-11-19 | 2003-02-25 | Hammam Elabd | Programmable multi-tasking memory management system |
CN1488103A (zh) * | 2001-01-31 | 2004-04-07 | ������������ʽ���� | 数据处理系统和数据处理器 |
KR20060040973A (ko) * | 2004-11-08 | 2006-05-11 | 삼성전자주식회사 | 시스템온칩 |
CN101567078A (zh) * | 2009-03-27 | 2009-10-28 | 西安交通大学 | 一种双总线的视觉处理芯片架构 |
US8127058B1 (en) * | 2008-07-29 | 2012-02-28 | Marvell International Ltd. | System and method of video decoding using hybrid buffer |
CN102710890A (zh) * | 2012-04-06 | 2012-10-03 | 东莞中山大学研究院 | 双ahb总线的视频处理片上系统 |
CN109308283A (zh) * | 2018-08-31 | 2019-02-05 | 西安微电子技术研究所 | 一种SoC片上系统及其外设总线切换方法 |
CN110020723A (zh) * | 2018-01-09 | 2019-07-16 | 三星电子株式会社 | 神经网络处理单元及包括该神经网络处理单元的片上系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005346513A (ja) * | 2004-06-04 | 2005-12-15 | Renesas Technology Corp | 半導体装置 |
JP2010003151A (ja) * | 2008-06-20 | 2010-01-07 | Renesas Technology Corp | データ処理装置 |
US20160026912A1 (en) * | 2014-07-22 | 2016-01-28 | Intel Corporation | Weight-shifting mechanism for convolutional neural networks |
-
2020
- 2020-08-25 CN CN202010866661.8A patent/CN112035398B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6526462B1 (en) * | 1999-11-19 | 2003-02-25 | Hammam Elabd | Programmable multi-tasking memory management system |
CN1488103A (zh) * | 2001-01-31 | 2004-04-07 | ������������ʽ���� | 数据处理系统和数据处理器 |
KR20060040973A (ko) * | 2004-11-08 | 2006-05-11 | 삼성전자주식회사 | 시스템온칩 |
US8127058B1 (en) * | 2008-07-29 | 2012-02-28 | Marvell International Ltd. | System and method of video decoding using hybrid buffer |
CN101567078A (zh) * | 2009-03-27 | 2009-10-28 | 西安交通大学 | 一种双总线的视觉处理芯片架构 |
CN102710890A (zh) * | 2012-04-06 | 2012-10-03 | 东莞中山大学研究院 | 双ahb总线的视频处理片上系统 |
CN110020723A (zh) * | 2018-01-09 | 2019-07-16 | 三星电子株式会社 | 神经网络处理单元及包括该神经网络处理单元的片上系统 |
CN109308283A (zh) * | 2018-08-31 | 2019-02-05 | 西安微电子技术研究所 | 一种SoC片上系统及其外设总线切换方法 |
Non-Patent Citations (1)
Title |
---|
使用紧耦合协处理器进行算法加速;Harn Hua Ng, Dan Isaacs;电子产品世界(第20期);第83-86页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112035398A (zh) | 2020-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6974270B2 (ja) | 知能型高帯域幅メモリシステム及びそのための論理ダイ | |
CN110196824B (zh) | 实现数据传输的方法及装置、电子设备 | |
CN108804376B (zh) | 一种基于gpu和fpga的小型异构处理系统 | |
US6247086B1 (en) | PCI bridge for optimized command delivery | |
CN112035398B (zh) | 一种系统级芯片SoC及适用于SoC的数据处理方法 | |
CN109308283B (zh) | 一种SoC片上系统及其外设总线切换方法 | |
CN112035389B (zh) | 一种plb-axi总线转换桥及其工作方法 | |
KR20120070602A (ko) | 내부 프로세서를 구비한 메모리 및 메모리 내의 데이터 통신 방법 | |
CN111901164B (zh) | Ocp nic网卡的适配控制方法、装置、设备及系统 | |
CN113051199A (zh) | 数据传输方法及装置 | |
US11579921B2 (en) | Method and system for performing parallel computations to generate multiple output feature maps | |
CN102169470B (zh) | 一种ahb总线到bvci总线的转换桥 | |
CN111860773B (zh) | 处理装置和用于信息处理的方法 | |
CN110245107A (zh) | 用于提供用于加速器的结构的系统、装置和方法 | |
CN219574799U (zh) | 一种基于amba总线的多总线桥接器及其片上系统 | |
US8886844B2 (en) | Efficient scheduling of read and write transactions in dynamic memory controllers | |
CN109491949A (zh) | 基于Zynq的动态可重构框架及方法 | |
CN112131168B (zh) | 一种多芯片组及控制方法 | |
CN115328832B (zh) | 一种基于pcie dma的数据调度系统与方法 | |
US20230133088A1 (en) | Methods and apparatus for system-on-a-chip neural network processing applications | |
CN112988647B (zh) | 一种TileLink总线到AXI4总线转换系统及方法 | |
CN116401188B (zh) | 基于fpga的处理方法、电路以及电子设备 | |
JPS6220058A (ja) | デ−タ処理装置 | |
CN110597756B (zh) | 一种计算电路以及数据运算方法 | |
US8412916B2 (en) | Computing system having CPU and bridge operating using CPU frequency |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |