掌桥专利:专业的专利平台
掌桥专利
首页

用于支持多处理器架构的系统缓存架构和芯片

文献发布时间:2024-04-18 19:59:31


用于支持多处理器架构的系统缓存架构和芯片

技术领域

本发明实施例涉及芯片技术,尤其涉及一种多NPU芯粒的互连架构。

背景技术

随着人工智能(Artificial Intelligence,AI)技术的发展,许多关键应用均需要使用AI计算生成内容,这对神经处理单元(Neural Processing Unit,NPU)的高处理能力的需求很高。由于AI计算需求的不断升级,需要在主板上集成多个NPU芯片插槽,或者在一个NPU芯片插槽内集成多个NPU芯粒(chiplet)。

更大的芯片(或者称为硅片)尺寸可以在单个芯片上容纳更多的处理单元(Processing Unit,PE),且所有PE都通过与同一芯片关联的存储器来处理数据,这种架构被称为用于多NPU处理的统一内存架构。然而,单个芯片尺寸过大无法以合理的成本制造,因此,可以通过多个单个芯片协作提高计算能力。然而,若需要使多个芯片内的所有PE一起工作,无论各PE位于同一芯片内还是不同芯片内,各芯片内的PE之间均需要相互通信。不同芯片内的PE之间可以通过统一内存架构实现协作,也可以通过非同一内存架构实现协作。

统一内存架构为软件执行提供了重组的内存池,并简化了并行处理的同步。非统一架构要求同一芯片上的所有PE使用与该芯片相关的专用存储器进行并行处理。在非统一内存架构中,当一个芯片上的PE需要访问另一个芯片的存储器时,或者当芯片之间需要同步或进行数据交换时,PE必须跨越芯片边界来访问另一芯片相关的存储器。

然而,无论多NPU的统一内存架构还是非统一内存架构,如何实现高效的PE并行处理,是目前亟待解决的问题。

发明内容

本发明提供一种多NPU芯粒的互连架构,实现了多NPU芯粒扩展时的内存扩展访问

第一方面,本发明实施例提供了一种多NPU芯粒的互连架构,包括:

至少两个NPU芯粒,每个NPU芯粒包括至少两个PE、控制单元、内存池和互连管道,每个NPU芯粒中的至少两个PE、控制单元和内存池通过片内总线连接;

所述至少两个NPU芯粒之间通过互连管道相互连接进行数据交换,相互连接的两个NPU芯粒的内存池映射为集中内存池,并由任一NPU芯粒中的控制单元控制所在NPU芯粒的PE访问集中内存池。

在第一方面一种可能的实现方式中,所述集中内存池包括统一内存池或非统一内存池,所述统一内存池中不同NPU芯粒的内存池的物理地址是连续的,所述非统一内存池中不同NPU芯粒的内存池的物理地址是非连续的。

在第一方面一种可能的实现方式中,所述片内总线包括控制总线和数据总线,每个NPU芯粒中的至少两个PE、控制单元和内存池通过控制总线和数据总线连接。

在第一方面一种可能的实现方式中,所述控制总线为APB总线,所述数据总线为AXI总线。

在第一方面一种可能的实现方式中,相互连接的两个NPU芯粒的内存池映射为统一内存池的情况下,其中一个NPU芯粒中的控制单元控制所述统一内存池的访问,另一个NPU芯粒中的控制单元处于睡眠状态。

在第一方面一种可能的实现方式中,当第一NPU芯粒中的控制单元通过延伸连接的控制总线控制所述统一内存池的访问时,第二NPU芯粒中的控制单元处于睡眠状态,两个NPU芯粒的内存池通过延伸连接的数据总线将物理地址连续映射。

在第一方面一种可能的实现方式中,相互连接的两个NPU芯粒的内存池映射为非统一内存池的情况下,每个NPU芯粒中的控制单元控制所在NPU芯粒的PE对所述非统一内存池的访问。

在第一方面一种可能的实现方式中,当第一NPU芯粒中的PE访问的非统一内存池中的物理地址位于第二NPU芯粒时,第一NPU芯粒中的控制单元协调第一NPU芯粒和第二NPU芯粒的时钟同步。

在第一方面一种可能的实现方式中,还包括内存交互芯粒,所述内存交互芯粒包括内存交叉开关、中央内存池、中央控制单元和互连管道,所述内存交叉开关、中央内存池和中央控制单元通过片内总线连接;

所述至少两个NPU芯粒通过与所述内存交互芯粒之间的互连管道与所述内存交叉开关连接,所述中央内存池与所述至少两个NPU芯粒中的内存池存在映射关系。

在第一方面一种可能的实现方式中,所述内存交叉开关包括用于在所述至少两个NPU芯粒之间进行一一连接的多个内存通道。

本发明实施例提供的多NPU芯粒的互连架构,包括至少两个NPU芯粒,每个NPU芯粒包括通过片内总线连接的至少两个处理单元、控制单元、内存池,以及互连管道,所述至少两个NPU芯粒之间通过互连管道相互连接进行数据交换,相互连接的两个NPU芯粒的内存池映射为集中内存池,并由任一NPU芯粒中的控制单元控制所在NPU芯粒的处理单元访问集中内存池,实现了多NPU芯粒扩展时的内存扩展访问。

附图说明

图1为单个NPU芯片中包括多个PE的典型NPU芯片结构示意图;

图2为本申请实施例提供的一种多NPU芯粒的互连架构的架构示意图;

图3为本申请实施例提供的多NPU芯粒的互连架构中互连管道的结构示意图;

图4为本申请实施例提供的另一种多NPU芯粒的互连架构的架构示意图;

图5为统一内存架构的物理地址映射示意图;

图6为非统一内存架构的物理地址映射图;

图7为本申请实施例提供的再一种多NPU芯粒的互连架构的架构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

图1为单个NPU芯片中包括多个PE的典型NPU芯片结构示意图,如何1所示,该NPU芯片中包括一个控制单元(Controlling Unit)和多个处理单元(PE),图中示出PE 0-PE N共N个处理单元。控制单元可以是中央处理单元(Central Processing Unit,CPU)也可以是微控制单元(Microcontroller Unit,MCU)。控制单元作为高级外围总线(AdvancedPeripheral Bus,APB)的主控组件,负责对每个处理单元内的寄存器组进行编程和读取。图1中的N个处理单元都可以充当内存主机,从内存池(Memory Pool)中检索数据。每个处理单元中包含多个介质访问控制(Media Access Control,MAC)阵列集群和单指令多数据(Single Instruction Multiple Data,SIMD)单元。所有处理单元与内存池协作来执行并行进程、同步活动和交换结果。NPU芯片还包括一个负责与主机系统进行数据通信的外围组件快速互连(Peripheral Component Interconnect express,PCIe)端口。控制单元、N个处理单元、内存池和PCIe端口通过APB总线和高级可扩展接口(Advanced eXtensibleInterface,AXI)总线连接,其中每个处理单元通过总线接口和暂存(Bus Interface,scratch memory)与APB总线和AXI总线连接。其中APB总线作为控制总线将控制单元的控制指令发送至其他各单元,AXI总线作为数据总线进行数据传输。主机系统将等待处理的数据传输到内存池,使各处理单元能够通过PCIe端口执行计算。最后,处理单元将内存池中的计算结果通过PCIe端口传输回主机系统。

图1所示NPU芯片采用了统一内存架构,各处理单元能够利用单一内存池进行数据处理、数据交换和数据同步执行,确保了性能的优化。但是当需要扩展计算能力时,则需要进一步增加处理单元的数量,目前的解决方案是将多个小芯片分别作为芯粒并集中封装在一个芯片中,其中每个小芯片都采用如图1所示的架构,此时的单个芯片仍然采用统一内存架构。或者在主板上增加个多的芯片,此时的多个芯片采用非统一内存架构。更多的芯片或芯粒可以有效增强计算能力,但目前在上述统一内存架构或非统一内存架构的情况下,如何实现芯片或芯粒之间的高性能内存访问,是亟待决绝的问题。

图2为本申请实施例提供的一种多NPU芯粒的互连架构的架构示意图,图2示出两个芯粒构成的NPU芯粒的互连架构示意图。

如图2所示,图中包括第一NPU芯粒21和第二NPU芯粒22两个芯粒,第一NPU芯粒21和第二NPU芯粒22均与图1所示NPU芯片相同。第一NPU芯粒21和第二NPU芯粒22均为NPU芯粒。在本实施例中以第一NPU芯粒21和第二NPU芯粒22两个芯粒为例进行说明,但本申请实施例提供的多NPU芯粒的互连架构中的芯粒数量不以此为限,至少芯粒数量为两个或两个以上即可。

其中,第一NPU芯粒21包括控制单元211、多个处理单元212、第一内存池213和互连管道214,处理单元212的数量根据需要可以设置多个,如图中所示,处理单元212包括PE(0,0)-PE(0,N)共N个。控制单元211、多个处理单元212、第一内存池213通过片内总线215连接。第二NPU芯粒22包括控制单元221、多个处理单元222、第二内存池223和互连管道224,处理单元222的数量根据需要可以设置多个,如图中所示,处理单元222包括PE(1,0)-PE(1,N)共N个。控制单元221、多个处理单元222、第二内存池223通过片内总线225连接。

进一步地,每个芯粒中,连接控制单元、内存池和多个处理单元的片内总线可以包括控制总线和数据总线,每个NPU芯粒中的至少两个处理单元、控制单元和内存池通过控制总线和数据总线连接。其中控制总线用于控制单元传输控制信息,对其他各单元进行控制,数据总线用于在各单元之间进行数据传输。其中控制总线可以为APB总线,所述数据总线可以为AXI总线。

第一NPU芯粒21和第二NPU芯粒22通过互连管道214和互连管道224连接进行数据交换,相互连接的第一NPU芯粒21和第二NPU芯粒22的第一内存池213和第二内存池223池映射为集中内存池,并由第一NPU芯粒21和第二NPU芯粒22中的任一芯粒中的控制单元控制所在芯粒的处理单元访问集中内存池。

图2中以两个相互连接的芯粒为例,但本实施例提供的多NPU芯粒的互连架构中,至少两个NPU芯粒还可以是独立的至少两个芯片,同样通过互连管道连接。相互连接的芯粒和相互连接的芯片的区别在于,相互连接的芯粒是封装在同一个芯片上的,而相互连接的芯片是独立封装的芯片。两者的区别在于,封装在同一芯片上的多个NPU芯粒映射的集中内存池为统一内存架构,而独立的多个NPU芯片映射的集中内存池为非统一内存架构。无论哪种架构,第一NPU芯粒21和第二NPU芯粒22之间均通过各自的互连管道实现连接。

相互映射构成的集中内存池包括统一内存池或非统一内存池,所述统一内存池中不同NPU芯粒的内存池的物理地址是连续的,所述非统一内存池中不同NPU芯粒的内存池的物理地址是非连续的。

第一NPU芯粒21和第二NPU芯粒22中设置的互连管道214和互连管道224的结构可以如图3所示。图3为本申请实施例提供的多NPU芯粒的互连架构中互连管道的结构示意图,如图3所示,相互连接的互连管道包括发送端侧31和接收端侧32。发送端侧31包括发送状态机311和n路复用器312,接收端侧32包括n路解复用器321、至少两个寄存器322和接收状态机323,n大于或等于2,n路复用器312和n路解复用器321连接。图3中示出的互连管道是相互连接的两个芯粒的连接结构。每个芯粒中的互连管道包括一个发送端侧和一个接收端侧,其中发送端侧与另一芯粒中的接收端侧连接,实现数据的传输。实际上,两个相互连接的芯粒的互连管道,采用多路复用器和多路解复用器对,在芯粒之间进行数据传输,实现了芯粒中间的总线流水线互连结构,可以使用较小的位宽实现芯粒之间的高有效带宽,且不会存在高延迟。

在第一NPU芯粒21和第二NPU芯粒22之间通过互连管道214和互连管道224实现相互连接后,第一NPU芯粒21和第二NPU芯粒22之间就可以通过互连管道进行高效地数据交换,第一内存池213和第二内存池223就可以有效地映射为集中内存池,使得任一NPU芯粒中的处理单元可以对集中内存池实现访问。

需要说明的是,当本实施例提供的多NPU芯粒的互连架构包括N个芯粒(N>2)时,每个芯粒均需要包括N-1个互连管道,分别与其他芯粒之间建立互连管道连接。

第一芯粒21还包括与主机系统进行数据通信的外部端口216,第二芯粒22还包括与主机系统进行数据通信的外部端口226。外部端口216和外部端口226可以为PCIe端口。

本实施例提供的多NPU芯粒的多NPU芯粒的互连架构,包括至少两个NPU芯粒,每个NPU芯粒包括通过片内总线连接的至少两个处理单元、控制单元、内存池,以及互连管道,所述至少两个NPU芯粒之间通过互连管道相互连接进行数据交换,相互连接的两个NPU芯粒的内存池映射为集中内存池,并由任一NPU芯粒中的控制单元控制所在NPU芯粒的处理单元访问集中内存池,实现了多NPU芯粒扩展时的内存扩展访问。

图4为本申请实施例提供的另一种多NPU芯粒的互连架构的架构示意图,图4示出的多NPU芯粒的互连架构在图2的基础上,进一步地示出更详细地互连架构示意图。

如图4所示,两个相互连接芯粒均如图1所示芯粒的结构,两个芯粒间连接的互连通道的结构包括AXI主仲裁器(AXI master Arbiter)、芯粒到芯粒发起者(D2Dinitiator)、芯粒到芯粒目标AXI主机(D2D Target AXI master)组成。具体地,图4中第一NPU芯粒21中包括第一AXI master Arbiter 217、第一D2D initiator 218和第一D2DTarget AXI master 219。第二NPU芯粒22中包括第二AXI master Arbiter 227、第二D2Dinitiator 228和第二D2D Target AXI master 229。第一AXI master Arbiter 217、第一D2D initiator 218和第二D2DTarget AXI master 229连接构成一组连接管道,第二AXImaster Arbiter 227、第二D2D initiator 228和第一D2D Target AXI master 219构成一组连接管道。

第一NPU芯粒21和第二NPU芯粒22均具有自己的专用AXI内存总线,每个总线都与其各自的内存池相关联。每个芯粒内的AXI总线都使用物理地址进行内存池访问。这种设计使系统能够根据预定义的物理地址将内存池作为统一或非统一内存进行操作。标准AXI总线使用40位地址。A(39)='1',表示高于512GB的地址,通常保留给内存主控的专用内存空间。因此,所有NPU内存物理地址都超过512GB,而控制单元则使用较低的512GB。因此,由控制单元管理的实时操作系统(Real Time Operating System,RTOS)在较低的512GB内运行,而NPU在较高的512GB内运行。此外,软件必须分配内存空间用于同步和数据交换。

图5为统一内存架构的物理地址映射示意图,图6为非统一内存架构的物理地址映射图。图5和图6中可以看出,在进行内存池映射时,对于统一内存架构和非统一内存架构,在较低的物理地址上,也就是A(39)='0'的情况,包括分配给第一NPU芯粒的主机空间(Host Space 0)和分配给第二NPU芯粒的主机空间(Host Space 1),例如Host Space 0占用0G-1G的空间,Host Space 0占用16G-17G的空间。对于统一内存架构,在较高的物理地址上,也就是A(39)='1'的情况,包括分配给第一NPU芯粒的注册控制空间(RegisterControl 0)和分配给第二NPU芯粒的注册控制空间(Register Control 1),例如RegisterControl0占用513G-514G的空间,Register Control 1占用515G-516G的空间,以及分配给第一NPU芯粒的第一内存池(Memory Pool 0)和分配给第二NPU芯粒的第二内存池(MemoryPool 1),例如Memory Pool 0占用772G-768G的空间,Memory Pool 1占用776G-772G的空间,可以看出,第一内存池和第二内存池是连续的。对于非统一内存架构,在较高的物理地址上,也就是A(39)='1'的情况,包括分配给第一NPU芯粒的注册控制空间(RegisterControl 0)和分配给第二NPU芯粒的注册控制空间(Register Control 1),例如RegisterControl 0占用513G-514G的空间,Register Control 1占用515G-516G的空间,以及分配给第一NPU芯粒的第一内存池(Memory Pool 0)和分配给第二NPU芯粒的第二内存池(MemoryPool 1),例如Memory Pool 0占用772G-768G的空间,Memory Pool 1占用900G-896G的空间,可以看出,第一内存池和第二内存池是非连续的。

在图2或图4所示多NPU芯粒的互连架构中,在相互连接的两个NPU芯粒的内存池映射为统一内存池的情况下,其中一个NPU芯粒中的控制单元控制所述统一内存池的访问,另一个NPU芯粒中的控制单元处于睡眠状态。也就是在如图5所示的统一内存架构的物理地址映射情况下,将仅使用一个主机空间和一个寄存器空间。因此,只有一个控制单元将保持活动状态,而一旦芯粒片上系统(System on Chip,SOC)初始化,另一芯粒钟的控制单元将进入睡眠状态。假设第一NPU芯粒21的控制单元211是唯一的活动单元,它将通过控制总线(APB总线)访问所有寄存器。在这种情况下,第一NPU芯粒21内的控制总线将通过互连管道延伸到第二NPU芯粒22,而控制总线的相反方向将处于休眠状态。

当第一NPU芯粒21中的控制单元211通过延伸连接的控制总线控制所述统一内存池的访问时,第二NPU芯粒22中的控制单元221处于睡眠状态,两个NPU芯粒的内存池通过延伸连接的数据总线将物理地址连续映射。

两个芯粒的内存池将合并成一个连续的地址映射。当第一NPU芯粒21中的处理单元使用数据总线(AXI总线)上的物理地址启动内存周期时,数据总线将解码该地址并确定是访问第一NPU芯粒21还是第二NPU芯粒22上的数据总线。该软件不需要芯粒到芯粒(dieto die,D2D)协议进行任何特殊处理。由于管道D2D无需软件干预即可运行,因此它可以无缝连接不同芯粒上的两条不同的数据总线,本质上形成单个单片芯片SOC。同样的原理也适用于第二NPU芯粒22中的处理单元。

当第二NPU芯粒22中的处理单元发起数据总线周期时,数据总线将解码是否需要将D2D发起方传递到D2D目标,以便访问第一NPU芯粒21上的数据总线。通过这种方式,管道D2D有效地连接了两个芯粒,使它们能够通过总线复制充当单片SOC以支持统一内存模型。

在图2或图4所示多NPU芯粒的互连架构中,在相互连接的两个NPU芯粒的内存池映射为非统一内存池的情况下,每个NPU芯粒中的控制单元控制所在NPU芯粒的PE对所述非统一内存池的访问。也就是在如图6所示的非统一内存架构的物理地址映射情况下,第一NPU芯粒21和第二芯粒22中的两个控制单元都将保持活动状态。每个芯粒将独立管理其各自域内的处理单元集群。在此特定设置中,内存池地址必须隔离,避免连续的物理地址映射。。

当第一NPU芯粒中的PE访问的非统一内存池中的物理地址位于第二NPU芯粒时,第一NPU芯粒中的控制单元协调第一NPU芯粒和第二NPU芯粒的时钟同步。

如果第一NPU芯粒21中的处理单元211需要访问第二NPU芯粒22上的第二内存池223,则这种交互将由软件控制。类似地,对于第二NPU芯粒22中的处理单元访问第一NPU芯粒21上的第一内存池213,软件控制将是必要的。该软件负责协调不同芯粒上不同内存池的同步。

图7为本申请实施例提供的再一种多NPU芯粒的互连架构的架构示意图,图7示出的多NPU芯粒的互连架构包括N个NPU芯粒(芯粒0-芯粒N),该N个NPU芯粒可以是集中封装于同一芯片上的芯粒,也可以是独立封装的N个小芯片71。在N个NPU芯粒之外,还包括内存交互芯粒72,所述内存交互芯粒72包括内存交叉开关721、中央内存池722和中央控制单元723和互连管道724,所述内存交叉开关721、中央内存池722和中央控制单元723通过片内总线连接。N个NPU芯粒71通过与所述内存交互芯粒72之间的互连管道与所述内存交叉开关721连接,中央内存池722包括内存池0-内存池N共N个内存池,所述中央内存池722与N个NPU芯粒71中的内存池存在映射关系。当N个NPU芯粒是集中封装于同一芯片上的芯粒时,内存交互芯粒与N个NPU芯粒集中封装于同一芯片中。当N个NPU芯粒是独立封装的N个小芯片时,内存交互芯粒同样是独立封装的小芯片。

图中示出的N个NPU芯粒71可以是两个或两个以上的NPU芯粒。每个NPU芯粒71的结构可以在图1所示的NPU芯粒的基础上,增加互连管道711。内存交互芯粒72中包括N个互连管道724,N个互连管道724分别于N个NPU芯粒71的互连管道711连接,组成如图3所示的互连管道连接。中央内存池722包括N个与N个NPU芯粒71对应的内存池。中央控制单元723对中央内存池722的存储进行控制。内存交互芯粒72还可以包括与主机系统进行数据通信的外部端口725。其中,各互连管道711可以是D2D管道发起者(D2D initiator),各互连管道724可以是D2D管道目标(D2D Target)。

所述内存交叉开关721包括用于在所述N个NPU芯粒之间进行一一连接的多个内存通道。

在图7所示实施例中,每个NPU芯粒都可以将其内部数据总线请求复制到内存交互芯粒72,从而访问统一内存架构中的任何内存池。例如,当第一芯粒寻求与第N芯粒同步时,每个NPU芯粒的所有结果都存储在中央内存池723中。因此,所有NPU芯粒之间的数据交换和同步可以在无需相互探测的情况下进行。此外,所有并行任务执行均由编译器管理,无需像对称对处理结构(Symmetric Multi-Processing,SMP)CPU并行处理中那样进行硬件监听。NPU芯粒之间的同步和数据交换由软件驱动,使用统一的内存池。这种方法允许NPU芯粒SOC向软件提供统一的视图,从而促进计算性能的扩展,而不管形成单片式NPU SOC的互连NPU芯粒的数量如何。该过程依赖于芯片之间互连管道,将每个NPU芯粒的完整数据总线协议复制到内存交叉开关,从而建立统一的内存系统。

一般来说,本申请的多种实施例可以在硬件或专用电路、软件、逻辑或其任何组合中实现。例如,一些方面可以被实现在硬件中,而其它方面可以被实现在可以被控制器、微处理器或其它计算装置执行的固件或软件中,尽管本申请不限于此。

本申请的实施例可以通过计算机装置的数据处理器执行计算机程序指令来实现,例如在处理器实体中,或者通过硬件,或者通过软件和硬件的组合。计算机程序指令可以是汇编指令、指令集架构(Instruction Set Architecture,ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码。

本申请附图中的任何逻辑流程的框图可以表示程序步骤,或者可以表示相互连接的逻辑电路、模块和功能,或者可以表示程序步骤与逻辑电路、模块和功能的组合。计算机程序可以存储在存储器上。存储器可以具有任何适合于本地技术环境的类型并且可以使用任何适合的数据存储技术实现,例如但不限于只读存储器(Read-Only Memory,ROM)、随机访问存储器(Random Access Memory,RAM)、光存储器装置和系统(数码多功能光碟(Digital Video Disc,DVD)或光盘((Compact Disc,CD))等。计算机可读介质可以包括非瞬时性存储介质。数据处理器可以是任何适合于本地技术环境的类型,例如但不限于通用计算机、专用计算机、微处理器、数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,SAIC)、可编程逻辑器件(Field-Programmable Gate Array,FGPA)以及基于多核处理器架构的处理器。

技术分类

06120116523813