页表管理装置、方法、图形处理器及电子设备与流程

未命名 09-21 阅读:68 评论:0


1.本公开涉及芯片领域,尤其涉及一种页表管理装置、方法、图形处理器及电子设备。


背景技术:

2.图形处理器(graphics processing unit,gpu)通常具备多种图形处理引擎,其中几何处理引擎是用来将输入几何顶点的坐标及拓扑结构等描述进行空间变换,生成一个个图元块,用于后续像素处理。gpu几何处理引擎所实现的功能包括坐标变换、曲面细分、剪裁、视口转换、图元块的生成及输出等。在完成几何的数据处理后,gpu几何处理引擎会将图元块写入外部缓存。
3.对于gpu几何处理引擎,图元块往往被约定存于外部缓存的某个特定的物理地址段内。而gpu通常只使用虚拟地址,因此,在图元块的输出过程中需使用页表。页表是一种数据结构,可用于记录物理地址与虚拟地址的对应关系。现有技术通过申请页表,使得页表记录的物理地址属于约定的物理地址段,并将页表分配给对应图元块,即可使得图元块输出后能够存储于该约定的物理地址段。
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.图1示出现有技术的页表管理装置的示意图。
30.图2示出现有技术的页表管理装置申请的页表的示例以及将页表分配给图元块的示例性方法。
31.图3a示出根据本公开实施例的页表管理装置的结构的示意图。
32.图3b示出根据本公开实施例的页表缓存模块缓存的页表的地址的示意图。
33.图4示出根据本公开实施例的地址分配模块的结构的示意图。
34.图5示出根据本公开实施例的页表管理装置的示例性结构示意图。
35.图6示出根据本公开实施例的数据输出模块的结构的示意图。
36.图7示出根据本公开实施例的页表管理装置的示例性应用场景。
37.图8示出根据本公开实施例的页表管理方法的流程的示意图。
具体实施方式
38.以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
39.在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
40.另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
41.下面先介绍现有技术实现页表申请和页表分配的原理。
42.图1示出现有技术的页表管理装置的示意图。图2示出现有技术的页表管理装置申
请的页表的示例以及将页表分配给图元块的示例性方法。
43.如图1所示,现有技术的页表管理装置,主要包括页表缓存模块、页表空间预估模块、数据输出模块和页表控制模块。
44.其中,页表控制模块于控制页表的申请和关闭,通常初始情况下,页表控制模块第一次发出页表申请信号,接收页表申请信号的装置(例如处理器,未示出)会产生固定数目的页表。产生的页表对应外部缓存上固定的预分配地址段(物理地址),相邻的页表的页表地址连续。如图2所示,固定数目可以是n+1(n是自然数),页表控制模块第一次发出页表申请信号后,产生的页表可以包括页表0-页表n。
45.此后,每次有若干页表写满数据后,页表控制模块会发出页表关闭信号,随后发出同等数目的页表申请信号。接收页表关闭信号的装置(例如处理器,未示出)会关闭该写满数据的页表,并新产生相应数目的页表,使得可用的页表的数据维持恒定。
46.页表缓存模块用于存储可用的页表。页表缓存模块可采用先入先出的存储器(first input first output,fifo)实现,保证输出的页表地址连续。
47.在为图元块分配页表时,页表空间预估模块首先读取页表缓存模块中的可用页表的页表地址及当前图元块的参数,通过图元块的参数计算当前图元块的数据量,并根据内部的地址指针预估写入当前图元块后的结束地址。地址指针指示最近一次写入图元块后的结束地址。由于属于同一预分配地址段的多个页表的地址连续,因此,现有技术支持图元块写入单个页表,也支持图元块跨页表写入。例如在图2的示例中,图元块0写入页表0,图元块i为跨页表写入的图元块,并写入页表0和页表1对应的页表地址。
48.若发现结束地址未超出预分配地址段的地址上限值(在图2的示例中,页表0的起始地址可以是预分配地址段的地址下限值,页表n的结束地址可以是预分配地址段的地址上限值),说明将当前页表分配给当前图元块是可行的,当前页表有效。页表空间预估模块开始读取下一图元块的参数。若发现结束地址超出预分配地址段的地址上限值,说明如果将当前页表分配给当前图元块,图元块的写入会超出预分配的地址段,因此页表缓存模块中当前页表及其后面的页表都是无效的。在图2的示例中,由于图元块j写入页表n时未超出预分配地址段的地址上限值,图元块j+1写入页表n时超出预分配地址段的地址上限值,因此当前的页表可以指页表n,页表n以及在页表n之后产生的页表(未示出)均是无效的。
49.对此,页表空间预估模块会将内部的地址指针复位、卷绕回预分配的地址段的地址下限值,同时向页表控制模块发出页表清空信号,当接收到页表清空信号时,页表控制模块会发出固定数目(n+1)的页表关闭信号清空页表缓存模块,并发出固定数目(n+1)的页表申请信号,重新申请固定数目的页表。页表空间预估模块还向数据输出模块发出有效的数据阻塞信号,用于防止页表缓存模块清空前,数据输出模块从页表缓存模块中读走无效的页表进行图元块写入输出。当页表缓存模块被清空并重新写入新申请的页表后,该数据阻塞信号才可跳转为无效。
50.数据输出模块用于在未接收到数据阻塞信号时从页表缓存模块读取可用页表的页表地址,并根据读取的地址处理得到与图元块匹配的特定地址,再输出图元块。当接收到数据阻塞信号时,数据输出模块会将接到数据阻塞信号之前已经处理得到特定地址的图元块输出,从尚未处理得到特定地址的图元块开始进行阻塞,直至数据阻塞信号无效。当一个页表的地址写满后,数据输出模块会将该页表的页表地址传输给页表控制模块,由页表控
制模块关闭页表,同时从页表缓存模块中读取下一个页表的页表地址。
51.当gpu几何处理引擎处理得到的全部图元块均已由数据输出模块输出时,页表控制模块会清除页表缓存模块中所有未用的页表并进行页表关闭。
52.可以看出,现有技术实现页表申请和页表分配时流程复杂,增加了实现的难度。模块间互相依赖的条件较多,运行时相互牵制,不利于流程的流水化进行。此外,固定的预分配地址段、固定的页表数目极大降低了页表申请和页表分配的灵活性。由于流程复杂和灵活性差,因此gpu几何处理引擎的性能尚有优化空间。
53.有鉴于此,本公开提出了一种页表管理装置、方法、图形处理器及电子设备,根据本公开实施例的页表管理装置,通过优化页表分配方式,可以简化页表分配流程并提高灵活性,提升图形处理器的性能。
54.图3a示出根据本公开实施例的页表管理装置的结构的示意图。
55.如图3a所示,本公开提出一种页表管理装置,所述装置包括页表缓存模块、地址分配模块、数据输出模块,
56.页表缓存模块用于缓存可用的页表;
57.地址分配模块用于,在每次读取一个图元块的参数时,从页表缓存模块处读取一次页表,在读取的页表能够完整存储该图元块时,将读取的页表作为分配给该图元块的页表,记录分配给该图元块的页表的地址;
58.数据输出模块用于,在每次读取一个图元块时,从地址分配模块读取分配给该图元块的页表的地址,将读取的图元块与读取的地址匹配后输出。
59.举例来说,本公开实施例的页表缓存模块用途是缓存可用的页表,可采用先入先出的存储器(first input first output,fifo)实现。在图3a的示例中,页表缓存模块缓存的可用的页表可包括页表0-页表n。如何申请得到页表0-页表n的方式,可参见图5的相关描述。
60.地址分配模块用于在将页表分配给图元块前对页表是否能够完整存储该图元块进行预估,并记录分配给各图元块的页表的地址。为使得图元块与记录的地址对应,地址分配模块可以在每次读取一个图元块的参数时,从页表缓存模块处读取一次页表,并根据读取的参数预估读取的页表是否能够完整存储该图元块。如果能够完整存储该图元块,再将读取的页表作为分配给该图元块的页表,记录分配给该图元块的页表的地址。地址分配模块的示例性结构及功能可以参见下文及图4的相关描述。
61.在图3a的示例中,在读取图元块i的参数时,地址分配模块从页表缓存模块读取一次页表,假设读取的是页表1。在页表1能够完整存储图元块i时,将页表1作为分配给图元块i的页表,记录页表1的地址。
62.在一种可能的实现方式中,页表缓存模块缓存的相邻页表的地址连续或不连续。图3b示出根据本公开实施例的页表缓存模块缓存的页表的地址的示意图。
63.本公开实施例中,一个页表可分配给多个图元块,但仅为一个图元块分配一个页表,因此不存在图元块跨页表写入的问题,使得页表缓存模块存储的相邻页表的页表地址可以连续,也可以不连续。从而增强页表设置的灵活性。如图3b所示,页表0、页表1、页表n的地址是不连续的。其中,页表0分配给图元块0-图元块i-1,页表1分配给图元块i,页表n分配给图元块j。
64.数据输出模块可在每次读取一个图元块时,从地址分配模块读取分配给该图元块的页表的地址,将读取的图元块与读取的地址匹配后输出。将读取的图元块与读取的地址匹配,可以指根据读取的地址,从中截取特定地址段,使得该地址段恰好完整存储读取的图元块,并且不会影响读取的地址已经存储的其他图元块。其示例性实现方式可以参见下文对数据输出模块的功能的进一步描述。
65.在图3a的示例中,数据输出模块读取图元块i时,可从地址分配模块读取分配给图元块i的页表1的地址,将图元块i与分配给图元块i的页表1的地址匹配后输出。
66.示例性地,地址分配模块在记录分配给图元块i的页表1的地址时,可以增加图元块i的标识,使得数据输出模块读取分配给图元块i的页表的地址时,根据图元块i的标识找到具有相同标识的地址并读取,读取的地址即为分配给图元块i的页表1的地址。或者,也可以在记录分配给各图元块的页表的地址时,对地址的记录顺序进行设置,使得数据输出模块读取分配给图元块i的页表1的地址时,恰好可读到页表1的地址,不必基于标识进行确认。其具体实现方式,可以参见下文及图4对地址分配模块的结构及功能的进一步描述。
67.根据本公开实施例的页表管理装置,通过页表缓存模块缓存可用的页表,通过地址分配模块在每次读取一个图元块的参数时,从页表缓存模块处读取一次页表,在读取的页表能够完整存储该图元块时,将读取的页表作为分配给该图元块的页表,记录分配给该图元块的页表的地址。由于本公开实施例的每个图元块仅分配一个页表,因此不存在图元块跨页表写入的问题,使得页表缓存模块存储的相邻页表的页表地址可以连续,也可以不连续,不要求相邻的图元块在经数据输出模块输出之后必须存储在相邻的物理地址,因此使得页表分配的方式更灵活;通过数据输出模块在每次读取一个图元块时,从地址分配模块读取分配给该图元块的页表的地址,将读取的图元块与读取的地址匹配后输出,以流水化的形式进行地址传递,实现了页表流程的简化,进而使得图元块输出的效率也提高。本公开实施例的页表管理装置既简化了页表分配流程又提高了页表分配方式的灵活性,因此提升了图形处理器的性能。
68.下面介绍本公开实施例的地址分配模块的示例性结构及功能。图4示出根据本公开实施例的地址分配模块的结构的示意图。
69.如图4所示,在一种可能的实现方式中,地址分配模块包括页表空间预估单元和地址存储单元,页表空间预估单元用于,
70.在每次读取一个图元块的参数时,从页表缓存模块处读取一次页表;
71.根据页表空间预估单元存储的指针,确定读取的页表的可用数据量;
72.根据参数确定该图元块的数据量,判断读取的页表的可用数据量是否大于或等于该图元块的数据量;
73.在读取的页表的可用数据量大于或等于该图元块的数据量时,确定读取的页表能够完整存储该图元块,将读取的页表作为分配给该图元块的页表,将分配给该图元块的页表的地址写入地址存储单元;
74.以指针作为开始位置,确定将所述读取的页表分配给该图元块后的结束位置,根据结束位置更新指针。
75.举例来说,页表空间预估单元的功能之一是,在将页表分配给图元块前对页表是否能够完整存储该图元块进行预估。示例性地,页表空间预估单元可以在每次读取一个图
元块的参数时,从页表缓存模块处读取一次页表,读取的页表作为预估对象。
76.页表空间预估单元可存储有指针。如果该页表是尚未分配给任意图元块的页表,那么该指针可以指示该页表的地址下限值。如果该页表已经分配给至少一个图元块,那么该指针可以指示前次分配时页表的结束位置。参见图3b,如果读取页表0时,页表0尚未分配给任意图元块,那么指针可指示页表0的地址下限值;如果读取页表0时,页表0已经分配给图元块0,那么指针可指示图元块0写入页表0对应的物理地址后的结束位置。
77.根据存储的指针,页表空间预估单元可以确定读取的页表的可用数据量。可用数据量可以等于页表的地址上限值与指针指示的位置之间的数据量。这部分地址尚未被分配,可以用于存储图元块。
78.根据读取的图元块的参数,页表空间预估单元可以确定图元块的数据量。其中,一个图元块包括多组数据,图元块的参数可例如包括组数、每组的数据量、精度等等。则图元块的数据量可以等于(组数
×
每组的数据量)
×
精度。
79.图元块的参数还可包括初始标识或者结束标识。其中,包括初始标识的图元块可以是读取的第一个图元块,包括结束标识的图元块可以是读取的最后一个图元块。
80.在读取的页表的可用数据量大于或等于该图元块的数据量时,页表空间预估单元可确定读取的页表能够完整存储该图元块。读取的页表可以作为分配给该图元块的页表。之后,页表空间预估单元再将分配给该图元块的页表的地址写入地址存储单元。这里写入地址存储单元的地址可以是页表的完整地址,即该页表的地址下限值和地址上限值。图元块具体与该页表的哪一段地址匹配,可以由数据输出单元确定。
81.通过这种方式,可以完成页表是否能够完整存储图元块的预估。在页表能够完整存储图元块时,再将页表分配给图元块,保证页表分配的准确度。
82.在一种可能的实现方式中,页表空间预估单元还用于,
83.在读取的页表的可用数据量小于该图元块的数据量时,控制页表缓存模块将该页表出栈,并重新执行从页表缓存模块处读取一次页表及之后的操作;
84.其中,在重新读取一次页表之后,根据重新读取的页表的地址下限值更新指针。
85.举例来说,在读取的页表的可用数据量小于该图元块的数据量时,页表空间预估单元可确定读取的页表不能够完整存储该图元块。在此情况下,页表空间预估单元可以控制页表缓存模块将该页表出栈,再重新执行从页表缓存模块处读取一次页表及之后的操作。
86.此时重新读出的页表可以是在出栈的页表之后产生的第一个页表。例如参见图3b的示例,如果页表0出栈,则重新读出的页表可以是页表1。在重新读取一次页表之后,根据重新读取的页表的地址下限值更新指针。如果重新读出的页表能够完整存储该图元块,将重新读出的页表分配给该图元块并将页表的地址写入地址存储单元即可;如果重新读出的页表仍不能完整存储该图元块,将重新读取的页表再出栈,继续读取页表,直到读取发热页表能够完整存储图元块、将页表的地址写入地址存储单元为止。
87.通过这种方式,在页表不能够完整存储图元块时,也能为图元块分配合适的页表,提升页表管理的范围。
88.在一种可能的实现方式中,地址存储单元用于,
89.按照页表空间预估单元读取参数的顺序,记录分配给各参数对应的图元块的地
址。
90.举例来说,参见上文的相关描述,在记录分配给各图元块的页表的地址时,可以对地址的记录顺序进行设置,使得数据输出模块读取分配给图元块i的页表的地址时,恰好可读到页表i的地址,不必基于标识进行确认。
91.例如,可以设置为地址存储单元按照页表空间预估单元读取参数的顺序,记录分配给各参数对应的图元块的地址。数据输出模块读取图元块可以是顺序读取,并可以与页表空间预估单元读取参数的顺序一致。也就是说,只要按照页表空间预估单元读取参数的顺序,记录分配给各参数对应的图元块的地址,那么记录的地址的顺序也和数据输出模块读取图元块的顺序一致。地址存储单元可以是先入先出的存储器,在此情况下,数据输出单元读取的地址必然是分配给读取的图元块的地址,因此不必使用标识。
92.通过这种方式,可以降低地址存储单元的数据存储成本。
93.图5示出根据本公开实施例的页表管理装置的示例性结构示意图。
94.在一种可能的实现方式中,所述装置还包括页表控制模块,页表控制模块用于,
95.在初始状态下,发出第一页表申请信号,第一页表申请信号指示产生数量等于第一阈值的页表;
96.在结束状态下,将页表缓存模块中已产生且未分配的页表出栈,并发出第一页表关闭信号,第一页表关闭信号指示关闭已产生且未分配的页表。
97.举例来说,如图5所示,页表管理装置还可包括页表控制模块,用于申请页表、关闭页表、将页表缓存模块存储的页表出栈等等。本公开实施例为页表管理装置设置一个参数——第一阈值,用来指示可同时存在的页表的数量的最大值。第一阈值可以参数化,即可以根据用户需求增大或者减小,而不限于固定数值。
98.页表控制模块用于,在初始状态下,发出第一页表申请信号,第一页表申请信号指示产生数量等于第一阈值(例如等于n+1)的页表。初始状态可以指尚未进行页表分配的状态,可以是页表控制模块一经启动即进入,或者还可以设置页表控制模块监测地址分配模块读取的图元块的参数,在监测到图元块的参数包括初始标识时,确定进入初始状态等等。本公开实施例对于页表控制模块如何进入初始状态不作限制。第一页表申请信号可以发送至处理器(未示出),由处理器产生页表,并输出至页表缓存模块存储。
99.之后,页表管理装置即开始进行页表的分配及图元块的输出。在一种可能的实现方式中,数据输出模块还用于,在本次读取的地址与前次读取的地址不同时,输出前次读取的地址和有效的使能信号到页表控制模块;
100.页表控制模块还用于,在接收到有效的使能信号和前次读取的地址时,发出第二页表关闭信号,第二页表关闭信号指示关闭前次读取的地址对应的页表;在发出第二页表关闭信号后,发出第二页表申请信号,第二页表申请信号指示产生的页表数量与第二页表关闭信号指示关闭的页表数量相同。
101.图6示出根据本公开实施例的数据输出模块的结构的示意图。如图6所示,数据输出模块可包括寄存器和比较器,其中,寄存器用于存储前次读取的地址,比较器用于对本次读取的地址与前次读取的地址进行比较。
102.如果比较器确定在本次读取的地址(例如分配给图元块i的页表1的地址)与前次读取的地址(例如分配给图元块i-1的页表0的地址)不同,则可输出有效的使能信号,例如
输出“1”,表示前次读取的地址所属的页表0已经是无法存储完整图元块的、不可用的页表。数据输出模块可将前次读取的地址(页表0的地址)和有效的使能信号一同输出到页表控制模块。
103.如果比较器确定在本次读取的地址与前次读取的地址相同,则可输出无效的使能信号,例如输出“0”,表示前次读取的地址所属的页表仍然可用。数据输出模块可将前次读取的地址和无效的使能信号一同输出到页表控制模块。
104.页表控制模块还用于,在接收到有效的使能信号和前次读取的地址时,发出第二页表关闭信号,第二页表关闭信号指示关闭前次读取的地址对应的页表。在发出第二页表关闭信号后,还可以发出第二页表申请信号,第二页表申请信号指示产生的页表数量与第二页表关闭信号指示关闭的页表数量相同,从而将可用页表的数目补齐,达到第一阈值。第二页表关闭信号、第二页表申请信号,均可以发送至处理器(未示出),由处理器关闭页表,或者产生页表并输出至页表缓存模块存储。
105.页表控制模块还用于,在结束状态下,将页表缓存模块中已产生且未分配的页表出栈。结束状态可以指所有的图元块的页表分配均已完成的状态,可以设置页表控制模块监测地址分配模块读取的图元块的参数,在监测到读取的图元块的参数包括结束标识时,确定进入结束状态。本公开实施例对于页表控制模块如何进入结束状态不作限制。在结束状态下,页表控制模块还发出第一页表关闭信号,第一页表关闭信号指示关闭已产生且未分配的页表。第一页表关闭信号可以发送至处理器(未示出),由处理器关闭页表。
106.通过这种方式,将传统页表申请规则中约束初始状态下申请固定数目的页表,改为页表申请数目参数化,可动态申请页表,从而进一步增加页表管理的灵活性。
107.在一种可能的实现方式中,所述数据输出模块还记录地址偏移量,
108.将读取的图元块与读取的地址匹配后输出,包括:
109.在本次读取的地址与前次读取的地址不同时,将地址偏移量清零;
110.每读取数据量等于第二阈值的数据,根据读取该数据时的地址偏移量与读取该数据时读取的地址,得到该数据对应的地址;
111.将该数据与该数据对应的地址匹配后输出;
112.根据数据量等于第二阈值的数据占据的地址位数,更新地址偏移量。
113.举例来说,数据输出模块每次向外部缓存输出的数据量可以预先设置为第二阈值,通常设置为128bit或256bit或其他数值。因此,数据输出模块输出一个图元块时,可以是分多次输出。将读取的图元块与读取的地址匹配后输出,可以是在每读取该图元块的数据量等于第二阈值的数据时,为读取的数据匹配对应的地址后输出,直到整个图元块的所有数据均输出完毕。
114.对此,数据输出模块还记录页表内地址偏移量,表示下一次输出的数据所匹配的地址的起始位置与读取的地址的起始位置的偏移量。首先,数据输出模块本次读取的地址与前次读取的地址不同时,表示前次读取的地址对应的页表已不可用,此时记录的地址偏移量已无效,因此可将地址偏移量清零。之后,每读取数据量等于第二阈值的数据,可根据读取该数据时的地址偏移量与读取该数据时读取的地址,得到该数据对应的地址,将该数据与该数据对应的地址匹配后输出;最后,可根据数据量等于第二阈值的数据占据的地址位数,更新地址偏移量,更新的方式可以是在当前地址偏移量的基础上,增加该地址位数。
115.下面给出根据地址位数更新地址偏移量的示例。例如,假设第二阈值设置为128bit,占据16byte地址位数。数据输出模块读取图元块i时,本次读取的地址是页表1的地址,前次读取的地址是页表0的地址,则可将地址偏移量清零。数据输出模块第一次输出图元块i的数据时,输出128bit数据,此时根据地址位数16byte更新地址偏移量为16byte(16byte+0);数据输出模块第二次输出图元块i的数据时,再输出128bit数据,此时根据地址位数16byte更新地址偏移量为32byte(16byte+16byte)。以此类推,直到图元块i的数据均被输出完毕。
116.通过这种方式,实现了流水化的数据输出。
117.在一种可能的实现方式中,页表缓存模块按页表产生的顺序缓存可用的页表,地址分配模块每次从页表缓存模块处读取页表时,所述页表缓存模块将最早产生的页表输出。
118.举例来说,页表缓存模块缓存可用的页表时,可以设置为按页表产生的顺序缓存。地址分配模块每次从页表缓存模块处读取页表时,页表缓存模块将最早产生的页表输出。在此情况下,在某一页表成为不可用的页表之前,其后产生的页表不会被读出,使得相邻的图元块的存储地址也尽可能的连续,为后续存储图元块到外部缓存提供便利。
119.图7示出根据本公开实施例的页表管理装置的示例性应用场景。
120.如图7所示,本公开实施例的页表管理装置可以设置在图形处理器中,图形处理器中还可设置有图元块存储模块和图元块压缩模块。图元块存储模块和图元块压缩模块可位于gpu几何处理引擎中。
121.图元块存储模块用于存储图元块的参数以及图元块本身。页表管理装置可以从图元块存储模块处读取图元块的参数,可以从图元块存储模块处读取原始的图元块,也可以从图元块压缩模块处读取压缩后的图元块。
122.图元块压缩模块可以采用现有技术的方法对图元块进行压缩,此时可由图元块压缩模块负责确定压缩策略并存储。或者,本公开实施例还提出在图元块存储至图元块存储模块之前确定压缩策略,并使得压缩策略和图元块一同存储至图元块存储模块。在此情况下,图元块压缩模块可以从图元块存储模块直接获取确定好的压缩策略。
123.图元块包括多组数据,每组数据包括多个图元,在压缩图元块时,主要压缩图元块的顶点坐标。不同图元的顶点坐标可能出现重复,如果直接压缩可能会导致不必要的成本增加。为降低压缩成本,还可针对图元的顶点坐标构建索引,索引指示每个图元对应的顶点坐标的索引值组合,使得同一顶点坐标仅压缩一次,顶点坐标的索引可以不压缩。在顶点坐标压缩好后,再与顶点坐标的索引进行拼接,作为压缩后的图元块被页表管理装置读取。后续解压缩时根据索引值即可找到每个图元对应的顶点坐标并还原图元块。
124.页表管理装置还可以与图形处理器之外的处理器通信,将页表申请信号/关闭信号(包括上文所述的第一页表申请信号、第一页表关闭信号、第二页表申请信号、第二页表关闭信号)输出至处理器,由处理器根据指示完成页表的申请和关闭。
125.页表管理装置用于为gpu几何管理引擎提供可用的页表以确定图元块的存储位置,在读取到包括初始标识的图元块的参数时开始申请页表,并缓存申请到的页表。在可用的页表数量不足时,页表管理装置可以向处理器发出页表申请信号(包括上文所述的第一页表申请信号、第二页表申请信号)进行页表申请,并存储新产生的页表,使得可用的页表
数目满足需求;在页表不可用时,页表管理装置可向处理器发出页表关闭信号(上文所述的第二页表申请信号)进行页表关闭,并将缓存的不可用的页表出栈。在读取到包括结束标识的图元块的参数时关闭未用的页表,并将缓存的未用的页表出栈。
126.页表管理装置还负责为图元块分配页表,并在完成页表分配后,根据分配的页表确定与图元块匹配的特定地址(外部缓存上的地址),输出图元块到特定地址处。
127.本公开的页表管理装置,取消了固定预分配地址段的规则,改为支持接收不连续的、当下可用的页表,这不仅放宽了对输入页表的约束、增加了灵活性,还可省去复杂的地址卷绕逻辑。其次,更改了页表申请规则,不再约束初始状态下申请固定数目(第一阈值)的页表,而是将页表申请数目参数化,当可用的页表数目低于该数值(第一阈值)时即可动态申请页表,从而进一步增加灵活性。此外,页表管理装置实现了以流水化的形式进行页表传递,直至页表关闭,进一步提升了图形处理器性能。
128.图8示出根据本公开实施例的页表管理方法的流程的示意图。
129.如图8所示,本公开实施例还提供一种页表管理方法,应用于页表管理装置,所述装置包括页表缓存模块、地址分配模块、数据输出模块,所述方法包括步骤s81-步骤s83:
130.步骤s81,页表缓存模块缓存可用的页表;
131.步骤s82,在每次读取一个图元块的参数时,地址分配模块从页表缓存模块处读取一次页表,在读取的页表能够完整存储该图元块时,地址分配模块将读取的页表作为分配给该图元块的页表,记录分配给该图元块的页表的地址;
132.步骤s83,在每次读取一个图元块时,数据输出模块从地址分配模块读取分配给该图元块的地址,将读取的图元块与读取的地址匹配后输出。
133.在一种可能的实现方式中,所述装置还包括页表控制模块,所述方法还包括:
134.在初始状态下,页表控制模块发出第一页表申请信号,所述第一页表申请信号指示产生数量等于第一阈值的页表;
135.在结束状态下,页表控制模块将所述页表缓存模块中已产生且未分配的页表出栈,并发出第一页表关闭信号,所述第一页表关闭信号指示关闭已产生且未分配的页表。
136.在一种可能的实现方式中,所述方法还包括:
137.在本次读取的地址与前次读取的地址不同时,数据输出模块输出前次读取的地址和有效的使能信号到所述页表控制模块;
138.接收到所述有效的使能信号和所述前次读取的地址时,页表控制模块发出第二页表关闭信号,所述第二页表关闭信号指示关闭所述前次读取的地址对应的页表;
139.在发出所述第二页表关闭信号后,页表控制模块发出第二页表申请信号,所述第二页表申请信号指示产生的页表数量与所述第二页表关闭信号指示关闭的页表数量相同。
140.在一种可能的实现方式中,所述地址分配模块包括页表空间预估单元和地址存储单元,所述在每次读取一个图元块的参数时,地址分配模块从所述页表缓存模块处读取一次页表,在读取的页表能够完整存储该图元块时,地址分配模块将读取的页表作为分配给该图元块的页表,记录分配给该图元块的页表的地址,包括:
141.在每次读取一个图元块的参数时,页表空间预估单元从所述页表缓存模块处读取一次页表;
142.页表空间预估单元根据所述页表空间预估单元存储的指针,确定读取的页表的可
用数据量;
143.页表空间预估单元根据所述参数确定该图元块的数据量,判断读取的页表的可用数据量是否大于或等于该图元块的数据量;
144.在读取的页表的可用数据量大于或等于该图元块的数据量时,页表空间预估单元确定读取的页表能够完整存储该图元块,将读取的页表作为分配给该图元块的页表,将分配给该图元块的页表的地址写入所述地址存储单元;
145.页表空间预估单元以所述指针作为开始位置,确定将所述读取的页表分配给该图元块后的结束位置,根据所述结束位置更新所述指针。
146.在一种可能的实现方式中,所述在每次读取一个图元块的参数时,地址分配模块从所述页表缓存模块处读取一次页表,在读取的页表能够完整存储该图元块时,地址分配模块将读取的页表作为分配给该图元块的页表,记录分配给该图元块的页表的地址,还包括:
147.在读取的页表的可用数据量小于该图元块的数据量时,页表空间预估单元控制所述页表缓存模块将该页表出栈,并重新执行从所述页表缓存模块处读取一次页表及之后的操作;
148.其中,在重新读取一次页表之后,页表空间预估单元根据重新读取的页表的地址下限值更新所述指针。
149.在一种可能的实现方式中,所述地址存储单元按照所述页表空间预估单元读取参数的顺序,记录分配给各参数对应的图元块的地址。
150.在一种可能的实现方式中,所述页表缓存模块按页表产生的顺序缓存可用的页表,所述地址分配模块每次从所述页表缓存模块处读取页表时,所述页表缓存模块将最早产生的页表输出。
151.在一种可能的实现方式中,所述页表缓存模块缓存的相邻页表的地址连续或不连续。
152.在一种可能的实现方式中,一个图元块包括多组数据,所述数据输出模块还记录地址偏移量,
153.所述将读取的图元块与读取的地址匹配后输出,包括:
154.在本次读取的地址与前次读取的地址不同时,将所述地址偏移量清零;
155.每读取数据量等于第二阈值的数据,根据读取该数据时的地址偏移量与读取该数据时读取的地址,得到该数据对应的地址;
156.将该数据与该数据对应的地址匹配后输出;根据数据量等于所述第二阈值的数据占据的地址位数,更新所述地址偏移量。
157.本公开实施例还提供一种图形处理器,包括以上所述的页表管理装置。
158.本公开实施例还提供一种电子设备,包括以上所述的图形处理器。
159.电子设备可以是智能手机、上网本、平板电脑、笔记本电脑、可穿戴电子设备、tv、虚拟现实设备等等,只要电子设备可包括图形处理器即可,本公开实施例对于电子设备的具体类型不作限制。
160.以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技
术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

技术特征:
1.一种页表管理装置,其特征在于,所述装置包括页表缓存模块、地址分配模块、数据输出模块,所述页表缓存模块用于缓存可用的页表;所述地址分配模块用于,在每次读取一个图元块的参数时,从所述页表缓存模块处读取一次页表,在读取的页表能够完整存储该图元块时,将读取的页表作为分配给该图元块的页表,记录分配给该图元块的页表的地址;所述数据输出模块用于,在每次读取一个图元块时,从所述地址分配模块读取分配给该图元块的页表的地址,将读取的图元块与读取的地址匹配后输出。2.根据权利要求1所述的装置,其特征在于,所述装置还包括页表控制模块,所述页表控制模块用于,在初始状态下,发出第一页表申请信号,所述第一页表申请信号指示产生数量等于第一阈值的页表;在结束状态下,将所述页表缓存模块中已产生且未分配的页表出栈,并发出第一页表关闭信号,所述第一页表关闭信号指示关闭已产生且未分配的页表。3.根据权利要求2所述的装置,其特征在于,所述数据输出模块还用于,在本次读取的地址与前次读取的地址不同时,输出前次读取的地址和有效的使能信号到所述页表控制模块;所述页表控制模块还用于,在接收到所述有效的使能信号和所述前次读取的地址时,发出第二页表关闭信号,所述第二页表关闭信号指示关闭所述前次读取的地址对应的页表;在发出所述第二页表关闭信号后,发出第二页表申请信号,所述第二页表申请信号指示产生的页表数量与所述第二页表关闭信号指示关闭的页表数量相同。4.根据权利要求1所述的装置,其特征在于,所述地址分配模块包括页表空间预估单元和地址存储单元,所述页表空间预估单元用于,在每次读取一个图元块的参数时,从所述页表缓存模块处读取一次页表;根据所述页表空间预估单元存储的指针,确定读取的页表的可用数据量;根据所述参数确定该图元块的数据量,判断读取的页表的可用数据量是否大于或等于该图元块的数据量;在读取的页表的可用数据量大于或等于该图元块的数据量时,确定读取的页表能够完整存储该图元块,将读取的页表作为分配给该图元块的页表,将分配给该图元块的页表的地址写入所述地址存储单元;以所述指针作为开始位置,确定将所述读取的页表分配给该图元块后的结束位置,根据所述结束位置更新所述指针。5.根据权利要求4所述的装置,其特征在于,所述页表空间预估单元还用于,在读取的页表的可用数据量小于该图元块的数据量时,控制所述页表缓存模块将该页表出栈,并重新执行从所述页表缓存模块处读取一次页表及之后的操作;其中,在重新读取一次页表之后,根据重新读取的页表的地址下限值更新所述指针。6.根据权利要求4所述的装置,其特征在于,所述地址存储单元用于,按照所述页表空间预估单元读取参数的顺序,记录分配给各参数对应的图元块的地址。
7.根据权利要求1所述的装置,其特征在于,所述页表缓存模块按页表产生的顺序缓存可用的页表,所述地址分配模块每次从所述页表缓存模块处读取页表时,所述页表缓存模块将最早产生的页表输出。8.根据权利要求1所述的装置,其特征在于,所述页表缓存模块缓存的相邻页表的地址连续或不连续。9.根据权利要求3所述的装置,其特征在于,所述数据输出模块还记录地址偏移量,所述将读取的图元块与读取的地址匹配后输出,包括:在本次读取的地址与前次读取的地址不同时,将所述地址偏移量清零;每读取数据量等于第二阈值的数据,根据读取该数据时的地址偏移量与读取该数据时读取的地址,得到该数据对应的地址;将该数据与该数据对应的地址匹配后输出;根据数据量等于所述第二阈值的数据占据的地址位数,更新所述地址偏移量。10.一种页表管理方法,其特征在于,应用于页表管理装置,所述装置包括页表缓存模块、地址分配模块、数据输出模块,所述方法包括:所述页表缓存模块缓存可用的页表;在每次读取一个图元块的参数时,所述地址分配模块从所述页表缓存模块处读取一次页表,在读取的页表能够完整存储该图元块时,所述地址分配模块将读取的页表作为分配给该图元块的页表,记录分配给该图元块的页表的地址;在每次读取一个图元块时,所述数据输出模块从所述地址分配模块读取分配给该图元块的页表的地址,将读取的图元块与读取的地址匹配后输出。11.一种图形处理器,其特征在于,包括权利要求1-9中任一项所述的页表管理装置。12.一种电子设备,其特征在于,包括权利要求11所述的图形处理器。

技术总结
本公开涉及芯片领域,提出了一种页表管理装置、方法、图形处理器及电子设备,所述装置包括页表缓存模块、地址分配模块、数据输出模块,页表缓存模块用于缓存可用的页表;地址分配模块用于在每次读取一个图元块的参数时,从页表缓存模块处读取一次页表,在读取的页表能够完整存储该图元块时,将读取的页表作为分配给该图元块的页表,记录分配给该图元块的页表的地址;数据输出模块用于在每次读取一个图元块时,从地址分配模块读取分配给该图元块的页表的地址,将读取的图元块与读取的地址匹配后输出。根据本公开实施例的页表管理装置,通过优化页表分配方式,可以简化页表分配流程并提高灵活性,提升图形处理器的性能。提升图形处理器的性能。提升图形处理器的性能。


技术研发人员:请求不公布姓名
受保护的技术使用者:摩尔线程智能科技(北京)有限责任公司
技术研发日:2023.08.22
技术公布日:2023/9/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐