首页 / 专利库 / 专利权 / 申请 / 国际申请 / 请求书 / 请求 / 用于避免页面错误的GPU存储缓冲器预提取和预备份信令

用于避免页面错误的GPU存储缓冲器预提取和预备份信令

阅读:897发布:2023-03-12

专利汇可以提供用于避免页面错误的GPU存储缓冲器预提取和预备份信令专利检索,专利查询,专利分析的服务。并且本 发明 提出用于IO装置(例如,GPU)的 请求 调页的技术,所述技术利用预提取和预备份通知事件信令以减少与请求调页相关联的时延。通过在所述IO装置实际上请求未备份的 存储器 之前执行所述请求调页操作来限制页面错误。,下面是用于避免页面错误的GPU存储缓冲器预提取和预备份信令专利的具体信息内容。

1.一种用于输入/输出装置中的请求调页的方法,所述方法包括:
由所述输入/输出装置跟踪执行于所述输入/输出装置上的应用程序在虚拟存储器系统中的映射页面的第一部分的使用,其中映射页面的至少所述第一部分存储在缓冲器中,其中所述使用包括数个到存储映射页面的所述第一部分的所述缓冲器的读和写,且其中映射页面的所述第一部分表示与所述应用程序相关联的若干页面的一部分,且其中由处理器将映射页面的所述第一部分备份到物理存储器中;
由所述输入/输出装置确定由所述输入/输出装置在所述缓冲器中存取的当前位置是否已跨越印,其中所述水印是所述缓冲器中代表映射页面的所述第一部分的使用百分数的位置;以及
响应于由所述输入/输出装置在所述缓冲器中存取的所述当前位置已跨越所述水印的确定且在未接收到页面错误的情况下,用信号通知所述处理器将映射页面的第二部分备份在物理存储器中,其中映射页面的所述第二部分表示与所述应用程序相关联的所述若干页面的不同部分。
2.根据权利要求1所述的方法,其进一步包括:
由所述处理器将映射页面的所述第二部分备份到物理存储器。
3.根据权利要求2所述的方法,其进一步包括:
在所述输入/输出装置处从所述处理器接收指示映射页面的所述第二部分的所述备份完成的信号。
4.根据权利要求1所述的方法,其中所述缓冲器为命令流缓冲器、顶点缓冲器、纹理缓冲器、指令流缓冲器、光栅化缓冲器和中间阶段流缓冲器中的一者。
5.根据权利要求4所述的方法,其中所述缓冲器为所述光栅化缓冲器且其中所述应用程序为转移BLT和砖块式再现器解析中的一者。
6.根据权利要求1所述的方法,其进一步包括:
从所述处理器接收所述水印。
7.根据权利要求1所述的方法,其中所述输入/输出装置是图形处理单元
8.根据权利要求1所述的方法,其中所述处理器是中央处理单元。
9.一种经配置以执行输入/输出装置的请求调页的设备,所述设备包括:
输入/输出装置,其经配置以:
跟踪执行于所述输入/输出装置上的应用程序在虚拟存储器系统中的映射页面的第一部分的使用,其中映射页面的至少所述第一部分存储于缓冲器中,其中所述使用包括数个到存储映射页面的所述第一部分的所述缓冲器的读和写,且其中映射页面的所述第一部分表示与所述应用程序相关联的若干页面的一部分,且其中由处理器将映射页面的所述第一部分备份到物理存储器中;
确定由所述输入/输出装置在所述缓冲器中存取的当前位置是否已跨越水印,其中所述水印是所述缓冲器中代表映射页面的所述第一部分的使用百分数的位置;以及响应于由所述输入/输出装置在所述缓冲器中存取的所述当前位置已跨越所述水印的确定且在未接收到页面错误的情况下,用信号通知所述处理器将映射页面的第二部分备份在物理存储器中,其中映射页面的所述第二部分表示与所述应用程序相关联的所述若干页面的不同部分。
10.根据权利要求9所述的设备,其进一步包括:
所述处理器,其中所述处理器经配置以将映射页面的所述第二部分备份到物理存储器。
11.根据权利要求10所述的设备,其中所述输入/输出装置进一步经配置以:
从所述处理器接收指示映射页面的所述第二部分的所述备份完成的信号。
12.根据权利要求9所述的设备,其中所述缓冲器为命令流缓冲器、顶点缓冲器、纹理缓冲器、指令流缓冲器、光栅化缓冲器和中间阶段流缓冲器中的一者。
13.根据权利要求12所述的设备,其中所述缓冲器为所述光栅化缓冲器且其中所述应用程序为块转移BLT和砖块式再现器解析中的一者。
14.根据权利要求9所述的设备,其中所述输入/输出装置进一步经配置以:
从所述处理器接收所述水印。
15.根据权利要求9所述的设备,其中所述输入/输出装置是图形处理单元。
16.根据权利要求9所述的设备,其中所述处理器为中央处理单元。
17.根据权利要求9所述的设备,其中所述输入/输出装置和所述处理器装纳在移动装置内。
18.一种经配置以执行输入/输出装置的请求调页的设备,其包括:
用于跟踪执行于所述输入/输出装置上的应用程序在虚拟存储器系统中的映射页面的第一部分的使用的装置,其中映射页面的至少所述第一部分存储于缓冲器中,其中所述使用包括数个到存储映射页面的所述第一部分的所述缓冲器的读和写,且其中映射页面的所述第一部分表示与所述应用程序相关联的若干页面的一部分,且其中由处理器将映射页面的所述第一部分备份到物理存储器中;
用于确定由所述输入/输出装置在所述缓冲器中存取的当前位置是否已跨越水印的装置,其中所述水印是所述缓冲器中代表映射页面的所述第一部分的使用百分数的位置;以及
用于响应于由所述输入/输出装置在所述缓冲器中存取的所述当前位置已跨越所述水印的确定且在未接收到页面错误的情况下用信号通知所述处理器将映射页面的第二部分备份在物理存储器中的装置,其中映射页面的所述第二部分表示与所述应用程序相关联的所述若干页面的不同部分。
19.一种用于输入/输出装置中的请求调页的方法,其包括:
由所述输入/输出装置跟踪执行于所述输入/输出装置上的应用程序在虚拟存储器系统中的映射页面的第一部分的页面表中的当前存取位置,所述页面表映射映射页面的所述第一部分,且其中映射页面的所述第一部分表示与所述应用程序相关联的若干页面的一部分,其中映射页面的所述第一部分的页面表项存储在存储器管理单元中;
由所述输入/输出装置确定由所述输入/输出装置在所述页面表的最后一页面中存取的所述当前存取位置是否已跨越水印;以及
响应于由所述输入/输出装置在所述页面表的所述最后一页面中存取的所述当前存取位置已跨越所述水印的确定且在未接收到翻译后备缓冲器(TLB)失败的情况下,用信号通知所述存储器管理单元提取映射页面的第二部分的页面表项,其中映射页面的所述第二部分表示与所述应用程序相关联的所述若干页面的不同部分。
20.根据权利要求19所述的方法,其进一步包括:
由所述存储器管理单元提取映射页面的所述第二部分的页面表项。
21.根据权利要求19所述的方法,其进一步包括:
从处理器接收所述水印。
22.根据权利要求19所述的方法,其中所述输入/输出装置是图形处理单元。
23.根据权利要求19所述的方法,其中所述存储器管理单元为输入/输出存储器管理单元。
24.一种经配置以执行输入/输出装置的请求调页的设备,其包括:
输入/输出装置,其经配置以:
跟踪执行于所述输入/输出装置上的应用程序在虚拟存储器系统中的映射页面的第一部分的页面表中的当前存取位置,所述页面表映射映射页面的所述第一部分,其中映射页面的所述第一部分表示与所述应用程序相关联的若干页面的一部分,其中映射页面的所述第一部分的页面表项存储在存储器管理单元中;
确定由输入/输出装置在所述页面表的最后一页面中存取的所述当前存取位置是否已跨越水印;以及
响应于由所述输入/输出装置在所述页面表的所述最后一页面中存取的所述当前存取位置已跨越所述水印的确定且在未接收到翻译后备缓冲器(TLB)失败的情况下,用信号通知所述存储器管理单元提取映射页面的第二部分的页面表项,其中映射页面的所述第二部分表示与所述应用程序相关联的所述若干页面的不同部分。
25.根据权利要求24所述的设备,其进一步包括:
所述存储器管理单元,其中所述存储器管理单元经配置以:
提取页面的所述第二部分的映射页面表项。
26.根据权利要求24所述的设备,其中所述输入/输出装置进一步经配置以:
从处理器接收所述水印。
27.根据权利要求24所述的设备,其中所述输入/输出装置是图形处理单元。
28.根据权利要求24所述的设备,其中所述存储器管理单元为输入/输出存储器管理单元。
29.根据权利要求24所述的设备,其中所述输入/输出装置和所述存储器管理单元装纳在移动装置内。
30.一种经配置以执行输入/输出装置的请求调页的设备,其包括:
用于跟踪执行于所述输入/输出装置上的应用程序在虚拟存储器系统中的映射页面的第一部分的页面表中的当前存取位置的装置,所述页面表映射映射页面的所述第一部分,其中映射页面的所述第一部分表示与所述应用程序相关联的若干页面的一部分,且其中映射页面的所述第一部分的页面表项存储在存储器管理单元中;
用于由所述输入/输出装置确定由所述输入/输出装置在所述页面表的最后一页面中存取的所述当前存取位置是否已跨越水印的装置;以及
用于响应于由所述输入/输出装置在所述页面表的所述最后一页面中存取的所述当前存取位置已跨越所述水印且在未接收到翻译后备缓冲器(TLB)失败的情况下用信号通知所述存储器管理单元提取映射页面的第二部分的页面表项的装置,其中映射页面的所述第二部分表示与所述应用程序相关联的所述若干页面的不同部分。

说明书全文

用于避免页面错误的GPU存储缓冲器预提取和预备份信令

技术领域

[0001] 本发明涉及用于图形处理的技术,且更具体来说涉及用于来自图形处理单元(GPU)的用于避免虚拟存储器系统中的页面错误的预提取和预备份信令的技术。

背景技术

[0002] 可由图形处理单元(GPU)产生供显示的视觉内容(例如,图形用户接口和视频游戏的内容)。GPU可将二维或三维(3D)对象转换成可显示的二维(2D)像素表示。另外,GPU正越来越多地用于执行某些类型的计算,所述计算通过GPU核心的高度并行性质得到有效地处置。此些应用程序有时被称为通用GPU(GPGPU)应用程序。将关于3D对象的信息转换成可显示的位图以及大型GPGPU应用程序需要相当大的存储器和处理功率。常常可在存储器存取期间发生GPU处理无效率,因为缺乏用于停止和恢复执行于GPU上的高度并行作业的技术。因而,使用复杂且昂贵的存储器控制器以及中央处理单元(CPU)监察来改善存储器存取效率。

发明内容

[0003] 一般来说,本发明描述用于来自图形处理单元(GPU)的用于避免虚拟存储器系统中的页面错误的预提取和预备份信令的技术。
[0004] 在本发明的一个实例中,一种用于输入/输出装置中的请求调页的方法包括:由输入/输出装置跟踪由执行于输入/输出装置上的应用程序对虚拟存储器系统中的映射页面的第一部分的使用,其中映射页面的所述第一部分表示所述应用程序可能需要的若干页面的一部分,且其中映射页面的所述第一部分备份到物理存储器中。输入/输出装置可进一步经配置以确定所述使用是否跨越阈值,且在确定跨越所述阈值的情况下用信号通知处理器将页面的第二部分备份在物理存储器中,其中页面的所述第二部分表示所述应用程序可能需要的所述若干页面的不同部分。
[0005] 在上述技术的一个实例中,阈值为表示映射页面的第一部分的使用百分数的印,且映射页面的至少第一部分存储在缓冲器中。在此情况下,水印为缓冲器内的位置。输入/输出装置通过确定由输入/输出装置在缓冲器中存取的当前位置是否越过水印来确定所述使用是否跨越阈值。
[0006] 在本发明的另一实例中,一种用于输入/输出装置中的请求调页的方法包括由输入/输出装置跟踪由执行于输入/输出装置上的应用程序对虚拟存储器系统中的映射页面的第一部分的使用,其中映射页面的所述第一部分表示所述应用程序可能需要的若干页面的一部分,且其中映射页面的第一部分的页面表项存储在存储器管理单元中。输入/输出装置可进一步经配置以确定所述使用是否跨越阈值,且在确定跨越阈值的情况下用信号通知处理器提取映射页面的第二部分的页面表项,其中页面的所述第二部分表示所述应用程序可能需要的所述若干页面的不同部分。
[0007] 在上述技术的一个实例中,阈值为表示映射页面的第一部分的使用百分数的水印。更具体来说,水印可为映射页面的第一部分的最后一页面内的位置。在此情况下,输入/输出装置通过确定由输入/输出装置在最后一页面中存取的当前位置是否越过水印来确定所述使用是否跨越阈值。
[0008] 也就设备及计算机可读存储媒体来描述本发明的技术,所述计算机可读存储媒体存储用于致使处理器执行所述技术的指令。一或多个实例的细节陈述于附图及以下描述中。其它特征、目标及优势将从描述及附图和从权利要求书中显而易见。

附图说明

[0009] 图1是展示经配置以使用本发明的技术的实例计算装置的框图
[0010] 图2是说明图1的系统存储器的实例物理页的概念图
[0011] 图3是展示经配置以使用本发明的技术的实例处理单元的框图。
[0012] 图4是展示根据本发明的技术的用于预提取和预备份信令的实例设备的框图。
[0013] 图5是展示根据本发明的一个实例的预备份信号触发的一个实例的概念图。
[0014] 图6是展示根据本发明的一个实例的预提取信号触发的一个实例的概念图。
[0015] 图7是根据本发明的一个实例的用于执行一种方法的流程图
[0016] 图8是根据本发明的另一实例的用于执行一种方法的流程图。

具体实施方式

[0017] 本发明涉及用于图形处理的技术,且更具体来说涉及用于来自图形处理单元的用于避免虚拟存储器系统中的页面错误的预提取和预备份信令的技术。
[0018] 运行于中央处理单元(CPU)上的现代操作系统(OS)通常使用虚拟存储器方案来将存储器分配到操作于CPU上的多个程序。虚拟存储器为将计算机系统的物理存储器(例如,RAM、磁盘存储器等)虚拟化以使得应用程序需求仅指一组存储器(即,虚拟存储器)的存储器管理技术。虚拟存储器由映射到物理存储器中的位置的相连地址空间组成。以此方式,物理存储器的分段被“隐藏”而使应用程序看不到,应用程序改为可与虚拟存储器的相连相互作用。虚拟存储器中的相连块通常排列成“页面”。每一页面为虚拟存储器地址的某种固定长度的相连区块。通常由存储器管理单元(MMU)来处置从虚拟存储器到物理存储器的映射。当前映射到物理存储器中的位置的虚拟存储器空间被看作“备份”到物理存储器。
[0019] 通过翻译后备缓冲器(TLB)来存储虚拟存储器空间中的位置到物理存储器的映射。所述TLB由MMU用于将虚拟地址快速翻译为物理地址。可将TLB实施为将虚拟存储器地址用作输入且输出物理存储器地址的内容可寻址存储器(CAM)。MMU可随后使用输出的物理存储器地址来快速地检索所请求的数据。
[0020] 一些应用程序可在执行期间使用大量存储器。然而,可能同时不需要可由应用程序使用的存储器的量。代替将所有页面映射到程序可能需要的虚拟存储器中的做法是,可仅针对实际上当前正由程序请求的存储器来映射页面。如果程序请求先前尚未映射的数据,那么映射虚拟存储器的额外页面。这被称为请求调页或请求存储器备份。如果程序请求尚未映射的数据,那么触发页面错误。响应于页面错误,MMU可随后映射正请求的物理存储器位置。响应于页面错误大体上减缓虚拟存储器系统的响应时间。
[0021] 虚拟存储器系统的响应时间的减少也可由TLB失败引起。当从备份的页面请求数据时,发生TLB失败,但页面中的虚拟存储器地址的实际映射当前不存储在TLB中。在许多情况下,TLB可能不存储所有页面映射,即使页面先前已被备份仍如此。当发生TLB失败时,MMU存取合乎需要的映射且将它们存储在TLB中。
[0022] 现代图形处理单元(GPU)具有类似于CPU的页面出错能,从而允许在GPU存取时间不存在存储器分配。然而,相对于GPU的计算功率,用于处置GPU中的页面错误的时延使请求填充页面出错变得不合乎需要。时延可为用户显而易见,因此产生令人不满意的用户经验。这对于不能有效地重新调度工作以涵盖参与从存储器调页的时延的GPU系统来说可尤其成问题。
[0023] 历史上,例如图形处理单元(GPU)的输入/输出(I/O)装置已要求在发起对抗由此装置存取的任何存储缓冲器的作业之前将那些缓冲器全部备份到物理存储器中且映射到IO存储器管理单元(IOMMU)虚拟存储器空间中。在此上下文中,缓冲器为用来临时保存数据的物理存储装置的区域。当随虚拟存储器系统一起使用时,在软件中将缓冲器虚拟地实施为到物理存储器中的位置的指针。以此方式,虚拟软件缓冲器被“备份”在物理存储器中。
[0024] 随着缓冲器大小的增长,移到请求调页模型已变得合乎需要,如发生在最现代的中央处理单元CPU/OS中。在此情境中,当IO装置试图存取当前未备份(及映射)到表示缓冲器的一部分的物理存储器中的存储器中时,在IOMMU内触发页面错误。当发生页面错误时,IO装置暂停对出错作业的处理,且切换到另一作业或暂停直到错误处置完成。当发生错误时,通常经由来自IO子系统(例如,IOMMU)的指示错误的中断来用信号通知主机CPU。在此情况下,OS确定错误为请求页面错误且将讨论中的某量的缓冲器从备份存储器移到物理存储器中并将它映射到IOMMU中。随后,OS用信号通知IO子系统已发生备份,从而允许出错的IO作业继续。
[0025] 请求调页是一种用以在利用时间填充存储器的有价值技术。然而,请求页面错误的性能成本可极高,特别是在IO装置(例如,GPU)不能够在错误处置期间调度其它工作的情况下。错误处置为长路径,包含IO子系统到CPU中断处置且随后到磁盘存取以用于备份存储器检索。因此在可能的情况下避免页面错误是高度合乎需要的。
[0026] 鉴于这些缺点,本发明提议用于IO装置(例如,GPU)的请求调页的技术,所述技术利用预提取和预备份通知事件信令以减少与请求调页相关联的时延。根据本发明的一个实例,通过在IO装置实际上请求未备份的存储器之前执行请求调页操作来限制页面错误。如果IO装置能够在当前处理期具备“预见”能力同时仍在所映射的存储器中工作,那么IO装置可预期未来的页面错误且可将预备份信号发送到主机CPU OS/驱动器以请求备份将在未来存取的存储器。如果信令发生得足够早以隐藏页面备份的时延,那么将在IO装置存取存储器之前备份所述存储器,且因此避免页面错误。
[0027] 在本发明的一个实例中,一种用于输入/输出装置中的请求调页的方法包括:由输入/输出装置跟踪由执行于输入/输出装置上的应用程序对虚拟存储器系统中的映射页面的第一部分的使用,其中映射页面的所述第一部分表示所述应用程序可能需要的若干页面的一部分,且其中映射页面的所述第一部分备份到物理存储器中。输入/输出装置可进一步经配置以确定所述使用是否跨越阈值,且在确定跨越所述阈值的情况下用信号通知处理器将页面的第二部分备份到物理存储器中,其中页面的所述第二部分表示所述应用程序可能需要的所述若干页面的不同部分。
[0028] 在本发明的另一实例中,一种用于输入/输出装置中的请求调页的方法包括:由输入/输出装置跟踪由执行于所述输入/输出装置上的应用程序对虚拟存储器系统中的映射页面的第一部分的使用,其中映射页面的所述第一部分表示所述应用程序可能需要的若干页面的一部分,且其中映射页面的第一部分的页面表项存储在存储器管理单元中。输入/输出装置可进一步经配置以确定使用是否跨越阈值,且在确定跨越阈值的情况下用信号通知处理器提取映射页面的第二部分的页面表项,其中页面的所述第二部分表示所述应用程序可能需要的所述若干页面的不同部分。
[0029] 图1是说明实例计算装置2的框图,所述计算装置可用于实施用于IO装置中的请求调页的本发明的技术。计算装置2可包括例如个人计算机、台式计算机、膝上型计算机、平板型计算机、计算机工作站、视频游戏平台或控制台、例如(例如)蜂窝式或卫星电话的移动电话、固定电话、因特网电话、所谓的智能电话、例如便携式视频游戏装置或个人数字助理(PDA)的手持式装置、个人音乐播放器、视频播放器、显示装置、电视、电视机顶盒、服务器、中间网络装置、主计算机、任何移动装置,或处理和/或显示图形数据的任何其它类型的装置。
[0030] 如图1的实例中说明,计算装置2可包含用户输入接口4、中央处理单元(CPU)6、一或多个存储器控制器8、系统存储器10、图形处理单元(GPU)12、图形存储器14、显示接口16、显示器18和总线20及22。应注意,在一些实例中,图形存储器14可与GPU 12“在芯片上”。在一些情况下,图1中所示的所有硬件元件可在芯片上(例如,在系统芯片(SoC)设计中)。用户输入接口4、CPU 6、存储器控制器8、GPU 12及显示接口16可使用总线20彼此通信。存储器控制器8及系统存储器10也可使用总线22彼此通信。总线20、22可为多种总线结构中的任一者,例如第三代总线(例如,HyperTransport总线或InfiniBand总线)、第二代总线(高级图形端口总线、外围组件互连(PCI)高速总线或先进可扩展接口(AXI)总线)或另一类型的总线或装置互连件。应注意,图1中所示的不同组件之间的总线和通信接口的特定配置仅仅为示范性的,且具有相同或不同组件的计算装置和/或其它图形处理系统的其它配置可用于实施本发明的技术。
[0031] CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到计算装置2以致使CPU 6执行一或多个软件应用程序。执行于CPU 6上的软件应用程序可包含例如操作系统、字处理器应用程序、电子邮件应用程序、总分析表应用程序、媒体播放器应用程序、视频游戏应用程序、图形用户接口应用程序或另一程序。另外,CPU 6可执行GPU驱动器7以用于控制GPU 12的操作。用户可经由例如键盘鼠标、麦克触摸板触摸屏或经由用户输入接口4耦合到计算装置2的另一输入装置的一或多个输入装置(未图示)将输入提供到计算装置2。
[0032] 执行于CPU 6上的软件应用程序可包含命令CPU 6致使向显示器18再现图形数据的一或多个图形再现指令。在一些实例中,软件指令可符合图形应用编程接口(API),例如(例如)开放图形库 API、开放图形库嵌入系统(OpenGL ES)API、开放计算语言API、Direct3D API、X3D API、RenderMan API、WebGL API或任何其它公共或专有标准图形API。为了处理图形再现指令,CPU 6可向GPU 12发布一或多个图形再现命令(例如,经由GPU驱动器7)以致使GPU 12执行图形数据的再现的一些或全部。在一些实例中,将再现的图形数据可包含例如点、线、三形、四边形、三角形条带等的图形基元的列表。
[0033] 存储器控制器8促进进入系统存储器10和从系统存储器10中出来的数据的转移。举例来说,存储器控制器8可接收存储器读写命令,且关于存储器系统10来服务此些命令以便为计算装置2中的组件提供存储器服务。存储器控制器8经由存储器总线22通信地耦合到系统存储器10。虽然图1中将存储器控制器8说明为与CPU 6和系统存储器10两者分离的处理模块,但是在其它实例中,存储器控制器8的功能性的一些或全部可实施于CPU 6及系统存储器10中的一者或两者上。
[0034] 存储器控制器8也可包含一或多个存储器管理单元(MMUS),所述MMUS包含用于控制对系统存储器10的IO装置存取(例如,GPU)的IOMMU。存储器管理单元可实施虚拟存储器系统。虚拟存储器空间可划分成多个虚拟页。这些虚拟页可相连,但这些虚拟页所对应的系统存储器10中的物理页在系统存储器10中则可能不相连。可将页面看作MMU可能够管理的最小单元。
[0035] 图2是说明系统存储器24的实例物理页的概念图。举例来说,图2说明包含虚拟页42的IOMMU 40,所述虚拟页包含四个区段(区段0到3)。应理解,为了易于理解,虚拟页42为图2中所说明的虚拟构造。在图2中,系统存储器10可包含对应于虚拟页42的物理页44。
[0036] 可跨越系统存储器10的多个存储器单元来存储物理页42。举例来说,物理页42可涵盖存储器单元11A和存储器单元11N两者。举例来说,存储器单元11A可存储物理页44的经指示为部分44A的部分,且存储器单元11N可存储物理页44的经指示为部分44B的部分。如所说明,存储器单元11A存储物理页44的区段0和区段2,且存储器单元11N存储物理页44的区段1和区段3。
[0037] 由于IOMMU 40以交错方式存储数据,所以存储器单元11A可存储区段0和区段2,且存储器单元11N可存储区段1和区段3。当以交错方式存储数据时,数据的一个部分被存储在第一存储器单元中且随后在另外的数据被存储在第一存储器单元中之前数据的第二部分被存储在第二存储器单元中。此实例仅包含两个存储器单元,但是可使用任何数目个存储器单元。例如,返回参考图1,GPU驱动器7可传输致使GPU 12存储像素值或任何其它计算值的指令,且可传输将存储有像素值的位置的虚拟地址。反过来,GPU 12可请求IOMMU 40根据虚拟地址来存储像素值。反过来,IOMMU 40可将虚拟地址映射到物理地址且基于所述物理地址以交错方式将像素值存储在系统存储器10的页面中。
[0038] IOMMU 40可经配置成以交错方式存储像素值。作为一个实例,IOMMU 40可经预先编程成以交错方式存储像素值。作为另一实例,IOMMU 40可接收命令IOMMU40以交错方式存储像素值的指令。
[0039] 系统存储器10可存储可存取以供由CPU 6执行的程序模块和/或指令,和/或供由执行于CPU 6上的程序使用的数据。举例来说,系统存储器10可存储由CPU 6用于在显示器18上呈现图形用户接口(GUI)的窗口管理器应用程序。另外,系统存储器10可存储用户应用程序和与所述应用程序相关联的应用程序表面数据。系统存储器10可另外存储供由计算装置2的其它组件使用和/或由计算装置2的其它组件产生的信息。举例来说,系统存储器10可充当GPU 12的装置存储器且可存储将由GPU 12操作的数据以及由通过GPU 12执行的操作产生的数据。举例来说,系统存储器10可存储其它图形数据,例如纹理缓冲器、深度缓冲器、模板缓冲器、顶点缓冲器、缓冲器或其类似者的任何组合。系统存储器10可包含一或多个易失性或非易失性存储器或存储装置,例如(例如)随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、只读存储器(ROM)、可擦可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
[0040] GPU 12可经配置以执行图形操作从而向显示器18再现一或多个图形基元。因此,当执行于CPU 6上的软件应用程序中的一者需要图形处理时,CPU 6可将图形命令和图形数据提供到GPU 12以用于向显示器18再现。所述图形数据可包含例如绘图命令、状态信息、基元信息、纹理信息等。在一些实例中,GPU 12可建有高度并行结构,所述高度并行结构提供比CPU 6更有效的对复杂图形相关操作的处理。举例来说,GPU 12可包含经配置成以并行方式操作于多个顶点或像素的多个处理元件。在一些实例中,GPU 12的高度并行性质可允许GPU 12比使用CPU 6将场景直接绘制到显示器18更快速地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)绘制到显示器18上。
[0041] 在一些实例中,GPU 12可集成到计算装置2的母板中。在其它实例中,GPU 12可存在于安装于在计算装置2的母板中的端口中的图形卡上或可在其它方面并入到经配置以与计算装置2互操作的外围装置内。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程阵列(FPGA)、数字信号处理器(DSP)或其它等效集成或离散逻辑电路
[0042] GPU 12可直接耦合到图形存储器14。因此,GPU 12可在不使用总线20的情况下从图形存储器14读取数据和将数据写入到图形存储器14。换句话说,GPU 12可使用局部存储器而非使用其它较缓慢的系统存储器来局部地存储数据。此允许GPU 12通过消除GPU 12对经由系统总线20来读取和写入数据(其可经历繁重的总线业务量)的需求以更有效的方式操作。然而,在一些情况下,GPU 12可能不包含单独存储器,而是经由总线20利用系统存储器10。图形存储器14可包含一或多个易失性或非易失性存储器或存储装置,例如(例如)随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
[0043] CPU 6和/或GPU 12可将再现的图像数据存储在帧缓冲器15中。通常,帧缓冲器15将在系统存储器10内进行分配,但在一些情况中可为独立的存储器。显示接口16可从帧缓冲器15检索数据且配置显示器18以显示由再现的图像数据表示的图像。在一些实例中,显示接口16可包含数字模拟转换器(DAC),所述DAC经配置以将从帧缓冲器15检索的数字值转换成可由显示器18消耗的模拟信号。在其它实例中,显示接口16可将数字值直接传递到显示器18以供处理。显示器18可包含监视器、电视、投影装置、液晶显示器(LCD)、等离子显示板、例如有机LED(OLED)显示器的发光二极管(LED)阵列、阴极射线管(CRT)显示器、电子纸、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶显示器或另一类型的显示单元。显示器18可集成于计算装置2内。例如,显示器18可为移动电话的屏幕。替代地,显示器18可为经由有线或无线通信链路耦合到计算机装置2的独立装置。例如,显示器18可为经由电缆或无线链路连接到个人计算机的计算机监视器或平板显示器。
[0044] 图3是进一步详细说明图1的CPU 6、GPU 12和系统存储器10的实例实施方案的框图。CPU 6可包含至少一个软件应用程序24、图形API 26和GPU驱动器7,每一者可为执行于CPU 6上的一或多个软件应用程序或服务。GPU 12可包含3D图形处理管线30,所述3D图形处理管线包含一起操作以执行图形处理命令的多个图形处理阶段。GPU 12可经配置成以包含并像再现模式和直接再现模式的多种再现模式执行图形处理管线30。GPU 12也可操作以执行通用着色器39,所述通用着色器用于执行适用于由GPU硬件的高度并行性质执行的更加一般计算。此些通用应用程序可为所谓的通用图形处理单元(GPGPU)且可符合例如OpenCL的通用API。
[0045] 如图3中示出,图形处理管线30可包含命令引擎32、几何处理阶段34、光栅处理阶段36和像素处理管线38。图形处理管线30中的组件中的每一者可实施为固定功能组件、可编程组件(例如,为执行于可编程着色器单元上的着色程序的部分),或实施为固定功能组件与可编程组件的组合。可用于CPU 6和GPU 12的存储器可包含系统存储器10,所述系统存储器可包含帧缓冲器15。帧缓冲器15可存储再现的图像数据。
[0046] 软件应用程序24可为利用GPU 12的功能性的任何应用程序。举例来说,软件应用程序24可为GUI应用程序、操作系统、便携式映射应用程序、用于工程或艺术应用程序的计算机辅助设计程序、视频游戏应用程序或使用2D或3D图形的另一类型的软件应用程序。软件应用程序24也可为使用GPU来执行更加一般计算(例如,在GPGPU应用程序中)的应用程序。
[0047] 软件应用程序24可包含命令GPU 12再现图形用户接口(GUI)和/或图形场景的一或多个绘图指令。举例来说,绘图指令可包含定义将由GPU 12再现的一组一或多个图形基元的指令。在一些实例中,绘图指令可共同地定义用于GUI中的多个窗口表面的全部或一部分。在额外实例中,绘图指令可共同地定义图形场景的全部或一部分,所述图形场景包含在由应用程序定义的模型空间或世界空间内的一或多个图形对象
[0048] 软件应用程序24可经由图形API 26来调用GPU驱动器7以向GPU 12发布用于将一或多个图形基元再现到可显示的图形图像中的一或多个命令。举例来说,软件应用程序24可经由图形API 26来调用GPU驱动器7以将基元定义提供到GPU 12。在一些实例中,可以例如三角形、矩形、三角形扇、三角形条带等的图形基元的列表的形式提供基元定义到GPU 12。所述基元定义可包含指定与将再现的基元相关联的一或多个顶点的顶点规范。所述顶点规范可包含每一顶点的位置坐标且在一些实例中包含与顶点相关联的其它属性,例如(例如)色彩坐标、法线向量和纹理坐标。基元定义也可包含基元类型信息(例如,三角形、矩形、三角形扇、三角形条带等)、缩放信息、旋转信息和其类似者。基于由软件应用程序24向GPU驱动器7发布的指令,GPU驱动器7可阐明指定供GPU 12执行以便再现基元的一或多个操作的一或多个命令。当GPU 12从CPU 6接收到命令时,图形处理管线30解码所述命令且配置图形处理管线30内的一或多个处理元件以执行于所述命令中所指定的操作。在执行指定的操作之后,图形处理管线30输出再现的数据到与显示装置相关联的帧缓冲器15。图形管线
30可经配置成以包含并像再现模式和直接再现模式的多个不同再现模式中的一者执行。
[0049] GPU驱动器7可进一步经配置以编译一或多个着色器程序,且将编译的着色器程序下载到GPU 12内所含有的一或多个可编程着色器单元上。可以例如(例如)OpenGL着色语言(GLSL)、高级着色语言(HLSL)、图形的C(Cg)着色语言等的高级着色语言来撰写着色器程序。编译的着色器程序可包含控制GPU 12内的可编程着色器单元的操作的一或多个指令。举例来说,着色器程序可包含顶点着色器程序和/或像素着色器程序。顶点着色器程序可控制可编程顶点着色器单元或统一着色器单元的执行,且包含指定一或多个每顶点操作的指令。像素着色器程序可包含控制可编程像素着色器单元或统一着色器单元的执行的像素着色器程序,且包含指定一或多个每像素操作的指令。根据本发明的一些实例,像素着色器程序也可包含基于源像素的对应目的地α值而选择性地致使针对所述源像素来检索纹理值的指令。
[0050] 图形处理管线30可经配置以经由图形驱动器28从CPU 6接收一或多个图形处理命令,及执行所述图形处理命令以产生可显示的图形图像。如上文所论述,图形处理管线30包含一同操作以执行图形处理命令的多个阶段。然而,应注意,此些阶段不必实施于独立的硬件块中。举例来说,几何处理阶段34和像素处理管线38的数个部分可实施为统一着色器单元的部分。此外,图形管线30可经配置成以包含并像再现模式和直接再现模式的多个不同再现模式中的一者执行。
[0051] 命令引擎32可接收图形处理命令且配置图形处理管线30内剩余的处理阶段以执行用于实施图形处理命令的各种操作。图形处理命令可包含例如绘图命令和图形状态命令。绘图命令可包含指定一或多个顶点的位置坐标及在一些实例中与顶点中的每一者相关联的其它属性值(例如(例如)色彩坐标、法线向量、纹理坐标和雾坐标)的顶点规范命令。图形状态命令可包含基元类型命令、变换命令、照明命令等。基元类型命令可指定将再现的基元的类型和/或组合顶点以形成基元的方式。变换命令可指定将对顶点执行的变换的类型。照明命令可指定图形场景内的不同光的类型、方向和/或放置。命令引擎32可致使几何处理阶段34关于与一或多个接收的命令相关联的顶点和/或基元执行几何处理。
[0052] 几何处理阶段34可对一或多个顶点执行每顶点操作和/或基元设置操作以便产生用于光栅处理阶段36的基元数据。每一顶点可与例如(例如)位置坐标、色彩值、法线向量和纹理坐标的一组属性相关联。几何处理阶段34根据各种每顶点操作来修改这些属性中的一或多者。举例来说,几何处理阶段34可对顶点位置坐标执行一或多个变换以产生修改的顶点位置坐标。几何处理阶段34可例如将造型变换、取景变换、投影变换、ModelView变换、ModelViewProjection变换、视区变换和深度范围缩放变换中的一或多者应用于顶点位置坐标以产生修改的顶点位置坐标。在一些实例中,顶点位置坐标可为模型空间坐标,且修改的顶点位置坐标可为屏幕空间坐标。屏幕空间坐标可在应用造型变换、取景变换、投影变换和视区变换之后获得。在一些实例中,几何处理阶段34也可对顶点执行每顶点照明操作以产生所述顶点的修改的色彩坐标。几何处理阶段34也可执行包含例如法线变换、法线规格化操作、视景体裁剪、均匀划分和/或背面剔除操作的其它操作。
[0053] 几何处理阶段34可产生:包含一组一或多个修改的顶点的基元数据,所述一或多个修改的顶点定义将光栅化的基元;以及指定顶点组合以形成基元的方式的数据。修改的顶点中的每一者可包含例如修改的顶点位置坐标和与顶点相关联的所处理的顶点属性值。基元数据可共同地对应于将通过图形处理管线30的另外的阶段而光栅化的基元。概念上,每一顶点可对应于基元的转角,基元的两个边缘在所述转角处交汇。几何处理阶段34可提供基元数据到光栅处理阶段36以供进一步处理。
[0054] 在一些实例中,可由执行于一或多个着色器单元上的一或多个着色器程序来实施几何处理阶段34的全部或部分。举例来说,在此些实例中,可由顶点着色器、几何着色器或其任何组合来实施几何处理阶段34。在其它实例中,几何处理阶段34可实施为固定功能硬件处理管线或实施为固定功能硬件与执行于一或多个着色器单元上的一或多个着色器程序的组合。
[0055] 光栅处理阶段36经配置以从几何处理阶段34接收表示将光栅化的基元的基元数据,且光栅化所述基元以产生对应于光栅化的基元的多个源像素。在一些实例中,光栅处理阶段36可确定将光栅化的基元覆盖哪些屏幕像素位置,且针对被确定由基元覆盖的每一屏幕像素位置来产生源像素。光栅处理阶段36可通过使用例如(例如)边缘走步技术、评估边缘等式等的为所属技术领域人员所已知的技术来确定基元覆盖哪些屏幕像素位置。光栅处理阶段36可提供所得源像素到像素处理管线38以供进一步处理。
[0056] 由光栅处理阶段36产生的源像素可对应于例如目的地像素的屏幕像素位置,且与一或多个色彩属性相关联。针对特定光栅化的基元所产生的所有源像素可据称与所述光栅化的基元相关联。由光栅处理阶段36确定为由基元覆盖的像素可在概念上包含表示基元的顶点的像素、表示基元的边缘的像素和表示基元的内部的像素。
[0057] 像素处理管线38经配置以接收与光栅化的基元相关联的源像素,且对所述源像素执行一或多个每像素操作。可由像素处理管线38执行的每像素操作包含例如α测试、纹理映射、色彩计算、像素着色、每像素照明、雾处理、混合、像素所有权文本、源α测试、模板测试、深度测试、裁剪测试和/或点彩操作。另外,像素处理管线38可执行一或多个像素着色器程序以执行一或多个每像素操作。本文可将由像素处理管线38产生的所得数据称作目的地像素数据并将它存储在帧缓冲器15中。目的地像素数据可与帧缓冲器15中的目的地像素相关联,所述目的地像素具有与所处理的源像素相同的显示位置。目的地像素数据可包含例如(例如)色彩值、目的地α值、深度值等的数据。
[0058] 帧缓冲器15存储用于GPU 12的目的地像素。每一目的地像素可与唯一屏幕像素位置相关联。在一些实例中,帧缓冲器15可存储每一目的地像素的色彩分量和目的地α值。举例来说,帧缓冲器15可存储每一像素的红、绿、蓝、α(RGBA)分量,其中“RGB”分量对应于色彩值且“A”分量对应于目的地α值。像素值也可由明度分量(Y)和一或多个色度分量(例如,U和V)来表示。虽然将帧缓冲器15和系统存储器10说明为独立的存储器单元,但在其它实例中,帧缓冲器15可为系统存储器10的部分。
[0059] 通用着色器39可为可在GPU 12上执行以执行计算的任何应用程序。通常,此些计算为利用包含算术逻辑单元(ALU)的GPU处理核心的高度并行结构的类型。实例通用着色器39可符合OpenCL API。OpenCL为允许应用程序跨越异类系统(例如,包含CPU、GPU、DSP等的系统)中的多个处理器进行存取的API。通常,在符合OpenCL的应用程序中,GPU 12将用于执行非图形计算。非图形计算应用程序的实例可包含基于物理的模拟、快速傅立叶变换音频信号处理、数字图像处理、视频处理、图像后过滤、计算相机、气候研究、天气预报、神经网络、密码术和大规模并行数据处理以及许多其它物。
[0060] 图4是展示根据本发明的技术的用于预提取和预备份信令的实例设备的框图。图4是参考GPU 12来描述的,但本发明的技术适用于和输入/输出装置一起使用。实例输入/输出装置包含数字信号处理器、视频编码器/解码器、显示控制器、音频处理器、相机处理器、图像处理器、网络装置或以大体上线性方式单步调试存储器的任何其它类型的处理核心。
[0061] 本发明提议用于IO装置(例如,GPU)的请求调页的技术。特别地说,本发明的技术增添预提取和预备份通知事件信令以减少与请求调页相关联的时延。所述信令用于通过通知OS/CPU对未映射存储器的即将来临的存取来避免大批页面错误。
[0062] 本发明的技术包含使用预备份和/或预提取信令以预期及可能地防止在IO装置的请求调页虚拟存储器系统中的页面错误和TLB失败两者。预备份信号可用于通知OS或CPU未映射页面(即,虚拟存储器的当前没有备份在物理存储器中的页面)将由IO装置存取。响应于此信号,CPU和/或OS可将预期的页面备份到物理存储器中以试图在由IO装置存取此些页面之前将它们备份。在一些用例中,此预备份信号可避免大多数页面错误和它们的所得时延缺陷
[0063] 参考图4,GPU 12可向CPU 6发送主机CPU预备份信号50以请求将额外页面备份到物理存储器中。GPU 12可响应于对当前备份的页面的使用已超出缓冲器使用的某一预定阈值的确定来发送预备份信号50。本质上,通过跟踪对当前备份的页面的使用,GPU 12预期在不久的将来将需要当前未备份的页面。下文将参考图5来论述使用跟踪及阈值的额外细节。
[0064] 响应于预备份信号50,CPU 6可将页面表56中的额外页面备份到物理存储器中(CPU IOMMU页面表备份61)。即,页面表56中的虚拟存储器的额外页面映射到物理存储器位置(例如,图1的系统存储器10)。页面表56存储虚拟存储器地址与物理存储器之间的映射。当完成备份时,CPU 6可向GPU 12用信号发送备份完成信号54以通知GPU。备份完成信号54可通知GPU 12不必暂停任何操作,因为归因于预备份操作而避免了页面错误。在其它情况下,当不能够及时执行预备份以防止页面错误时,备份完成信号54可用于通知GPU 12可重新开始任何暂停的操作。
[0065] 关于相关的话题,甚至含有备份在物理存储器中的页面的缓冲器也可遭受由IOMMU提供的虚拟化存储器系统中的性能影响。具体来说,IOMMU通常含有小型高速缓冲存储器(TLB)以保存翻译页面表的数个部分。此举将避免针对每一次翻译从存储器(例如,DRAM)提取翻译页面表项(PTE)。TLB高速缓冲存储器上的重大失败(即,TLB失败)可导致显著的性能损耗,因为IO装置的数据操作在向存储器的PTE提取之后停止。因而,本发明提出用于通知IOMMU不久将存取当前未存储在TLB中的页面表项(PTE)的预提取信号。响应于预提取信号,IOMMU可存取预期页面的PTE以试图在由IO装置存取此些页面之前将它们的PTE存储在TLB中。在一些用例中,此预提取信号可避免大多数TLB失败和它们的所得时延缺陷。
[0066] 参考图4,GPU 12可向IOMMU 40发送TLB PTE预提取信号52以请求将PTE载入到TLB 58中。GPU 12可响应于对具有TLB PTE的映射页面的使用已超出某一预定阈值的确定来发送预提取信号52。本质上,通过跟踪对具有TLB PTE的页面的使用,GPU 12预期在不久的将来在IOMMU 40的TLB 58中将需要其它页面的PTE。响应于预提取信号52,IOMMU 40可从存储器(例如,系统存储器10或从DRAM)提取并存储关于额外映射页面的PTE。下文将参考图6来论述页面PTE的使用跟踪和阈值的额外细节。
[0067] 在IO装置(例如,GPU 12)中存在用以产生预备份或预提取信令的众多可能的方法和技术。图5是展示根据本发明的一个实例的预备份信号触发的一个实例的概念图。在图5的实例中,GPU 12跟踪对存储器存取缓冲器60的使用。所述使用可为到缓冲器60的读写两者。缓冲器60可存储虚拟存储器的一或多个映射页面。在许多情况下,缓冲器中的总数个页面的一部分可备份在物理存储器中。举例来说,缓冲器60中的映射页面的第一部分(例如,第一映射页面68)可备份到物理存储器中,而映射页面的第二部分(例如,第二映射页面70)可仍未备份在物理存储器中。缓冲器开始62指示存储在缓冲器60中的映射页面的相连地址项中的第一存储器地址。
[0068] GPU 12经配置以跟踪缓冲器存取的当前位置(当前缓冲器位置64)对比某阈值(缓冲器水印66)。缓冲器水印66指示存储在缓冲器60中的页面的特定虚拟存储器地址。在一个实例中,当当前缓冲器位置64越过缓冲器水印66时,可触发主机CPU预备份信号50。即,一旦GPU 12存取具有高于缓冲器水印66的地址的虚拟存储器位置,便触发预备份信号50。响应于预备份信号50,CPU 6将随后将第二映射页面70备份到物理存储器中。
[0069] 用于预备份信令的上述技术可特别适用于其中以高度线性方式存取缓冲器60的应用中。以高度线性方式存取的缓冲器的实例包含命令流缓冲器、顶点缓冲器、指令流缓冲器、纹理缓冲器、元数据流缓冲器、计算缓冲器和中间阶段流缓冲器。命令缓冲器含有驱动器(生产者)与GPU(消费者)之间的命令流。所述命令流可为作业或子作业的流(例如,寄存器写)。顶点缓冲器含有GPU用于绘图的几何信息,例如位置、色彩、纹理坐标和其它属性数据。指令流缓冲器含有GPU着色器/计算单元运行的指令或程序,例如顶点、像素或计算着色器。纹理缓冲器含有纹理图像数据。中间阶段流缓冲器处置作业的数据流。时常地,GPU将具有有限的内部存储器以处置作业的数据流,在此情况下,GPU将把数据流串流或转储到中间阶段缓冲器(或其它专用图形或系统存储器)且随后的GPU阶段将从那存储器返回消耗。并且将值得提及两种其它缓冲器类型。元数据流缓冲器含有由GPU明确产生的中间状态数据。此明确产生的中间状态数据的实例将为消耗顶点数据且输出可见性流以供随后阶段使用的延期再现器。计算缓冲器用于存储由GPU计算的通用数据。现代GPU经设计成支持不具有图形特定性的通用计算任务。在此情况下,例如计算缓冲器的缓冲器可表示任意数据结构(例如,列表的阵列或阵列的列表)。应注意,缓冲器水印触发技术可适用于去往IO装置的多个限界缓冲器。
[0070] 图6是展示根据本发明的一个实例的预提取信号触发的一个实例的概念图。在图6的实例中,GPU 12跟踪对存储器存取页面72的使用。所述使用可为到缓冲器60的读写两者。页面72可包含虚拟存储器的一或多个映射页面。在许多情况下,总数个页面72的仅一部分可具有存储在IOMMU 40(见图4)的TLB 58中的对应PTE。举例来说,映射页面72的第一部分可具有存储在IOMMU 40中的对应PTE,而映射页面72的第二部分可不具有存储在IOMMU 40中的任何PTE。
[0071] GPU 12经配置以跟踪对页面72中的存储器地址的使用对比某阈值(例如,页面水印76)。页面水印76指示存储在页面76中的页面的特定虚拟存储器地址。在一个实例中,GPU 12可经配置以跟踪命令流的虚拟存储器的当前位置(流位置74)。当流位置74越过页面水印
76时,可触发主机TLB PTE预提取信号52。即,一旦GPU 12存取具有高于页面水印76的地址的虚拟存储器位置,便触发预提取信号52。响应于预备份信号50,IOMMU 40将随后提取关于页面72中的随后页面的PTE。指令“IF(STREAM&(PAGESIZE-1)>WATERMARK)”在每次流接近下一页面的4KB边界(即,页面大小PAGESIZE)时引起预提取信号。此指令将确实完成此。举例来说,每次流接近(由水印WATERMARK定义)下一页面边界时,它将发送预提取信号。在一个实例中,可响应于GPU 12存取接近页面边界的虚拟存储器位置来触发预提取信令。在其中页面72中含有多个页面的实例中,可将页面水印76定位于具有在IOMMU 40的TLB 58中的PTE的最后一页面的页面边界前面。
[0072] 用于预提取信令的上述技术也可特别适用于其中以高度线性或顺序方式存取页面72的应用程序。和预备份信令一样,以高度线性方式存取的页面的实例可包含命令流缓冲器、顶点缓冲器、指令流缓冲器、纹理缓冲器和中间阶段流缓冲器中的页面。
[0073] CPU 6可经配置以在GPU 12向存储缓冲器发起包含读写交易两者的存储器交易之前含蓄地或明确地提供预提取和预备份触发到GPU 12。可通过执行CPU 6的应用程序或通过装置驱动器(例如,图1的GPU驱动器7)用信号向GPU 12通知预提取和预备份触发。
[0074] 当新缓冲器以GPU 12为目的地时(例如,顶点、纹理或命令缓冲器),很可能此缓冲器将由随后作业来存取。在此情况下,缓冲器的绑定可与信令触发配对以用于使GPU 12利用预提取和预备份信号。存在其中GPU驱动器7和/或执行于CPU 6上的应用程序两者可确定用于随后作业的一般存取模式(例如,高度线性缓冲器存取模式或空间上确定性的存取模式)的其它情境。在这些情况下,可在存储器存取作业之前将预提取/预备份执行命令放置到命令流中以供在GPU 12上执行。
[0075] 例如GPU 12的IO装置可含有运行高度并行化作业的流处理器。执行于流处理器上的指令程序可扩展以包含预提取和预备份触发指令。举例来说,如图3中示出,执行于GPU上的包含着色器子系统和/或其它管线块的图像处理管线30可经配置以跟踪由CPU 6提供的阈值。此将允许将可在程序开发或编译时间确定的任何已知的存取模式表达为预备份和预提取触发。
[0076] 本发明的技术也可扩展到不再在使用中的虚拟存储器页面的未映射。当GPU 12完成映射页面的使用时,相同类型的信令可用于命令CPU 6释放(例如,不映射)不再需要的虚拟存储器页面。
[0077] 上文所描述的缓冲器和页面水印技术也可用于其中缓冲器和/或页面存取不为高度线性的其它情形。特别地说,许多GPU应用程序在空间上为确定性的。即,当在GPU上发起应用程序时,知道在屏幕上将按什么空间次序来绘制像素。常在空间上为确定性的GPU应用程序的实例包含光栅化。虽然GPU中的光栅化并不总是在空间上为确定性的,但存在GPU中的光栅化在空间上为确定性的许多情况。举例来说,大型块转移(BLT)和砖块式再现器解析到DRAM是以先验已知的用以发起此作业的空间模式而发生。BLT为将数据从一个存储器复制到另一存储器的指令。常常在命令GPU绘制场景的特定区域时执行像素数据的BLT。
[0078] 在这些情况下,参考图5和6所描述的简单线性水印的扩展方法可用于触发预备份信号和/或预提取信号。举例来说,可跨越给定的屏幕空间区域以已知的模式发生x,y空间中的光栅模式。当光栅走步时,GPU 12可经配置以在光栅扫描中触发将在未来存取的区域的预备份和/或预提取信号。特别地说,可将水印放置在光栅扫描模式中的一或多个位置处,所述一或多个位置在其中光栅扫描模式中的随后项当前未压缩在物理存储器中的位置附近。同样,可将水印放置在光栅扫描模式中的一或多个位置处,所述一或多个位置在其中光栅扫描模式中的随后项不具有当前存储在TLB中的PTE的位置附近。
[0079] 其它技术也可用于跟踪和/或估计对存储器的使用且产生本发明中所描述的预备份和预提取信令。一个此实例包含利用在标准光栅化器“超前运行”的第二光栅化器(例如,图3的光栅处理阶段36)。第二光栅化器可为粗粒度光栅化器。即,第二光栅化器可以较低分辨率及较小精度执行光栅化,因为此光栅化器的目标并不是产生供显示的像素,而是确定什么样的未来存储器使用保证预提取或预备份信号。作为一个实例,第二光栅化器可领先标准光栅化器若干像素(例如,100个像素)操作。然而,可使用考虑到有用的预备份和预提取信令的任何数目个“超前运行”像素。
[0080] 一般来说,使用稀疏元件执行的任何“超前运行”技术可用于跟踪存储器使用且触发预备份和预提取信令。稀疏元件执行大体上意谓一次执行总数个作业中的仅一部分作业(例如,像素或工作项)。作为一个实例,对于由1000个顶点构成的绘图调用来说,超前运行引擎可在当前顶点前面充分执行顶点20。并且,可使用允许预提取和/或预备份信令适用于特定应用程序的任何数目个超前运行顶点。超前运行引擎可为与产生计算作业或供显示的像素的管线相同或几乎相同的并行处理管线。在另一实例中,可暂停用于产生计算作业或供显示的像素的相同引擎以执行“超前运行”作业从而确定预备份或预提取信令。在完成“超前运行”作业之后,可恢复主要作业。与上述超前运行光栅化器实例一样,超前运行引擎的目标不是产生精确计算作业结果或供显示的像素,而是确定什么样的未来存储器使用保证预提取或预备份信号。
[0081] 应注意,对于OpenCL应用程序来说,超前运行引擎可对领先当前工作项1000个工作项的工作项操作。对于典型OpenCL应用程序来说,工作项有效地与像素等效。GPU本身不将工作项视为x,y位置(如像素),而是工作项属于工作项的x,y,z栅格(称为工作组)。实际上,工作组与3D图形处理中的三角形稍微等效。
[0082] 用于跟踪未来存储器使用以确定何时发送预提取或预备份信号的另一技术可涉及使用GPU管线的“前端”来预见未来命令。通常,GPU管线将包含在管线开头的某种类的命令处理器以处理包含管线的更迟阶段的作业的命令流。实例命令处理器可为图3的图形3D处理管线30的命令引擎32。然而,此技术并不限于3D图形应用程序,而是可使用命令处理器的任何类型的应用程序(OpenCL、应用程序、视频编码和解码、图像处理等)。命令处理器可经配置以评估命令流从而确定何时发送预备份或预提取信号。
[0083] 对于3D图形处理来说,GPU命令流例如大体上含有设定某种寄存器或发出某种再现动作的命令。通常存在保存存储器地址(或所述存储器地址的范围)的适当数目个寄存器,将从所述存储器地址提取数据或将把数据写到所述存储器地址。再现命令常保存GPU将存取的缓冲器的存储器地址。当处理命令流时,GPU的命令处理器(例如,命令引擎32)可经配置以针对存储器地址扫描命令流,产生不久将存取的映射页面的列表,且使用此列表来触发预备份/预提取信号。更具体来说,命令引擎将经配置以在管线中的更迟阶段(例如,几何处理阶段34、光栅处理阶段36、像素处理管线38)需要存取未来未映射页面之前确定对此些未映射页面的需求。
[0084] 图7展示根据本发明的一个实例的用于执行用于预备份信令的方法的流程图。可由图1的CPU 6和GPU 12来执行图7中所示的方法。GPU 12可经配置以跟踪由执行于GPU 12上的应用程序对虚拟存储器系统中的映射页面的第一部分的使用(704)。映射页面的所述第一部分表示所述应用程序可能需要的若干页面的一部分,且映射页面的所述第一部分备份到物理存储器中。
[0085] GPU 12可进一步经配置以确定所述使用是否跨越阈值(706)。所述阈值可含蓄地由GPU 12确定或可任选地从CPU 6接收(702)。在一些实例中,阈值为表示映射页面的第一部分的使用百分数的水印。在此实例中,映射页面的至少第一部分存储在缓冲器中,且水印为缓冲器内的位置。在此情况下,GPU 12可进一步经配置以确定缓冲器中存取的当前位置是否越过水印。缓冲器可为命令流缓冲器、顶点缓冲器、纹理缓冲器、指令流缓冲器、光栅化缓冲器和中间阶段流缓冲器中的一者。在另一实例中,缓冲器为光栅化缓冲器且执行于GPU上的应用程序为块转移(BLT)和砖块式再现器解析中的一者。
[0086] 在确定跨越阈值的情况下,GPU 12可进一步经配置以用信号通知CPU 6将页面的第二部分备份在物理存储器中(708)(即,将虚拟存储器地址翻译为物理存储器地址)。页面的所述第二部分表示应用程序可能需要的所述若干个页面的不同部分。响应于信号,CPU 6可经配置以将页面的第二部分备份到物理存储器(710)。任选地,GPU 12可进一步经配置以从CPU 6接收指示备份完成的信号(712)。
[0087] 图8展示根据本发明的另一实例的用于执行用于预提取信令的方法的流程图。可由图1的CPU 6、存储器控制器8和GPU 12来执行图8中所示的方法。特别地说,存储器控制器8可为图4的IOMMU 40。GPU 12可经配置以跟踪由执行于GPU 12上的应用程序对虚拟存储器系统中的映射页面的第一部分的使用(804)。映射页面的所述第一部分表示所述应用程序可能需要的若干页面的一部分。映射页面的第一部分的页面表项存储在IOMMU 40中(例如,在TLB 58中)。
[0088] GPU 12可进一步经配置以确定所述使用是否跨越阈值(806)。在此上下文中,跨越阈值可包含超出或落后某一阈值。所述阈值可含蓄地由GPU 12确定或可任选地从CPU 6接收(802)。在一些实例中,阈值为表示映射页面的第一部分的使用百分数的水印。在一个实例中,水印为映射页面的第一部分的最后一页面内的位置。在此情况下,GPU 12可进一步经配置以确定最后一页面中存取的当前位置是否越过水印。
[0089] 在确定跨越阈值的情况下,GPU 12可经配置以用信号通知IOMMU 40提取映射页面的第二部分的页面表项(808)。页面的所述第二部分表示应用程序可能需要的所述若干个页面的不同部分。响应于信号,IOMMU 40可经配置以提取页面的第二部分的页面表项(810)。
[0090] 在一或多个实例中,上文所描述的功能可实施在硬件、软件、韧件或其任何组合中。如果实施在软件中,那么可将功能存储为包括非暂时性计算机可读媒体的制品上的一或多个指令或代码。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中所描述的技术的指令、代码和/或数据结构的任何可用媒体。以实例说明且不限制,此些计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁性存储装置、快闪存储器或可用以指令或数据结构的形式载运或存储合乎需要的程序代码且可由计算机存取的任何其它媒体。如本文所使用,磁盘及光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘及蓝光光盘,其中磁盘通常以磁性方式复制数据,而光盘用激光以光学方式复制数据。上述各者的组合也应包含在计算机可读媒体的范围内。
[0091] 代码可由一或多个处理器执行,例如一或多个DSP、通用微处理器、ASIC、FPGA或其它等效的集成或离散逻辑电路。另外,在一些方面中,本文所描述的功能性可提供在专用硬件和/或软件模块内。并且,可将所述技术完全实施于一或多个电路或逻辑元件中。
[0092] 本发明的技术可实施于包含无线手机、集成电路(IC)或一组IC(例如,芯片集)的广泛多种装置或设备中。本发明中描述各种组件、模块或单元以强调经配置以执行所揭示技术的装置的功能方面,但是未必需要通过不同硬件单元实现。相反,如上文所描述,各种单元可组合于编码器解码器硬件单元中或由包含如上文所描述的一或多个处理器的互操作性硬件单元的的集合结合合适的软件和/或韧件来提供。
[0093] 已描述了各种实例。这些及其它实例属于以下权利要求书的范围内。
相关专利内容
标题 发布/更新时间 阅读量
请求处理技术 2020-05-12 645
请求式定位 2020-05-11 897
请求式系统信息 2020-05-12 717
自动再发送请求 2020-05-13 122
短请求发送帧 2020-05-12 701
请求式定位 2020-05-11 88
并发请求调度 2020-05-12 648
准同步预留请求 2020-05-12 845
处理请求 2020-05-11 809
变更请求表注释 2020-05-12 425
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈