本发明属于显存优化技术领域,具体涉及一种基于国产平台的显存优化实现方法。
背景技术:
随着计算机技术的发展,图像显示越来越重要,尤其是在3d地形显示、军事战场态势、气象云图等方面对高性能显示的需求更加迫切,因此图形显示加速技术提高图形系统的工作效率就显得尤为重要。基于国产处理器的计算机图形系统中cpu端写vram显存的速率低,导致在图形、图像处理时的处理效率低。此为现有技术的不足之处。
因此,针对现有技术中的上述缺陷,提供设计一种基于国产平台的显存优化实现方法;以解决现有技术中的上述缺陷,是非常有必要的。
技术实现要素:
本发明的目的在于,针对上述现有技术存在的缺陷,提供设计一种基于国产平台的显存优化实现方法,以解决上述技术问题。
为实现上述目的,本发明给出以下技术方案:
一种基于国产平台的显存优化实现方法,其特征在于,包括以下步骤:
s1:使用内核api获取vram显存的物理地址和大小;
s2:利用国产处理器的虚拟地址映射机制,通过页表为vram显存进行虚拟地址映射,把它映射到内核虚拟地址空间;
s3:在vram显存位于页表中的页表项中,对内存位置的访问权限和属性进行控制,为其定义架构适应属性;
s4:操作系统根据以上建立的映射关系,使用映射的虚拟地址访问vram显存。
作为优选,所述步骤s2中,将页表看做一个数组,数组的索引就是内存页的虚拟页帧号,数组里面的值就是对应物理页的物理页帧号;页表的每一项中,除了保存有物理页帧号外,还保存有对页的访问权限和属性标志。页表项的格式如图1所示。
作为优选,所述步骤s3包括以下步骤:
s31:转换的物理页帧号为outputaddress,通过对upperattributes和lowerattributes标志位进行写配置,确定用户空间程序是否拥有读写和可执行权限,内核空间程序是否拥有写和可执行权限,是否可缓存、可共享。访问设备地址空间的时序属性通过lowerattributes指定。lowerattributes定义如图2所示。
s32:访问设备内存的时序属性参数是由attrindx[2:0]指定,attrindx[2:0]设定了一个索引值,该索引值的范围为0到7,该索引值会指定mair_el1寄存器中的一个位置,mair_el1寄存器中保存8组预定义的属性;页表在确定访问权限和属性时,根据attrindx[2:0]指定的8组预定义属性中的一个,被指定的预定义属性即为该内存页的访问属性。mair_el1寄存器定义如图3所示。
作为优选,所述步骤s32中,mair_el1寄存器预定义的8组属性值,每组占据8位,每组属性定义如下:
attr<n>[7:4]定义:
0000:表示该内存页为设备内存;
非0000:表示该内存页为普通内存,并定义了普通内存的可缓存性,可共享性属性;
attr<n>[3:0]定义:
0000:当该内存页为设备内存时,访问时序要求属性为ngnrne;
00xx:当该内存页为设备内存时,该值无含义;
0100:当该内存页为设备内存时,访问时序要求属性为ngnre;
01xx:当该内存页为设备内存时,该值无含义;
1000:当该内存页为设备内存时,访问时序要求属性为ngre;
10xx:当该内存页为设备内存时,该值无含义;
1100:当该内存页为设备内存时,访问时序要求属性为gre;
11xx:当该内存页为设备内存时,该值无含义。
本发明的有益效果在于,采用写合并的方式判断对某一存储区域的多次访问是否可以合并成一个总线操作并对指令进行重排序;经过上述优化后,图形显示子系统访问vram显存时指令可以重排序,中间缓存部件可以提取返回写确认,从而大大提高了cpu访问vram显存的速度。此外,本发明设计原理可靠,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
图1是页表项的格式图。
图2是lowerattributes的定义图。
图3是mair_el1寄存器的定义图。
具体实施方式
下面结合附图并通过具体实施例对本发明进行详细阐述,以下实施例是对本发明的解释,而本发明并不局限于以下实施方式。
本实施例提供一种基于国产平台的显存优化实现方法,其特征在于,包括以下步骤:
s1:使用内核api获取vram显存的物理地址和大小;
s2:利用国产处理器的虚拟地址映射机制,通过页表为vram显存进行虚拟地址映射,把它映射到内核虚拟地址空间;
s3:在vram显存位于页表中的页表项中,对内存位置的访问权限和属性进行控制,为其定义架构适应属性;
s4:操作系统根据以上建立的映射关系,使用映射的虚拟地址访问vram显存。
本实施例中,所述步骤s2中,将页表看做一个数组,数组的索引就是内存页的虚拟页帧号,数组里面的值就是对应物理页的物理页帧号;页表的每一项中,除了保存有物理页帧号外,还保存有对页的访问权限和属性标志。页表项的格式如图1所示。
本实施例中,所述步骤s3包括以下步骤:
s31:转换的物理页帧号为outputaddress,通过对upperattributes和lowerattributes标志位进行写配置,确定用户空间程序是否拥有读写和可执行权限,内核空间程序是否拥有写和可执行权限,是否可缓存、可共享。访问设备地址空间的时序属性通过lowerattributes指定。lowerattributes定义如图2所示。
s32:访问设备内存的时序属性参数是由attrindx[2:0]指定,attrindx[2:0]设定了一个索引值,该索引值的范围为0到7,该索引值会指定mair_el1寄存器中的一个位置,mair_el1寄存器中保存8组预定义的属性;页表在确定访问权限和属性时,根据attrindx[2:0]指定的8组预定义属性中的一个,被指定的预定义属性即为该内存页的访问属性。mair_el1寄存器定义如图3所示。
本实施例中,所述步骤s32中,mair_el1寄存器预定义的8组属性值,每组占据8位,每组属性定义如下:
attr<n>[7:4]定义:
0000:表示该内存页为设备内存;
非0000:表示该内存页为普通内存,并定义了普通内存的可缓存性,可共享性属性;
attr<n>[3:0]定义:
0000:当该内存页为设备内存时,访问时序要求属性为ngnrne;
00xx:当该内存页为设备内存时,该值无含义;
0100:当该内存页为设备内存时,访问时序要求属性为ngnre;
01xx:当该内存页为设备内存时,该值无含义;
1000:当该内存页为设备内存时,访问时序要求属性为ngre;
10xx:当该内存页为设备内存时,该值无含义;
1100:当该内存页为设备内存时,访问时序要求属性为gre;
11xx:当该内存页为设备内存时,该值无含义。
以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。