处理器页表的读写方法、装置、设备、存储介质及程序产品与流程

摘要: 本技术涉及芯片,特别是涉及一种处理器页表的读写方法、装置、设备、存储介质及程序产品。背景技术:1、目前,在稀疏资源(sparseresource或tiledre...
处理器页表的读写方法、装置、设备、存储介质及程序产品与流程

本技术涉及芯片,特别是涉及一种处理器页表的读写方法、装置、设备、存储介质及程序产品。

背景技术:

1、目前,在稀疏资源(sparse resource或tiled resource)场景中,应用可申请大范围图形处理器(graphics processing unit,gpu)虚拟地址(virtual address,va),但仅对大范围gpu va中的部分内存页(page)建立真实物理映射。

2、相关技术中,大量未映射page由主机的内核模式驱动(kernel mode driver,kmd)来维护页表状态,例如无效状态、解除映射状态等。kmd对于页表状态的判断主要依赖读取真实的gpu页表来完成。

3、然而,由于真实的gpu页表位于gpu的设备内存中,kmd读取gpu的设备内存中的真实的gpu页表通常经过基地址寄存器(base address register,bar)、内存映射输入输出(memory-mapped i/o,mmio)、快速外设组件互连(peripheral component interconnectexpress,pcie)、片上互联或设备内存访问通道,这导致了访问延迟较高。

技术实现思路

1、基于此,有必要针对上述技术问题,提供一种能够降低处理器页表的访问延迟的处理器页表的读写方法、装置、设备、存储介质及程序产品。

2、第一方面,本技术提供了一种处理器页表的读写方法,应用于处理器所在主机的内核模式驱动kmd,包括:

3、在第二处理器页表的条目中读取目标表项的第一取值;

4、其中,所述第二处理器页表为与第一处理器页表的条目数量和条目宽度相同的镜像页表,所述第一处理器页表位于所述处理器的设备内存中,所述第二处理器页表位于所述处理器所在主机的系统内存中。

5、在其中一个实施例中,所述方法还包括:

6、通过目标访问入口在所述第一处理器页表和所述第二处理器页表的条目中同步写入目标表项的第二取值,所述第二取值用于更新所述第一取值。

7、在其中一个实施例中,在所述第二处理器页表的条目中读取目标表项的第一取值之前,所述方法还包括:

8、在处理器的设备内存中创建所述第一处理器页表,并在所述处理器所在主机的系统内存中创建所述第二处理器页表;

9、初始化所述第一处理器页表和所述第二处理器页表,以同步所述第一处理器页表和所述第二处理器页表中的表项的初始值;

10、建立所述第一处理器页表和所述第二处理器页表的之间的绑定关系。

11、在其中一个实施例中,所述在第二处理器页表的条目中读取目标表项的第一取值,包括:

12、在请求确定处理器页表的当前表项状态的情况下,在所述第二处理器页表的条目中读取所述目标表项的第一取值。

13、在其中一个实施例中,所述在所述第二处理器页表的条目中读取所述目标表项的第一取值,包括:

14、根据所述处理器的虚拟地址,确定所述目标表项的位置信息;

15、根据所述目标表项的位置信息,在所述第二处理器页表的条目中读取所述目标表项的第一取值。

16、在其中一个实施例中,所述方法还包括:

17、解析所述目标表项的第一取值,得到目标表项的表项状态字段;

18、对所述目标表项的表项状态字段进行更新,得到所述目标表项的第二取值;

19、其中,所述表项状态字段包括以下一项或多项:有效性字段、解除映射字段、地址字段、权限字段。

20、在其中一个实施例中,所述对所述目标表项的表项状态字段进行更新,得到所述目标表项的第二取值,包括:

21、响应于稀疏资源的解除映射请求,在所述目标表项未处于解除映射状态的情况下,置位所述目标表项中的解除映射字段,并且调整所述有效性字段、所述地址字段、所述权限字段中的一项或多项,得到所述目标表项的第二取值;

22、其中,所述解除映射请求用于解除处理器页表中的表项与物理显存之间映射关系,所述解除映射状态为处理器页表中的表项与物理显存之间解除映射关系的状态。

23、在其中一个实施例中,在所述通过所述目标访问入口在所述第一处理器页表和所述第二处理器页表的条目中同步写入目标表项的第二取值之后,所述方法还包括:

24、在满足第一传播条件的情况下,从所述目标表项开始,逐级向上传播解除映射状态;

25、其中,所述第一传播条件包括当前等级中处于所述解除映射状态的表项数量等于所述当前等级中的表项总量。

26、在其中一个实施例中,所述对所述目标表项的表项状态字段进行更新,得到所述目标表项的第二取值,包括:

27、响应于稀疏资源的重映射请求,在所述目标表项处于解除映射状态的情况下,清除所述目标表项的解除映射字段,并且调整所述有效性字段、所述地址字段、所述权限字段中的一项或多项,得到所述目标表项的第二取值;其中,所述重映射请求用于重新建立处理器页表中的表项与物理显存之间映射关系。

28、在其中一个实施例中,在所述通过所述目标访问入口在所述第一处理器页表和所述第二处理器页表的条目中同步写入目标表项的第二取值之后,所述方法还包括:

29、在满足第二传播条件的情况下,从所述目标表项开始,逐级向上清除解除映射状态;

30、其中,所述第二传播条件包括当前等级中处于所述解除映射状态的表项数量等于零。

31、在其中一个实施例中,在所述通过目标访问入口在所述第一处理器页表和所述第二处理器页表的条目中同步写入目标表项的第二取值之后,所述方法还包括:

32、对所述第一处理器页表和所述第二处理器页表执行页表维护操作;

33、所述页表维护操作包括以下一项或多项:地址翻译缓存刷新操作、内存管理维护操作和内存屏障操作;

34、其中,所述地址翻译缓存刷新操作用于在更新为所述目标表项的第二取值后缓存所述处理器中失效的地址翻译;所述内存管理维护操作用于维持所述处理器中地址翻译与所述目标表项一致;所述内存屏障操作用于向所述处理器同步所述第一处理器页表和所述第二处理器页表的页表写入顺序。

35、在其中一个实施例中,所述处理器包括图形处理器gpu。

36、第二方面,本技术还提供了一种处理器页表的读写装置,应用于处理器所在主机的kmd,包括:

37、读取模块,用于在第二处理器页表的条目中读取目标表项的第一取值;

38、其中,所述第二处理器页表为与第一处理器页表的条目数量和条目宽度相同的镜像页表,所述第一处理器页表位于所述处理器的设备内存中,所述第二处理器页表位于所述处理器所在主机的系统内存中。

39、在其中一个实施例中,所述处理器页表的读写装置还包括:

40、写入模块,用于通过目标访问入口在所述第一处理器页表和所述第二处理器页表的条目中同步写入目标表项的第二取值,所述第二取值用于更新所述第一取值。

41、在其中一个实施例中,所述处理器页表的读写装置还包括:

42、创建模块,用于在处理器的设备内存中创建所述第一处理器页表,并在所述处理器所在主机的系统内存中创建所述第二处理器页表;初始化所述第一处理器页表和所述第二处理器页表,以同步所述第一处理器页表和所述第二处理器页表中的表项的初始值;建立所述第一处理器页表和所述第二处理器页表的之间的绑定关系。

43、在其中一个实施例中,所述读取模块,具体用于在请求确定处理器页表的当前表项状态的情况下,在所述第二处理器页表的条目中读取所述目标表项的第一取值。

44、在其中一个实施例中,所述读取模块,具体用于根据所述处理器的虚拟地址,确定所述目标表项的位置信息;根据所述目标表项的位置信息,在所述第二处理器页表的条目中读取所述目标表项的第一取值。

45、在其中一个实施例中,所述处理器页表的读写装置还包括:

46、更新模块,用于解析所述目标表项的第一取值,得到目标表项的表项状态字段;对所述目标表项的表项状态字段进行更新,得到所述目标表项的第二取值;

47、其中,所述表项状态字段包括以下一项或多项:有效性字段、解除映射字段、地址字段、权限字段。

48、在其中一个实施例中,所述更新模块,具体用于响应于稀疏资源的解除映射请求,在所述目标表项未处于解除映射状态的情况下,置位所述目标表项中的解除映射字段,并且调整所述有效性字段、所述地址字段、所述权限字段中的一项或多项,得到所述目标表项的第二取值;

49、其中,所述解除映射请求用于解除处理器页表中的表项与物理显存之间映射关系,所述解除映射状态为处理器页表中的表项与物理显存之间解除映射关系的状态。

50、在其中一个实施例中,所述处理器页表的读写装置还包括:

51、状态传播模块,用于在满足第一传播条件的情况下,从所述目标表项开始,逐级向上传播解除映射状态;

52、其中,所述第一传播条件包括当前等级中处于所述解除映射状态的表项数量等于所述当前等级中的表项总量。

53、在其中一个实施例中,所述更新模块,具体用于响应于稀疏资源的重映射请求,在所述目标表项处于解除映射状态的情况下,清除所述目标表项的解除映射字段,并且调整所述有效性字段、所述地址字段、所述权限字段中的一项或多项,得到所述目标表项的第二取值;

54、其中,所述重映射请求用于重新建立处理器页表中的表项与物理显存之间映射关系。

55、在其中一个实施例中,状态传播模块,还用于在满足第二传播条件的情况下,从所述目标表项开始,逐级向上清除解除映射状态;

56、其中,所述第二传播条件包括当前等级中处于所述解除映射状态的表项数量等于零。

57、在其中一个实施例中,所述处理器页表的读写装置还包括:

58、维护模块,用于对所述第一处理器页表和所述第二处理器页表执行页表维护操作;

59、所述页表维护操作包括以下一项或多项:地址翻译缓存刷新操作、内存管理维护操作和内存屏障操作;

60、其中,所述地址翻译缓存刷新操作用于在更新为所述目标表项的第二取值后缓存所述处理器中失效的地址翻译;所述内存管理维护操作用于维持所述处理器中地址翻译与所述目标表项一致;所述内存屏障操作用于向所述处理器同步所述第一处理器页表和所述第二处理器页表的页表写入顺序。

61、在其中一个实施例中,所述处理器包括图形处理器gpu。

62、第三方面,本技术还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面的处理器页表的读写方法。

63、第四方面,本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面的处理器页表的读写方法。

64、第五方面,本技术还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述第一方面的处理器页表的读写方法。

65、上述处理器页表的读写方法、装置、设备、存储介质及程序产品,在第二处理器页表的条目中读取目标表项的第一取值;其中,第二处理器页表为与第一处理器页表的条目数量和条目宽度相同的镜像页表,第一处理器页表位于处理器的设备内存中,第二处理器页表位于处理器所在主机的系统内存中。由于kmd在系统内存中读取处理器页表的表项,与相关技术中kmd从设备内存中的处理器页表中读取表项相比,读取路径极大缩短,从而能够降低处理器页表的访问延迟。