发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种用于多通道显存交织模式的切换方法及装置,使其能够省去显存与主存之间的数据交换过程,减少了显存交织模式切换的时间,避免主存和主处理器对资源大量的占用,提高了显存带宽的利用率,降低了显存控制器和颗粒的功耗。
本发明提供的一种用于多通道显存交织模式的切换方法,包括如下阶段:阶段1、统计图形处理器访问显存的带宽利用率,记录下显存占用的地址段,并统计各种应用下的带宽需求;阶段2、采用片上网络和显存控制器两级地址映射的方式,配置片上网络上的各个主模块的显存交织地址映射表,设置多通道显存控制器的地址映射,将片上网络的高位访存地址映射为交织通道,按照物理地址不变的原则对显存控制器做第二级地址映射;阶段3、当显存带宽利用率过低或过高、需要切换显存的交织模式时,关闭图形处理器中除直接存储器访问模块以外的访存操作;阶段4、将直接存储器访问模块的总线地址空间扩大一倍,使直接存储器访问模块能访问各种交织模式下的显存物理地址,将直接存储器访问模块切换到显存搬移模式,然后根据记录下的显存占用地址段,来搬移各种交织模式下的显存数据;阶段5、设置片上网络上各个主模块的访存地址映射表,使各个主模块能在新的显存交织模式下工作,关闭或打开对应模式下的显存控制器和颗粒,恢复图形处理器的访存操作,完成多通道交织模式的切换。
在上述技术方案中,所述阶段4和阶段5的具体过程如下:步骤4.1、读取显存占用的地址段、可用的交织模式列表和直接存储器访问模块数量这些信息,对需要搬移的显存数据段长度进行片段,如果地址长度小于256byte的交织粒度,并且已经处于将要切换的显存颗粒时,则跳转到步骤5.1;步骤4.2、首先将直接存储器访问模块的总线地址空间扩大一倍,低4GB地址空间为目前的交织模式,高4GB地址空间为要切换的交织模式,然后将需要搬移的源地址段按照256Byte的交织粒度进行划分;步骤4.3、按照256byte的交织粒度来设置直接存储器访问模块,如果源地址已经在要切换的通道上,则无需搬移,将源地址的首地址增加256byte;如果源地址不在要切换的通道上,则需要搬移,对剩余的地址段长度进行判断:如果小于256byte,则设置直接存储器访问模块的源地址和目的地址,所述直接存储器访问模块的数据位宽为128bit,burst长度根据地址段计算;如果大于或者等于256byte,则设置burst长度为16,让直接存储器访问模块直接搬移256byte的数据段;如果图形处理器中包含了多个直接存储器访问模块,则可以将任务并行划分到每个直接存储器访问模块中;步骤4.4、当将所有需要复制的地址划分完毕后,设置好两级地址映射表,将直接存储器访问模块的程序下载到图形处理器中,启动直接存储器访问模块开始搬移显存,等待直接存储器访问模块完成;当直接存储器访问模块完成所有地址的搬移后,跳转到步骤5.1;步骤5.1、设置片上网络上各个主模块到新的显存交织模式下,关闭或打开对应模式下的显存控制器和颗粒,恢复图形处理器的访存操作,完成显存交织模式切换。
在上述技术方案中,所述阶段2中还包括:通过屏蔽掉扩大地址空间后的最高位,使显存颗粒的物理地址在各种交织模式下保持一致。
在上述技术方案中,所述阶段1中,所述片上网络设有访存带宽利用率监测模块,所述访存带宽利用率监测模块统计图形处理器访问显存的带宽利用率,每隔一段时间访存带宽利用率监测模块将带宽利用率传送给主处理器,所述主处理器判断是否进行显存交织模式切换。
在上述技术方案中,所述图形处理器包括如下主模块:PCIE3.0模块、图形处理器核心模块、视频编解码模块、显示控制器模块、直接访存储器访问模块0、直接访存储器访问模块1;所述图形处理器还包括8路32bit的DDR控制器即DDRC0-7和物理层即PHY0-7;所述主模块和8路DDRC之间通过片上网络互联,所述图形处理器核心模块为4路128bit的AXI通道,所述直接访存储器访问模块0和直接访存储器访问模块1分别为1路128bit的AXI通道,所述每个DDR控制器为4路128bit的AXI通道;所述图形处理器通过PCIE3.0模块与主处理器互联,所述图形处理器通过HDMI2.0协议在显示屏上显示,所述每个DDR控制器的物理层与2个16bit的颗粒连接,所述主存空间和显存空间分别被限制在256MB。
在上述技术方案中,所述阶段2的具体过程如下:所述图形处理器中片上网络和显存控制器的两级地址映射,包括3个片上网络地址映射表即NMap0-2和3个显存控制器地址映射表即DMap0-2,其中,当NMap0为0-4GB空间时,按照8路DDR交织,交织通道为3;当NMap1为0-4GB空间时,按照2路DDR交织,交织通道为1;当NMap2为0-4GB空间时,按照8路DDR交织,交织通道为3,当NMap2为4-8GB空间时,按照2路DDR交织,交织通道为1;当DMap0为8路DDR交织时,DDRC_0和DDRC_1的地址映射;当DMap1为8路DDR交织时,DDRC_0和DDRC_1的地址映射;当DMap2为8路DDR交织时,DDRC_2到DDRC_7的地址映射;当处于8路交织时,片上网络总线地址映射采用NMAP0,DDRC_0和DDRC_1采用DMap0;当需要切换到2路DDR交织时,将DMA0和DMA1设置为NMap2,DDRC_0和DDRC_1设置为DMap1,保持DDRC_2到DDRC_7的地址映射表仍然为DMap2;相应的第一级地址为oA2和oA1,DDR_0颗粒的物理地址为{BG2,BA2,Row2,Col2},DDR_4颗粒的物理地址为{BG3,BA3,Row3,Col3}。其中DDR_0、DDR_1、DDR_2、DDR_3颗粒的容量为8Gb,DDR_4到DDR_15颗粒的容量为4Gb。
本发明还提供了一种用于多通道显存交织模式的切换装置,包括如下部分:统计***:统计图形处理器访问显存的带宽利用率,记录下显存占用的地址段,并统计各种应用下的带宽需求;两级地址映射***:采用片上网络和显存控制器两级地址映射的方式,配置片上网络上的各个主模块的显存交织地址映射表,设置多通道显存控制器的地址映射,将片上网络的高位访存地址映射为交织通道,按照物理地址不变的原则对显存控制器做第二级地址映射;交织模式启动***:当显存带宽利用率过低或过高、需要切换显存的交织模式时,关闭图形处理器中除直接存储器访问模块以外的访存操作;交织模式搬移***:将直接存储器访问模块的总线地址空间扩大一倍,使直接存储器访问模块能访问各种交织模式下的显存物理地址,将直接存储器访问模块切换到显存搬移模式,然后根据记录下的显存占用地址段,来搬移各种交织模式下的显存数据;交织模式工作***:设置片上网络上各个主模块的访存地址映射表,使各个主模块能在新的显存交织模式下工作,关闭或打开对应模式下的显存控制器和颗粒,恢复图形处理器的访存操作,完成多通道交织模式的切换。
在上述技术方案中,所述交织模式搬移***包括以下部分:预备单元:读取显存占用的地址段、可用的交织模式列表和直接存储器访问模块数量这些信息,对需要搬移的显存数据段长度进行片段,如果地址长度小于256byte的交织粒度,并且已经处于将要切换的显存颗粒时,则跳转到交织模式工作***;划分单元:首先将直接存储器访问模块的总线地址空间扩大一倍,低4GB地址空间为目前的交织模式,高4GB地址空间为要切换的交织模式,然后将需要搬移的源地址段按照256Byte的交织粒度进行划分;判断单元:按照256byte的交织粒度来设置直接存储器访问模块,如果源地址已经在要切换的通道上,则无需搬移,将源地址的首地址增加256byte;如果源地址不在要切换的通道上,则需要搬移,对剩余的地址段长度进行判断:如果小于256byte,则设置直接存储器访问模块的源地址和目的地址,所述直接存储器访问模块的数据位宽为128bit,burst长度根据地址段计算;如果大于或者等于256byte,则设置burst长度为16,让直接存储器访问模块直接搬移256byte的数据段;如果图形处理器中包含了多个直接存储器访问模块,则可以将任务并行划分到每个直接存储器访问模块中;搬移单元:当将所有需要复制的地址划分完毕后,设置好两级地址映射表,将直接存储器访问模块的程序下载到图形处理器中,启动直接存储器访问模块开始搬移显存,等待直接存储器访问模块完成;当直接存储器访问模块完成所有地址的搬移后,跳转到交织模式工作***。
本发明用于多通道显存交织模式的切换方法及装置,具有以下有益效果:
1、本发明能够省去显存与主存之间的数据交换过程;
2、本发明能减少显存交织模式切换的时间;
3、本发明能减少主存占用的容量和主处理器的资源;
4、本发明能提高显存带宽的利用率;
5、本发明能减少显存控制器和颗粒的功耗。
具体实施方式
下面结合附图及实施例对本发明作进一步的详细描述,但该实施例不应理解为对本发明的限制。
本发明针对多通道显存交织模式切换的目的,设计了一种通过内部总线搬移不同交织模式的显存数据,通过片上网络和显存控制器两级地址映射的方式,来保证总线和物理地址一致,省去显存与主存之间的数据交换,减少显存交织模式切换的时间,减少主存占用的容量和主处理器的资源,提高显存带宽的利用率,减少显存控制器和颗粒的功耗。本发明实施例提出了图1所示的用于多通道显存交织模式的切换方法示意图,这是一个分阶段的实施流程,分阶段流程如下:
阶段一:统计图形处理器访问显存的带宽利用率,记录下显存占用的地址段,并统计各种应用下的带宽需求。
阶段二:采用片上网络和显存控制器两级地址映射的方式,配置片上网络上的各个主模块的显存交织地址映射表,设置多通道显存控制器的地址映射,将片上网络的高位访存地址映射为交织通道,按照物理地址不变的原则对显存控制器做第二级地址映射。通过屏蔽掉扩大地址空间后的最高位,使显存颗粒的物理地址在各种交织模式下保持一致。
阶段三:当显存带宽利用率过低或过高时,需要切换显存的交织模式时,关闭图形处理器中除直接存储器访问模块以外的访存操作。
阶段四:将直接存储器访问模块(DMA)的总线地址空间扩大一倍,使直接存储器访问模块能访问各种交织模式下的显存物理地址,将直接存储器访问模块切换到显存搬移模式,然后根据记录下的显存占用地址段,来搬移各种交织模式下的显存数据。
阶段五:设置片上网络上各个主模块的访存地址映射表,使各个主模块能在新的显存交织模式下工作,关闭或打开对应模式下的显存控制器和颗粒,恢复图形处理器的访存操作,完成多通道交织模式的切换。
本发明具体实施例中的一种具有多通道显存的图形处理器***结构如图2所示。图形处理器(GPU)中包含了一系列的主模块:PCIE3.0模块、图形处理器核心模块(3D)、视频编解码模块(VPU)、显示控制器模块(VGA)、直接访存储器访问模块0(DMA_0)和直接访存储器访问模块1(DMA_1);所述图形处理器还包括8路32bit的DDR控制器(DDRC0-7)和物理层(PHY0-7);所述主模块和8路DDRC之间通过片上网络(NOC)互联,所述图形处理器核心模块为4路128bit的AXI通道,所述直接访存储器访问模块0(DMA_0)和直接访存储器访问模块1(DMA_1)分别为1路128bit的AXI通道,所述每个DDRC为4路128bit的AXI通道。所述图形处理器通过PCIE总线与主处理器互联,所述图形处理器通过HDMI2.0协议在显示屏上显示,每个DDR的PHY与2个16bit的颗粒连接。主存空间和显存空间分布在主处理器和图形处理器上,两边通过操作***分配的PCIE可见显存空间(BAR0)来交换数据,其空间限制在256MB。片上网络集成有访存带宽利用率监测模块,统计图形处理器访问显存的带宽利用率,每隔一段时间访存带宽利用率监测模块将带宽利用率传送给主处理器,所述主处理器判断是否进行显存交织模式切换。
GPU中采用片上网络和显存控制器的两级地址映射,包括3个片上网络地址映射表(NMap0-2)和3个显存控制器地址映射表(DMap0-2)。其中,当NMap0为0-4GB空间时,按照8路DDR交织,交织通道(CH)为3;当NMap1为0-4GB空间时,按照2路DDR交织,CH为1;当NMap2为0-4GB空间时,按照8路DDR交织,CH为3,当NMap2为4-8GB空间时,按照2路DDR交织,CH为1。当DMap0为8路DDR交织时,DDRC_0和DDRC_1的地址映射;当DMap1为8路DDR交织时,DDRC_0和DDRC_1的地址映射;当DMap2为8路DDR交织时,DDRC_2到DDRC_7的地址映射。
当处于8路交织时,NOC总线地址映射采用NMAP0,DDRC_0和DDRC_1采用DMap0。当需要切换到2路DDR交织时,将DMA0和DMA1设置为NMap2,DDRC_0和DDRC_1设置为DMap1,保持DDRC_2到DDRC_7的地址映射表仍然为DMap2。相应的第一级地址为oA2和oA1,DDR_0颗粒的物理地址为{BG2,BA2,Row2,Col2},DDR_4颗粒的物理地址为{BG3,BA3,Row3,Col3}。其中DDR_0、DDR_1、DDR_2、DDR_3颗粒的容量为8Gb,DDR_4到DDR_15颗粒的容量为4Gb。
实施例中的显存交织模式中DMA搬移的具体流程如图3所示。当主处理器统计完图形处理器访问显存的带宽利用率,发现利用率过低时,需要进行显存交织模式切换。主要包括五个步骤,具体如下所示:
(1)读取显存占用的地址段、可用的交织模式列表和DMA模块的数量等信息,对需要搬移的显存数据段长度进行片段,如果地址长度小于256byte的交织粒度,并且已经处于将要切换的显存颗粒时,则跳转到步骤(5)。
(2)首先将DMA模块的总线地址空间扩大一倍,低4GB地址空间为目前的交织模式,高4GB地址空间为要切换的交织模式,具体见NMAP2所示。然后将需要搬移的源地址段按照256Byte的交织粒度进行划分。
(3)DMA的设置过程是按照256byte的交织粒度来进行,如果源地址已经在要切换的通道上,则无需搬移,将源地址的首地址增加256byte。如果源地址不在要切换的通道上,则需要搬移,对剩余的地址段长度进行判断,如果小于256byte,则设置DMA的源地址和目的地址,DMA的数据位宽为128bit,burst长度根据地址段计算;如果大于或者等于256byte,则设置burst长度为16,让DMA直接搬移256byte的数据段。如果GPU中包含了多个DMA模块,则可以将任务并行划分到每个DMA中。
(4)当将所有需要复制的地址划分完毕后,设置好两级地址映射表,将DMA的程序下载到GPU中,启动DMA开始搬移显存,等待DMA完成。当DMA完成所有地址的搬移后,跳转到步骤(5)。
(5)设置片上网络上的各个主模块到新的显存交织模式下,关闭或打开对应模式下的显存控制器和颗粒,恢复图形处理器的访存操作,完成显存交织模式切换。
具体实施例中的从8路交织切换到2路交织模式的数据搬移如图4所示。8个DDR4交织时,源地址inA对应的物理地址均匀分布在8个颗粒上,比如DDR4_0上就分布了A段地址,DDR4_2分布了C段地址。当采用2个DDR4交织时,可以看到DDR4_2、DDR4_4和DDR4_6的数据分到了DDR4_0上。由于A1,A2,A3,A4上的数据已经在DDR4_0上,B1,B2,B3,B4上的数据已经在DDR4_1上,所以不做搬移。只对C-H段的数据进行搬移。通过增加目的地址inA的高位,并通过DDRC内的第二级地址映射,来保证两种交织模式下的物理地址一致,使得原来DDR4_0和DDR4_1上的数据不被更改。GPU中存在两个DMA模块的话,则可以按照下面的方式来编写DMA程序代码。
DMA0的程序代码(搬移C1的数据)
·设置DMA0总线的配置,burst length=16,burst size=4
·设置DMA0的源地址为0x00000200
·设置DMA0的目的地址为0x100000200
DMA1的程序代码(搬移D1的数据)
·设置DMA1总线的配置,burst length=16,burst size=4
·设置DMA1的源地址为0x00000300
·设置DMA1的目的地址为0x100000300
DMA0的程序代码(搬移G4的数据)
·设置DMA0总线的配置,burst length=16,burst size=4
·设置DMA0的源地址为0xFFFFFE00
·设置DMA0的目的地址为0x1FFFFFE00
DMA1的程序代码(搬移H4的数据)
·设置DMA1总线的配置,burst length=16,burst size=4
·设置DMA1的源地址为0xFFFFFF00
·设置DMA1的目的地址为0x1FFFFFF00
实施例中的不同交织模式下的两级地址映射如图5所示。当8个DDR交织时,NMap0的地址映射将3位的交织通道CH[2:0]地址映射到最高位oA1[31:29],这样对于在2个DDR交织模式时要关闭的DDRC_2模块,可以采用容量较少的颗粒。当2个DDR交织时,NMap1将1为的交织通道CH[0]地址映射到最高位oA2[31]。
不同交织模式下,总线地址映射不一样,并且DDR颗粒的大小也不一样。为了保证在不同模式下,NOC总线上的模块访问总线地址inA和与DDR颗粒的物理地址一致,所以需要DDRC_0的物理地址映射做切换,由原来的DMap0切换到DMap1,具体的地址映射如图5所示。因为在2个DDR交织模式下不使用DDRC_2模块,所以在切换时候保持使用DMap。
本发明用于多通道显存交织模式的切换装置,如图6所示,包括如下部分:
统计***:统计图形处理器访问显存的带宽利用率,记录下显存占用的地址段,并统计各种应用下的带宽需求;
两级地址映射***:采用片上网络和显存控制器两级地址映射的方式,配置片上网络上的各个主模块的显存交织地址映射表,设置多通道显存控制器的地址映射,将片上网络的高位访存地址映射为交织通道,按照物理地址不变的原则对显存控制器做第二级地址映射;
交织模式启动***:当显存带宽利用率过低或过高、需要切换显存的交织模式时,关闭图形处理器中除直接存储器访问模块以外的访存操作;
交织模式搬移***:将直接存储器访问模块的总线地址空间扩大一倍,使直接存储器访问模块能访问各种交织模式下的显存物理地址,将直接存储器访问模块切换到显存搬移模式,然后根据记录下的显存占用地址段,来搬移各种交织模式下的显存数据;
交织模式工作***:设置片上网络上各个主模块的访存地址映射表,使各个主模块能在新的显存交织模式下工作,关闭或打开对应模式下的显存控制器和颗粒,恢复图形处理器的访存操作,完成多通道交织模式的切换。
所述交织模式搬移***如图7所示,包括以下部分:
预备单元:读取显存占用的地址段、可用的交织模式列表和直接存储器访问模块数量这些信息,对需要搬移的显存数据段长度进行片段,如果地址长度小于256byte的交织粒度,并且已经处于将要切换的显存颗粒时,则跳转到交织模式工作***;
划分单元:首先将直接存储器访问模块的总线地址空间扩大一倍,低4GB地址空间为目前的交织模式,高4GB地址空间为要切换的交织模式,然后将需要搬移的源地址段按照256Byte的交织粒度进行划分;
判断单元:按照256byte的交织粒度来设置直接存储器访问模块,如果源地址已经在要切换的通道上,则无需搬移,将源地址的首地址增加256byte;如果源地址不在要切换的通道上,则需要搬移,对剩余的地址段长度进行判断:如果小于256byte,则设置直接存储器访问模块的源地址和目的地址,所述直接存储器访问模块的数据位宽为128bit,burst长度根据地址段计算;如果大于或者等于256byte,则设置burst长度为16,让直接存储器访问模块直接搬移256byte的数据段;如果图形处理器中包含了多个直接存储器访问模块,则可以将任务并行划分到每个直接存储器访问模块中;
搬移单元:当将所有需要复制的地址划分完毕后,设置好两级地址映射表,将直接存储器访问模块的程序下载到图形处理器中,启动直接存储器访问模块开始搬移显存,等待直接存储器访问模块完成;当直接存储器访问模块完成所有地址的搬移后,跳转到交织模式工作***。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。