一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于配置数据包的独立显卡显存接口配置方法与流程

2023-02-06 13:58:54 来源:中国专利 TAG:


1.本发明属于显卡技术领域,尤其涉及一种基于配置数据包的独立显卡显存接口配置方法。


背景技术:

2.随着显卡技术的迅猛发展,显卡处理性能越来越高,显卡芯片对显存接口的带宽要求也越来越高,同时显存接口的类型出现了多样性。一些gpu芯片的显存接口支持多种sdram类型,如ddr3、ddr4、lpddr3、lpddr4等,同时每种sdram类型又支持多种带宽模式,如ddr4接口支持3200mbps、2666mbps、2400mbps、1600mbps等带宽模式。对于采用同一款gpu芯片的显卡,由于显存颗粒芯片和电路的差异,通常显存接口的带宽模式也存在一定的差异。
3.针对gpu显存接口类型和工作带宽模式多样性的问题,通常对每种接口类型和带宽模式定制一套显卡vbios程序,而显卡驱动程序则根据板卡配置信息选择不同的驱动分支对显存接口进行驱动。然而,由于显存接口驱动本身较复杂,显存接口处理核的固件程序也较大,如果显卡vbios和显卡驱动直接用程序代码驱动显存接口,一方面会导致显卡vbios程序过大,另一方面也非常不利于适应显存接口类型或显存接口带宽模式的多样性,必然导致显卡vbios程序和驱动版本较多,不利于软件版本的管理和维护。
4.因此根据实际经验,现有通过不同的vbios程序驱动显存接口的方法,至少存在如下技术问题:
5.1.由于显存接口硬件的差异,导致显卡vbios程序版本过多,不利于显卡vbios程序的管理和维护;
6.2.显卡vbios程序和显卡驱动程序对显存接口的配置处于分离状态,容易出现显卡vbios程序和显卡驱动程序在驱动显存接口时工作状态存在不一致的问题;
7.3.由于显存接口的驱动程序本身较复杂,导致显卡vbios程序也较大,而显卡vbios存储区域的容量资源又存在限制,显卡vbios程序容量可能出现超过vbios设计容量限制而导致vbios程序无法正常运行,同时也不利于多种架构vbios程序的共存。


技术实现要素:

8.鉴于上述问题,本发明的目的在于提供一种基于配置数据包的独立显卡显存接口配置方法,旨在解决现有方法存在难维护、难管理和可能的容量资源不足的技术问题。
9.本发明采用如下技术方案:
10.所述基于配置数据包的独立显卡显存接口配置方法,包括下述步骤:
11.步骤s1、将独立显卡的显存接口配置过程转成顺序执行的寄存器操作流;
12.步骤s2、将寄存器操作流依据地址变化特征进行分段并封装成配置块包;
13.步骤s3、按照配置块包的原始执行顺序,将配置块包组合成显存接口配置数据包,并存储于显卡存储器中;
14.步骤s4、显卡vbios程序或驱动程序在初始化显存接口时,先读取显存接口配置数
据包,并解析出显存接口寄存器操作流,通过执行寄存器操作流完成对显存接口的配置和驱动。
15.进一步的,所述步骤s1中,寄存器操作包括寄存器写入操作、寄存器读出操作、寄存器值校验操作;寄存器操作流为按顺序执行的寄存器操作序列;用寄存器最高位的若干冗余地址位标识寄存器的操作类型;
16.其中寄存器值校验操作的过程为:读出寄存器值,并判断寄存器值与预期值是否一致,如果不一致,则等待一段时间后再重新读出寄存器值并与预期值进行比较,直到读出的寄存器值与预期值一致并返回成功,如果达到超时次数仍未成功,则返回失败。
17.进一步的,步骤s2中,寄存器操作流依据地址变化特征分为顺序寄存器操作和随机寄存器操作这两种特征,所述步骤s2具体过程如下:
18.s21、当同类型连续的顺序寄存器操作达到设定阈值时,将这些连续的顺序寄存器操作分成一个顺序寄存器操作段,顺序寄存器操作段之间的每块随机寄存器操作分成随机寄存器操作段;
19.s22、将顺序寄存器操作段和随机寄存器操作段封装成相应的顺序配置块包和随机配置块包,其中所述顺序配置块包记录有顺序寄存器操作段的起始地址、地址步长和寄存器值信息;所述随机配置块包记录有每个随机寄存器操作的地址和寄存器值信息。
20.进一步的,所述配置块包的第一字节为标识字符,用于标明配置块包是否存在;步骤s3中,按照配置块包的原始执行顺序,依次存放配置块包,形成显存接口配置数据包,并存储于显卡存储器中。
21.进一步的,步骤s3中,显卡存储器中存储有多种显存接口配置数据包,所述步骤s3还包括设置显卡板载配置信息,所述显卡板载配置信息中存储有各显存接口配置数据包的偏移地址。
22.本发明的有益效果是:本发明通过将独立显卡的显存接口配置过程转成寄存器操作流,并封装成配置块包,然后组合成配置数据包,存储于显卡存储器中,显卡vbios程序和显卡驱动程序通过从显卡存储器中读取显存接口配置数据包,解析成显存接口配置流,通过执行寄存器操作流完成对显存接口的配置;本发明将独立显卡的显存接口配置方法转变为配置数据包,显卡vbios程序和驱动程序通过加载配置数据包即可实现复杂的显存接口驱动,有利于vbios程序和显卡驱动程序的维护和管理,也有利于保证一个统一的显存接口驱动过程,通过显卡板载配置信息和多种配置数据包数据的组合,在同一块显卡上还能灵活实现显存接口工作带宽模式的切换。
附图说明
23.图1是本发明实施例提供的基于配置数据包的独立显卡显存接口配置方法的流程图;
24.图2是本发明实施例提供的显卡存储器存储空间分配示意图;
25.图3是本发明实施例提供的显卡存储器的区域划分示意图;
26.图4是本发明实施例提供的一种具体的步骤s4执行流程图。
具体实施方式
27.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
28.本发明首先将独立显卡的显存接口配置过程转化为寄存器操作流;然后根据寄存器操作流的特征对寄存器操作流进行分段,如分为寄存器地址顺序增加的顺序寄存器操作段和寄存器地址随机变化的随机寄存器操作段;再将分段的寄存器操作流增加包头信息封装成配置块包;最后将这些配置块包组合成一个完整的显存接口配置数据包,并存储在显卡内的存储器中,这样显卡vbios程序或显卡驱动程序通过读取完整的配置数据包,解析成寄存器操作流,通过加载寄存器操作流,就能够实现对显存接口的驱动。本发明简化了独立显卡显存接口的驱动方法,且当需要改变独立显卡的显存接口类型或工作带宽模式时,只需要更新配置数据包的内容,而不需要修改显卡vbios程序或显卡驱动程序。
29.为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
30.图1示出了本发明实施例提供的基于配置数据包的独立显卡显存接口配置方法的流程,为了便于说明仅示出了与本发明实施例相关的部分。
31.如图1所示,本实施例提供的基于配置数据包的独立显卡显存接口配置方法,包括如下过程:
32.步骤s1、将独立显卡的显存接口配置过程转成顺序执行的寄存器操作流。
33.由于显存接口的配置过程是寄存器写入、寄存器读出、寄存器校验过程的组合,因此本步骤将显存接口配置过程转成顺序执行的寄存器操作流。寄存器操作包括寄存器写入操作、寄存器读出操作、寄存器值校验操作;寄存器操作流为按顺序执行的寄存器操作序列。
34.寄存器值校验操作的过程为:读出寄存器值,并判断寄存器值与预期值是否一致,如果不一致,则等待一个较短的时间段后再重新读出寄存器值并与预期值进行比较,可以反复多次,直到读出的寄存器值与预期值一致并返回成功,如果达到超时次数仍未成功,则返回失败。
35.通常采用寄存器最高位的若干冗余地址位标识寄存器的操作类型,如在寄存器偏移地址位少于30位系统中,可以定义地址31位和30位为二进制00表示寄存器写入操作,为01表示寄存器读出操作,为10表示寄存器校验操作。因此本步骤可以将显存接口控制器的寄存器的写入操作、读出操作、校验操作的操作类型码编入寄存器偏移地址冗余的高比特位中,以节省寄存器操作流的存储空间。
36.步骤s2、将寄存器操作流依据地址变化特征进行分段并封装成配置块包。
37.寄存器操作流依据地址变化特征主要是指顺序寄存器操作和随机寄存器操作这两种特征。
38.步骤s2具体过程如下:
39.s21、当同类型连续的顺序寄存器操作达到设定阈值时,将这些连续的顺序寄存器操作分成一个顺序寄存器操作段,顺序寄存器操作段之间的每块随机寄存器操作分成随机寄存器操作段;
40.s22、将顺序寄存器操作段和随机寄存器操作段封装成相应的顺序配置块包和随
机配置块包,其中所述顺序配置块包记录有顺序寄存器操作段的起始地址、地址步长和寄存器值信息;所述随机配置块包记录有每个随机寄存器操作的地址和寄存器值信息。
41.配置块包的包头信息通常包括包类型、寄存器数据位宽、寄存器配置数量、顺序寄存器操作段的起始寄存器地址、crc校验码等。
42.对于顺序寄存器操作段的封装,由于寄存器地址是连续的,因此只需要记录该操作段的起始寄存器地址,配置块包的正文部分用于存放寄存器值。而对于一些特殊的顺序寄存器操作段,当其内容可能被包含在多个配置块包时,为了节省数据存储空间,该操作段的寄存器值数据将顺序存放在固定位置,该配置块包类型为特殊的引用类型包,包正文只包括寄存器段数据的起始位置信息和寄存器数量。
43.本实施例中,配置块包存放于显卡的spiflash中。显存接口所有ddr4类型的显存接口中,其一维和二维训练程序的数据是相同的,因而分别单独存放在0x10000和0x18000开始的32kb区域,供寄存器配置块包引用。
44.步骤s3、按照配置块包的原始执行顺序,将配置块包组合成显存接口配置数据包,并存储于显卡存储器中。显卡存储器通常指spiflash、norflash、nandflash、eeprom等非易失性存储器。
45.本实施例中,如图2所示,共有n个配置块包组成配置数据包存放于显卡存储器中。配置块包通常采用2字节对齐模式,2字节也可以表示16位寄存器的值,两个2字节可以表示32位寄存器的值或寄存器地址。配置块包的第一字节为标识字符,如十六进制的0xa5,用于标明配置块包是否存在。如果显存接口配置数据包无后续配置块包,则表明显存接口该配置数据包已结束。
46.作为一种实施方式,3200mbps带宽的配置数据包存放于spiflash偏移地址为0x28000开始的区域,2666mbps带宽的配置数据包存放于spiflash偏移地址为0x30000开始的区域,2400mbps带宽的配置数据包存放于spiflash偏移地址为0x38000开始的区域。
47.ddr4显存接口类型的3200mbps显存带宽模式为例,如图3所示。假设生成有随机寄存器配置块包1、顺序寄存器配置块包1、随机寄存器配置块包2、顺序寄存器配置块包2、随机寄存器配置块包3。
48.对于随机寄存器配置块包1,该配置块包的第1个字节为16进制0xa5,第2个字节为16进制包类型码0x01,表示随机寄存器配置块包,第3和第4字节组合表示该配置块包的总字节数为3336个字节,第5和第6字节组合值为32,表示寄存器位宽为32位,第7和第8字节组合值为16进制的0xd5b9,为本配置块包数据区域的crc校验码,第9字节到包尾为本配置块包的数据区域,每条寄存器操作包含32位的寄存器地址和32位的寄存器值组成的数据项,对于需要校验操作的寄存器,寄存器地址的第31位设置为1。
49.对于顺序寄存器配置块包1:该配置块包的第1个字节为16进制0xa5,第2个字节为16进制包类型码0x02,表示引用型顺序寄存器配置块包,第3和第4字节组合表示该配置块包的总字节数为16个字节,第5和第6字节组合值为16,表示寄存器位宽为16位,第7和第8字节组合值为16进制的0xffea,为本配置块包数据区域的crc校验码,第9、10、11、12字节表示顺序寄存器的起始地址0x00140000,第13、14、15、16字节组合值为0x10000,表示引用寄存器值数据在spiflash中的起始偏移地址位0x10000;
50.对于随机寄存器配置块包2:该配置块包的第1个字节为16进制0xa5,第2个字节为
16进制包类型码0x01,表示随机寄存器配置块包,第3和第4字节组合表示该配置块包的总字节数为7472个字节,第5和第6字节组合值为32,表示寄存器位宽为32位,第7和第8字节组合值为16进制的0x1670,为本配置块包数据区域的crc校验码,第9字节到包尾为本配置块包的数据区域,每条寄存器操作包含32位的寄存器地址和32位的寄存器值组成的数据项,对于需要校验操作的寄存器,寄存器地址的第31位设置为1;
51.对于顺序寄存器配置块包2:该配置块包的第1个字节为16进制0xa5,第2个字节为16进制包类型码0x02,表示引用型顺序寄存器配置块包,第3和第4字节组合表示该配置块包的总字节数为16个字节,第5和第6字节组合值为16,表示寄存器位宽为16位,第7和第8字节组合值为16进制的0x7fea,为本配置块包数据区域的crc校验码,第9、10、11、12字节表示顺序寄存器的起始地址0x00140000,第13、14、15、16字节组合值为0x18000,表示引用寄存器值数据在spiflash中的起始偏移地址位0x18000;
52.对于随机寄存器配置块包3:该配置块包的第1个字节为16进制0xa5,第2个字节为16进制包类型码0x01,表示随机寄存器配置块包,第3和第4字节组合表示该配置块包的总字节数为7936个字节,第5和第6字节组合值为32,表示寄存器位宽为32位,第7和第8字节组合值为16进制的0xf539,为本配置块包数据区域的crc校验码,第9字节到包尾为本配置块包的数据区域,每条寄存器操作包含32位的寄存器地址和32位的寄存器值组成的数据项,对于需要校验操作的寄存器,寄存器地址的第31位设置为1。
53.步骤s4、显卡vbios程序或驱动程序在初始化显存接口时,先读取显存接口配置数据包,并解析出显存接口寄存器操作流,通过执行寄存器操作流完成对显存接口的配置和驱动。
54.本实施例中,显卡存储器中存储有多种显存接口配置数据包,步骤s3还包括设置显卡板载配置信息,所述显卡板载配置信息中存储有各显存接口配置数据包的偏移地址。图3中,显卡存储器中存放了3种带宽的ddr4工作模式的配置数据包,通过配置板载配置信息就可实现带宽工作模式的切换。操作时只需调整显卡板载配置信息中显存接口配置包的偏移地址,就能实现显存接口配置的切换,实现对不同的显存颗粒芯片的支持,而不需要更新配置数据包区域的数据,进一步减少了固件数据维护的复杂度。
55.图4示出了本步骤的具体流程,如图所示,过程如下:
56.首先读取显卡板载配置信息,根据配置数据包的种类从显卡板载配置信息中获取对应的显存接口配置数据包的偏移地址,根据偏移地址即可从显卡存储器中读取对应的显存接口配置数据包;然后按顺序依次读取显存接口配置数据包中的配置块包;解析配置块包,判断配置块包的标识字符是否合法。如果合法,则继续判断配置包是否为引用类型包,如果是引用类型包,则读取数据偏移地址指向的寄存器操作流,如果不是引用类型包,则读取配置块包内的寄存器操作流;最后执行读取到的寄存器操作流,再进行寄存器校验是否超时,如果没超时就继续读取下一个配置块包,直至配置数据包全部处理完毕。
57.在实际操作中,首先显卡vbios程序或显卡驱动程序从spiflash的0x20000偏移地址处开始读取显卡的板载配置信息,解析出显存接口配置数据包在spiflash中的偏移地址;然后显卡vbios程序或显卡驱动程序根据显存接口配置数据包在spiflash中的偏移地址,开始读取显存接口的配置数据包,并解析成配置块包,然后按顺序执行配置块包,对于每个配置块包,执行寄存器操作流;当寄存器的操作地址第31位为1时,将执行状态寄存器
校验操作,即先读出寄存器值,并与预期值进行比较,如果与预期值一致,则表示校验成功并返回,否则延时1微秒后再读该寄存器值,并与预期值进行比较,直到校验成功,或者校验超时返回错误;通过块配置包的首字节0xa5来判断配置数据包是否结束,如果下一个块配置包的首字节不为0xa5,则表示当前配置数据包已读取完成,显存接口已配置结束。
58.综上,首先本发明将显存接口配置驱动过程转换成单纯参数数据包形式,存储于显卡存储器中,这样同一套显卡vbios程序或驱动程序,只需要更新配置数据包的内容,就能实现对不同接口类型或带宽模式的切换,而无需改变显卡vbios程序或显卡驱动程序,解决了显存接口类型和工作带宽模式多样性的问题;其次,本发明提出了的显存接口配置方法由存储在显卡存储器中的配置数据包完整描述,显卡vbios程序和显卡驱动程序都是通过相同的配置数据包对显存接口进行配置,解决了显卡vbios和显卡驱动程序在显存接口配置方法上可能存在不统一的问题;此外,通过设置显卡板载配置信息,显卡存储器上可存储多种显存接口配置数据包,只需调整显卡板载配置信息模块中显存接口配置包的偏移地址,就能实现显存接口配置的切换,实现对不同的显存颗粒芯片的支持,而不需要更新配置数据包区域的数据,进一步减少了固件数据维护的复杂度。
59.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献