一、引言
随着人工智能技术的飞速发展,对神经网络处理单元(NPU)的性能要求越来越高。多核NPU微架构应运而生,它通过集成多个处理核心,能够显著提升并行计算能力,满足大规模神经网络计算的需求。
![]()
二、多核NPU微架构的基本组成
计算单元。多核NPU的核心是大量的并行计算单元,这些单元通常被设计为向量处理器或矩阵处理器。例如,DianNao架构中,NFU(Neural Functional Units)分为乘法单元、加法树和激活单元。其中乘法单元包含256个乘法器,能够在每个时钟周期同时执行256个乘法操作。这些计算单元能够高效地执行大规模矩阵运算,从而加速神经网络的训练和推理过程。
![]()
数据流架构。NPU采用数据流驱动的架构,数据在处理单元之间直接传递,减少了数据传输的延迟和功耗。这种架构允许NPU并行处理大量数据,非常适合神经网络中的矩阵运算。在多核NPU中,数据流的优化尤为重要,因为多个核心需要高效地共享和传递数据,以避免数据瓶颈。
内存层次结构。NPU通常配备优化的内存层次结构,包括高速缓存和片上存储器。例如,Qualcomm NPU设计了TCM高速缓存器,提供低延迟和高带宽的内存访问性能。在多核NPU中,内存层次结构的设计需要考虑到多个核心对内存的并发访问需求,以减少内存冲突和提高内存利用率。
互联结构。多核NPU需要高效的互联结构来实现核心之间的通信。常见的互联结构包括总线、交叉开关(crossbar)和片上网络(NoC)。总线结构简单,但容易成为性能瓶颈;交叉开关可以提供更高的带宽和更低的延迟,但硬件成本较高。片上网络则是一种可扩展性较好的互联结构,它通过网络接口和路由器来实现核心之间的数据传输。在多核NPU中,选择合适的互联结构对于提高系统的整体性能至关重要。
三、多核NPU微架构的并行计算设计
指令级并行(ILP)。NPU通过VLIW(Very Long Instruction Word)指令并行架构实现指令级并行。编译器将多条无依赖关系的指令组合成一个指令包,然后同时发送给多个独立的功能部件进行并行执行。这种设计可以充分利用硬件资源,提高指令的执行效率。
数据级并行(DLP)。NPU的并行计算单元能够同时处理多个数据点。例如,在矩阵乘法操作中,多个并行单元可以同时计算矩阵的不同部分。在多核NPU中,数据级并行可以通过多个核心同时处理不同的数据块来实现,从而进一步提高系统的吞吐量。
线程级并行(TLP)。NPU支持多线程编程模型,可以同时处理多个程序或程序中的多个部分。在多核NPU中,线程级并行可以通过多个核心同时执行不同的线程来实现。这种设计可以充分利用多核的优势,提高系统的并发处理能力。
四、多核NPU微架构的优化技术
存算一体技术:存算一体技术是将部分计算任务直接在存储器中完成,而非传统架构中“内存-缓存-计算单元”频繁搬运数据的模式。这种技术可以大幅减少数据迁移带来的功耗和延迟,从而提高系统的能效。在多核NPU中,存算一体技术可以与多核架构相结合,进一步优化性能。
弹性负载均衡:对NPU微架构中的存储与计算PE而言,可配置意味着可以通过片上的控制逻辑来动态配置细颗粒度的PE阵列。通过Array+Vector异构组合的SHAV弹性架构,可以适应算法中多形态的算子尺寸和数据流变化需求。对NPU顶层架构而言,微任务与多并行调度意味着多核的SHAV计算模块可以通过高带宽的分布式数据总线来搭建实现多核的弹性扩展。
联合优化设计:NPU中模型-硬件联合设计的实现策略体现在降低计算资源需求的策略。例如,3x3卷积Conv可以通过面向通道的Conv3x3 +Conv1x1来实现,Conv5x5以上可以通过Conv3x3 +Conv1x1组合来实现。这种联合优化设计可以提高硬件资源的利用率,提升能耗比和算力效率。
五、多核NPU微架构的挑战与应对
挑战。功耗问题:多核NPU在提升性能的同时,也面临着功耗增加的挑战。如何在有限的功耗预算内实现高性能计算是一个关键问题。散热问题:高功耗会导致芯片发热增加。散热问题不仅影响芯片的性能和可靠性,还可能导致设备失效。编程复杂度:多核NPU的并行计算架构增加了编程的复杂度。开发者需要了解硬件架构的细节,并编写高效的并行程序,以充分利用多核的优势。
应对措施。低功耗设计技术:采用低功耗设计技术,如动态电压频率调整(DVFS)、功率门控等,可以在保证性能的前提下降低功耗。散热解决方案:通过优化芯片布局、采用先进的散热材料和散热技术,可以有效解决散热问题。软件工具支持:提供高效的编译器、调试工具和性能分析工具,可以帮助开发者更好地理解和优化并行程序。此外,还可以通过硬件抽象层(HAL)等技术,降低编程复杂度。
六、多核NPU微架构的应用实例
(一)天玑9500
天玑9500的NPU革新采用了多核异构或脉动阵列设计。这种设计不仅增强了并行计算能力,还优化了数据流路径,降低了延迟。在运行大参数AI模型时,天玑9500能够保持高能效。此外,天玑9500还引入了“存算一体”技术,进一步提高了芯片的能效。
(二)华为昇腾
华为昇腾采用SPMD(Single Program Multiple Data)编程模型,通过多核架构技术,提供千百级的加速器物理核。这种设计适合大算力下高并行数据负载,能够实现高效的并行计算。
(三)ONNXim模拟器
ONNXim是一款针对推理导向的多核神经处理单元(NPU)的周期级模拟器。它能够运行大型深度神经网络(DNN)推理任务,同时准确地模拟共享资源(例如DRAM)的竞争情况。ONNXim支持多种调度策略,可以轻松扩展以支持其他策略。通过使用ONNXim,研究人员可以更好地理解和优化多核NPU的性能。
七、结论
多核NPU微架构通过集成多个处理核心,能够显著提升并行计算能力,满足大规模神经网络计算的需求。在设计多核NPU微架构时,需要综合考虑计算单元、数据流架构、内存层次结构和互联结构等多个方面。同时,还需要采用优化技术,如存算一体技术、弹性负载均衡和联合优化设计,以进一步提高系统的性能和能效。尽管多核NPU微架构面临着功耗、散热和编程复杂度等挑战,但通过低功耗设计技术、散热解决方案和软件工具支持等应对措施,可以有效地解决这些问题。
邀请函
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.