CN105556487B - 对页驻留的条件性页错误控制 - Google Patents
对页驻留的条件性页错误控制 Download PDFInfo
- Publication number
- CN105556487B CN105556487B CN201480052005.7A CN201480052005A CN105556487B CN 105556487 B CN105556487 B CN 105556487B CN 201480052005 A CN201480052005 A CN 201480052005A CN 105556487 B CN105556487 B CN 105556487B
- Authority
- CN
- China
- Prior art keywords
- page
- resident
- access
- mistake
- occur
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/302—In image processor or graphics adapter
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供用以处理非驻留页的系统和方法,其可包含:尝试存取所述非驻留页,所述非驻留页的地址指向含有默认值的存储器页;基于指示特定非驻留页不应该产生页错误的指示符而确定所述非驻留页不应该导致页错误;返回存储器读取未翻译的指示且在对所述非驻留页的所述存取是读取且所述非驻留页不应该导致页错误时返回所述默认值。另一实例可在对所述非驻留页的所述存取是写入且所述非驻留页不应该导致页错误时中断写入。
Description
技术领域
本发明涉及图形存储器中的驻留及非驻留页,且更确切地说,涉及用于页错误控制的技术。
背景技术
一般来说,对一些系统中的非驻留页的存取导致页错误。非驻留页是不具有与其相关联的物理存储器位置的页。相反,驻留页是具有与其相关联的物理存储器位置的页。例如,非驻留页可具有虚拟地址,但没有实际物理存储器与所述地址相关联。在一些实例中,软件可使用例如页表将虚拟地址映射到驻留页的物理地址。一般来说,非驻留页可不发生映射,因为非驻留页不具有分配给其的物理存储器。存储器管理单元(MMU)可执行查找以确定虚拟地址与物理地址之间的映射以便执行例如存储器读取或存储器写入等存储器事务。
发明内容
用于处置与例如多媒体相关的任务的一些应用编程接口(API)可允许在没有出错的情况下存取非驻留页。本发明提供与用于区别导致错误及不导致错误的非驻留页的技术相关的系统及方法。在一个实例中,在存取非驻留瓦片时,可响应于读取指令且响应于到非驻留瓦片的写入指令而返回预定位值,可丢弃所述写入。在另一实例中,填充有恰当默认值的“虚拟页”可用于所有非驻留页。所述虚拟页可为填充有恰当默认值的单一存储器页,可例如在读取到非驻留页的任何存储器地址时存取所述恰当默认值。在一些实例中,还可返回存储器读取未翻译的指示,例如信号。在虚拟地址不映射到物理地址时,存储器读取不翻译。换句话说,在页虚拟地址指向非驻留的页时,存储器地址不翻译。在页是非驻留时,虚拟地址不可被翻译为物理地址,因为不存在用于所述虚拟地址的物理地址。
非驻留页是不存在物理存储器位置且因此没有虚拟地址到物理地址的映射的页。相反,驻留页是具有物理存储器位置且因此可为虚拟地址到物理地址的映射的页。另外,本发明描述使客户端(即,可尝试读取或写入存储器中的页的装置)知晓页何时是非驻留的各种方式。
在一个实例中,本发明描述一种处理非驻留页的方法,其包含:尝试存取非驻留页,所述非驻留页的地址指向含有默认值的存储器页;基于检查指示所述非驻留页不应该产生页错误的指示符而确定所述非驻留页不应该导致页错误;及返回存储器读取未翻译的指示且在对所述非驻留页的存取是读取且非驻留页不应该导致页错误时返回所述默认值。
在一个实例中,本发明描述一种处理非驻留页的方法,其包含:尝试存取非驻留页,所述非驻留页的地址指向含有默认值的存储器页;返回存储器读取未翻译的指示且在对所述非驻留页的存取是读取且所述非驻留页不应该导致页错误时返回所述默认值;及在对所述非驻留页的存取是写入且所述非驻留页不应该导致页错误时中断写入。
在另一实例中,本发明描述一种处理非驻留页的设备,其包含处理器,所述处理器经配置以:尝试存取非驻留页,所述非驻留页的地址指向含有默认值的存储器页;基于检查指示所述非驻留页不应该产生页错误的指示符而确定所述非驻留页不应该导致页错误;及返回存储器读取未翻译的指示且在对所述非驻留页的存取是读取且非驻留页不应该导致页错误时返回所述默认值。
在另一实例中,本发明描述一种处理非驻留页的设备,其包含处理器,所述处理器经配置以:尝试存取非驻留页,所述非驻留页的地址指向含有默认值的存储器页;返回存储器读取未翻译的指示且在对所述非驻留页的存取是读取且所述非驻留页不应该导致页错误时返回所述默认值;及在对所述非驻留页的存取是写入且所述非驻留页不应该导致页错误时中断写入。
在另一实例中,本发明描述一种处理非驻留页的设备,其包含:用于尝试存取非驻留页的装置,所述非驻留页的地址指向含有默认值的存储器页;用于基于检查指示所述非驻留页不应该产生页错误的指示符而确定所述非驻留页不应该导致页错误的装置;及用于返回存储器读取未翻译的指示且在对所述非驻留页的存取是读取且非驻留页不应该导致页错误时返回所述默认值的装置。
在另一实例中,本发明描述一种向客户端告知页是非驻留的设备,其包含:用于存取非驻留页的装置,所述非驻留页的地址指向含有默认值的存储器页;用于返回存储器读取未翻译的指示的装置及用于在对所述非驻留页的存取是读取且所述非驻留页不应该导致页错误时返回所述默认值的装置;及用于在对所述非驻留页的存取是写入且所述非驻留页不应该导致页错误时中断写入的装置。
在另一实例中,本发明描述一种计算机可读存储媒体。所述计算机可读存储媒体具有存储在其上的指令,所述指令在执行时导致一或多个处理器:尝试存取非驻留页,所述非驻留页的地址指向含有默认值的存储器页;基于检查指示所述非驻留页不应该产生页错误的指示符而确定所述非驻留页不应该导致页错误;及返回存储器读取未翻译的指示且在对所述非驻留页的存取是读取且非驻留页不应该导致页错误时返回所述默认值。
在另一实例中,本发明描述一种计算机可读存储媒体。计算机可读存储媒体具有存储在其上的指令,所述指令在执行时导致一或多个处理器非暂时性计算机可读存储媒体存储指令,所述指令在由一或多个处理器执行时致使所述一或多个处理器:尝试存取非驻留页,所述非驻留页的地址指向含有默认值的存储器页;返回存储器读取未翻译的指示且在对所述非驻留页的存取是读取且所述非驻留页不应该导致页错误时返回所述默认值;及在对所述非驻留页的存取是写入且所述非驻留页不应该导致页错误时中断写入。
附图及以下描述中陈述一或多个实例的细节。其它特征、目标和优点将从所述描述和图式以及权利要求书而显而易见。
附图说明
图1为说明可用于实施本发明中描述的技术的实例计算装置的框图。
图2是说明用以实施本发明中所描述的用于区别导致错误的非驻留页及不导致错误的非驻留页的技术的实例计算装置的框图。
图3是说明用以实施本发明中所描述的用于区别导致错误的非驻留页及不导致错误的非驻留页的技术的另一实例计算装置的框图。
图4是说明实例图形管线的概念图,其包含可执行本发明的用于区别导致错误的非驻留页及不导致错误的非驻留页的技术的单元。
图5为说明根据本发明中所描述的一或多个实例的实例方法的流程图。
图6为说明根据本发明中所描述的一或多个实例的实例方法的流程图。
具体实施方式
如上文所论述,一些API允许在没有出错的情况下存取非驻留页。一个实例是DirectX 11(DX11)中的被称为瓦片化资源的新特征。瓦片化资源允许在没有出错的情况下经由图形操作(例如,纹理读取、色彩缓冲器写入)存取资源的非驻留页。
本发明涉及用于页错误控制的技术。本发明提供与用于区别导致错误及不导致错误的非驻留页的技术相关的系统及方法。例如,本发明描述区别导致错误的非驻留页及不导致错误的非驻留页的各种技术。一般在处理器或存储器管理单元尝试读取或写入一非驻留页的存储器地址时出现页错误。如上文所描述,非驻留页是不存在物理存储器位置且因此没有虚拟地址到物理地址的映射的页。相反,驻留页是具有物理存储器位置且因此可为虚拟地址到物理地址的映射的页。
另外,本发明描述使客户端知晓页何时是非驻留页的各种方式。例如,本发明中描述的技术可允许客户端确定其存取非驻留页。在本发明中描述的一些技术中,不暂停后续命令的执行,客户端可经配置以处置对非驻留页的此类存取。客户端是可尝试读取或写入到存储器中的页的装置。在一些实例中,处理器可为客户端。例如,图形处理单元可为客户端。在此实例中,GPU内的多个子客户端可请求存取(例如,纹理子客户端可请求从地址的读取,而光栅单元可请求写入)。在此实例中,GPU进行读取和写入请求。在一些实例中,客户端可为GPU内的请求端,例如纹理单元、混合器单元或着色器单元。存储器管理单元(MMU)可为客户端。然而,MMU一般是以上客户端中的一或多者的从属装置。在一个实例中,在非驻留瓦片被客户端存取时,可响应于读取操作返回预定位值且响应于写入操作可丢弃预定位值。在另一实例中,填充有恰当默认值的“虚拟页”可以用于所有非驻留页。所述虚拟页可为填充有所述恰当默认值的单一存储器页。在客户端存取到非驻留页的任何存储器地址时,可将虚拟页中的值返回到客户端。
如上文所论述,DX11中的被称为瓦片化资源的新特征允许在没有出错的情况下经由图形操作(即纹理读取、色彩缓冲器写入)存取资源的非驻留页。因此,可需要区别导致错误的非驻留页及不导致错误的非驻留页。另外,应该找到使客户端知晓页何时是非驻留的方式。
在一个实例中,DX11页属性(例如读取权限(R)、写入权限(W)、可高速缓存存储器位置(C)及共享存储器位置(S))可包含额外的位、旗标或其它指示以指定对非驻留页的存取不应该产生页错误。本文中描述的系统和方法的一些实例可在现有ARM位的顶部上添加NF(无错)位。其它位的以上列表相对于其它属性既定不是穷尽性的。可存在其它位。仅基于ARM给出页属性R、W、C及S作为实例。
在一些实例中,无错(NF)位(旗标等)可指示对此非驻留页的存取不应该产生页错误。例如,对于给定虚拟地址,页表可存储与虚拟地址相关联的物理地址以及存储在由物理地址识别的页中的数据的页属性。页属性可作为二进制位存储在页表中。页表可映射一物理地址(作为一个实例)。NF位208可被添加到页属性以指定对此非驻留页的存取不应该产生页错误。实施这些系统和方法的实例装置可随后返回用于读取的默认值或丢弃写入。因此,NF位208可指示对非驻留材料的存取不应该导致错误。在一个实例中,此装置可确定读取或写入是否将发生错误。如果不出现错误,那么可翻译读取或写入。如果发生错误,那么装置可使用NF位208确定是否应该报告所述错误、关于所述错误的操作系统(OS)的错误。装置可执行各种典型的页错误校正。或者,如果NF位208指示不应该将错误报告给OS,那么装置可返回用于读取的例如0x0的值或装置可中止写入且继续。
如上文所论述,在一些实例中,还可返回存储器读取未翻译的指示,例如单精度。在虚拟地址不映射到物理地址时,存储器读取不翻译。换句话说,在页虚拟地址指向非驻留的页时,存储器地址不翻译。在页是非驻留时,虚拟地址不可被翻译为物理地址,因为不存在用于所述虚拟地址的物理地址。
虽然NF位208的一个目的可为指定非驻留材料不应该导致错误,但NF位208还可影响非驻留页的确定。例如,NF位208可用于确定瓦片化资源中的页是否为驻留,如此处所描述。在本文中描述的各种实例中,NF位208可结合默认值、驻留检查等使用以确定瓦片化资源中的页是否为驻留。
在一实例中,如果出现错误,那么对非驻留页的存储器存取已发生且NF位208必定已被设定成允许错误。如果未出现错误,存储器存取已发生,且NF位208使得允许发生错误,那么尝试的存储器存取必定是对驻留页。如果错误将出现,除了NF位208被设定成使得错误将发生之外,那么可发生本发明的其它方面,例如返回默认值、驻留检查等。
一些实例可使用现有的页表属性。换句话说,在此实例中可不需要存在NF位208。在此实例中,填充有恰当默认值的“虚拟页”可用于所有非驻留页。所述虚拟页可为填充有恰当默认值的单一存储器页,可例如在读取到非驻留页的任何存储器地址时存取所述恰当默认值。此实例可在特定物理存储器地址处存储虚拟页且在寄存器中存储物理存储器地址的值。非驻留页的虚拟地址可映射到虚拟页的物理存储器地址。另外,在存取页时,可将所述页表中的其物理存储器与存储在寄存器中的物理存储器值进行比较。如果两个值相同,那么客户端确定其正存取非驻留页。如果两个值不同,那么客户端确定其正存取驻留页。
一些实例实现使例如可存取存储器的装置(例如处理器)等客户端知晓页何时为非驻留。此被称作驻留检查。之所以可使用驻留检查是因为虽然默认或虚拟值可提供页是非驻留的指示,但始终可能驻留页可恰好具有存储在存储器中的这些值(例如作为实际数据)。在一个实例中,存储器管理单元(MMU)可返回可指示页是非驻留的位、旗标或其它指示。此位、旗标或其它指示可与NF位208或旗标分开。NF位208不一定与返回到客户端的位相同。在一个实例中,例如GPU等客户端可从MMU读取位以确定瓦片化资源中的页是否为驻留的。瓦片化资源也被称作顶点贴图、虚拟纹理、稀疏纹理及部分驻留纹理。瓦片可为存储不同粒度的相同基本纹理的多个存储器页。此功能性实现纹理被部分加载在存储器中以用于更快速的存取例如,纹理可被瓦片化或存储在多个存储器页上。此可允许更有效地使用较大的纹理。在其它实例中,可由客户端读取旗标或其它指示符。
在一些实例中,区别导致错误的非驻留页及不导致错误的非驻留页的此技术的优点是图形处理系统可允许不应该导致错误的非驻留页,但仍在尝试对应该导致错误的非驻留页的存取时出错。
因此,可支持DX11瓦片化资源特征,其允许在没有出错的情况下经由图形操作(即纹理读取、色彩缓冲器写入)存取资源的非驻留页,同时仍支持页错误以用于对所有其它资源(例如,非瓦片化资源)的存取,使得在尝试存取且所存取的页是非驻留页的情况下这些其它资源导致页错误。在尝试存取到非瓦片化资源的非驻留页时,不需要将非瓦片化资源中的所有非驻留页的虚拟地址映射到虚拟页,而是,将替代地发生错误。因此,图形处理系统可返回导致错误的非驻留页的页错误。一般来说,到非驻留页的任何存储器操作(例如,存储器读取或存储器写入)将返回页错误。然而,DX11中的瓦片化资源是允许在没有出错的情况下经由图形操作(即,纹理读取、色彩缓冲器写入)存取资源的非驻留页的特征的实例。对于非驻留,其它可能的实例可包含OpenGL中的“部分驻留纹理”扩展。
含有默认值发存储器页也可被称作虚拟页为被称为含有虚拟值。例如,在一些情况下,对于到所有其它资源的存取,例如非瓦片化,可将NF位208设定成允许错误。换句话说,到非驻留页的读取或写入应该导致到所有其它资源的存取的页错误。因此,对于与DX11瓦片化资源无关的资源(其允许在没有出错的情况下经由图形操作(即,纹理读取、色彩缓冲器写入)存取资源的非驻留页),可将NF位208设定成允许错误。在一个实例中,如果NF是单一位且NF=“1”指示不应该发生错误,那么NF=“0”指示应该正常处理错误。换句话说,到非驻留页的任何存储器操作(例如存储器读取或存储器写入)将返回页错误,因为在非驻留页的情况下,不存在供GPU或MMU读取或写入的实际存储器。因此,对于所有其它资源的存取,例如,非瓦片化,NF位208将为“0”。相反情况也一样。因此,如果NF是单一位且NF=“0”(例如,低有效)指示不应该发生错误,那么NF=“1”指示应该正常地处理错误。因此,对于到所有其它资源(例如非瓦片化)的存取,NF位208将为“1”。类似地,旗标及其它指示还可允许图形处理系统(例如,GPU、MMU、存储器等)通过以下方式支持到所有非瓦片化资源的存取的页错误:简单地返回页错误而非将非瓦片化的非驻留页的虚拟地址映射到虚拟页,这是因为一般在处理器或存储器管理单元尝试读取或写入到非驻留页的存储器地址时出现页错误。例如,一个旗标设定可指示没有错误,而另一旗标设定允许发生错误。
在一实例中,在图形处理器、存储器管理单元(MMU)或其它处理器读取不应该导致错误的非驻留页时,可通过所述读取返回默认值,例如预定位值,例如全部0、全部1等。所述默认值提供可以用于所有非驻留页存取的预定义值。在一个实例中,如果发生到非驻留页的读取,那么所述值将为0。然而,此不确凿地指示所述页是非驻留的。所述默认值(例如0)可为共同值且驻留页有可能偶然含有默认值。MMU或其它处理器可例如使用状态或确认(ACK)向可执行所述读取或可已请求MMU执行所述读取的装置(例如GPU)指示已经存取非驻留页。ACK可提供存储器读取未翻译的指示。如上文所论述,在虚拟地址不映射到物理地址时,存储器读取不翻译。一些实例可使用ACK(或另一指示或信号)确定是否翻译存储器读取。NF位208或默认值可在已经存取存储器读取时提供所述存储器读取不应该导致错误的指示。在另一实例中,可执行读取但一般不执行写入的纹理单元在其或另一处理器读取不应该导致错误的非驻留页时可接收默认值。另外,在一实例中,客户端(例如GPU)可通过请求来自MMU的驻留信息而执行驻留检查。例如,GPU可将信号发送到所述MMU以用于致使MMU提供页是驻留的指示。例如,GPU可提供地址作为信号进行翻译且MMU执行驻留检查。MMU可返回指示页是驻留还是非驻留页的确认。MMU管理存储器,因此,与驻留及非驻留的页相关的信息可存储在MMU中或可为MMU内部或外部的页表中。在一些实例中,所述页表可存储在存储器的一部分中,例如,存储在DRAM中。
在一实例中,在GPU尝试写入到非驻留页时,应该丢弃所述写入尝试,因为非驻留页不映射到物理位置并且因此将没有地方写入数据。用于尝试的写入的数据可被丢失且处理器或其它电路可需要重新计算所述数据(如果稍后需要所述数据)。然而,此一般是必要的,因为尚未分配存储器位置来存储非驻留页的信息。如更详细地描述,在一实例中,例如,MMU可在MMU确定写入是对非驻留页时丢弃所述写入。如还更详细地描述,在一些实例中,像素着色器、几何着色器或图形处理单元的其它着色器单元可执行写入且可经编程以丢弃对非驻留页的写入。
如上文所论述,DX11中的被称为瓦片化资源的新特征允许在没有出错的情况下经由图形操作(即,纹理读取、色彩缓冲器写入)存取资源的非驻留页。因此,可需要区别导致错误的非驻留页及不导致错误的非驻留页。另外,在一些实例中,处理器、图形处理器或MMU可执行读取及/或写入以用于深度测试。深度测试是可相对于三维(3-D)图形中的图像深度坐标使用以决定所渲染场景的哪些元素可见及哪些元素被隐藏的图形操作。处理器、图形处理器或MMU还可执行读取以作为色彩混合图形操作的部分。这些功能可使用本文中提供的实例以允许处理与深度测试、色彩混合等相关的驻留及非驻留页。实例色彩混合操作可读取先前色彩(“old_color”)以用于与传入色彩(“incoming_color”)混合以形成新色彩(“New_color”)。换句话说,先前在例如视频显示器上显示的色彩可与传入色彩混合以形成新色彩。所述新色彩可为实际上显示的色彩。先前色彩可由执行混合的处理器读取且使用以下方式混合:
New_color=old_color*(1-blend_value)+incoming_color*(blend_value)
在另一实例中,虚拟页含有指示页是否为驻留的虚拟值。虚拟页可为单一存储器位置或一连串存储器位置,其形成可映射到对非驻留页的任何读取的信息的页。例如,系统(例如比较单元)可将页表中的地址(例如物理地址)与存储在寄存器中的虚拟页的地址值进行比较以确定所述物理地址是否与存储在寄存器中的虚拟页的地址相同。以此方式,系统可确定页是否为驻留的。在一些实例中,输入地址可为存储在页表中的虚拟地址。状态位也可存储在页表中。虚拟地址及状态位可经组合以产生给定虚拟地址将映射到的物理地址。例如,MMU可经配置以将虚拟地址映射到物理地址中。MMU可包含用于将虚拟地址映射到瓦片的物理地址的一组页表条目。在一些实例中,MMU可包含可用于确定对高速缓冲存储器线的请求是命中还是未命中的高速缓冲存储器线索引。所参照的虚拟页具有物理地址且相同的物理地址可以用于多个虚拟地址。在此实例中,虚拟页物理地址可以用于不存在且是PRT的部分的所有虚拟地址表条目。
如果正被存取的页匹配寄存器中的值,那么页是非驻留的。对所述页的读取可正常行进。这是因为处理器或图形处理器将把适当的默认值写入到所述虚拟页且这些值将由尝试存取非驻留页的系统读取。尝试的写入应该被丢弃。再者,用于尝试的写入的数据可被丢失且可需要重新计算所述数据(如果稍后需要所述数据)。然而,此一般是必要的,因为除包含可由多个非驻留页使用的虚拟值的页之外,尚未分配存储器位置来存储非驻留页的信息。另外,在一实例中,在正被存取的页匹配寄存器中的指示所述页是非驻留页的值时,驻留检查应该返回错误。
这种解决方案的一些实例的优点是非驻留页明显被映射到‘虚拟页’而不是产生关于读取的页错误,且仅需要关于写入的‘特殊’处置。这种解决方案的一些实例的另一优点是默认值可为可编程的,这是因为软件可负责使用默认值填充页。
在一些实例中,DX11特征还可需要图形着色器程序确定瓦片化资源是驻留还是非驻留的方式。填充有恰当默认值的虚拟页可以用于所有非驻留页。存储在虚拟页中的默认值可给出页是非驻留的指示。然而,所述值可简单地存储在页中,因为所存储的数据恰好是与默认值相同的值。另外,在一些情况下,然而,如果出现对这些非驻留页中的任一者的写入,那么其将覆写默认值。因此,不可依赖虚拟页始终返回正确的默认值(例如,如果允许写入继续)。因此,还可结合所述虚拟值使用存储器读取未翻译的另一指示,例如单精度,如本文中所描述。另外,在另一实例中,单独的驻留映射可用于允许着色器程序确定页是否为驻留的。此实例可检查驻留映射以确定从纹理的读取是否可发生。例如,运行着色器程序的GPU可向MMU请求驻留检查。在GPU请求驻留检查时,MMU可检查驻留可确定例如瓦片(多个存储器页)是否驻留在存储器中。如果驻留映射的检查返回瓦片是非驻留的,那么可能使用着色器中的默认值而非从存储器获取所述值。在一个实例中,所请求的存储器存取可存取瓦片化纹理。瓦片化纹理或一个粗糙水平的瓦片化纹理可不被存储于所述存储器中。因此,可替代地返回默认值,或如下文较详细论述,所述纹理的更粗糙的版本可为可用的。
在各种实例中,提供用于区别导致错误的非驻留页及不导致错误的非驻留页的技术。另外,提供使客户端知晓页何时为非驻留的各种方式。在正存取非驻留的页时客户端在做什么可变化且可一般由客户端的需要指定。
例如,在一种情况下,可使用部分驻留纹理。部分驻留纹理部分存储在存储器中。例如,一些但不是所有粒度水平的纹理可能存储在存储器中。粒度是指可为特定渲染提供的纹理的细节的水平。一般来说,假设给定纹理在3D图片的2D渲染中越远,可以用于纹理中的细节越少。整个纹理(即,每个粒度水平)可大于用于存储其一部分的存储器的大小,例如,一或多个粒度水平。纹理的一部分(例如,一或多个粒度水平)可存储于所述存储器中。因此,驻留检查可用于确定所述纹理的一部分(例如,可以用于图片的给定渲染的纹理的粒度水平)是驻留还是非驻留。例如,GPU可请求驻留检查以确定例如特定粒度水平的纹理是否可用于存储器及存储器控制器8中,或IOMMU可返回指示驻留检查的结果的驻留确认,例如特定粒度水平的纹理是否可用于存储器中。在渲染图片需要纹理的非驻留部分时,存储器控制器8或IOMMU可返回默认值。
在一些实例中,在渲染图片所需要的纹理在存储器中不可用时,客户端可求助于具有较高mipmap水平(MIP水平)的更粗糙的纹理,其中给定纹理的以像素计的大小较小,并且因此,纹理较粗糙。mipmap是表示相同图像的阵列的有序集合;每一阵列具有低于先前分辨率的分辨率。例如,mipmap水平(MIP水平)0可针对最高分辨率图像,MIP水平1可针对第二最高分辨率图像,以此类推,其中最高MIP水平针对具有最粗糙分辨率的图像(参看表1)。较粗糙的纹理是可由处理器存储的纹理的较不详细版本且其可取得较少的存储器来存储纹理的较不详细版本。因此,存储纹理的一或多个较不详细版本而不存储纹理的详细版本可更有效。部分驻留的纹理的较粗糙版本可更可能是驻留的。在一些实例中,部分驻留纹理的较粗糙版本可取决于给定纹理所需要的细节水平(LOD)而为可接受的。在一些实例中,纹理单元可选择所显示的粗糙水平。例如,纹理单元可选择驻留的较粗糙纹理而不是非驻留的更详细纹理。纹理单元可为单独的硬件或可为像素着色器或其它着色器的部分。
大小(以像素计) | MIP水平 |
512x512 | 0 |
256x256 | 1 |
128x128 | 2 |
64x64 | 3 |
32x32 | 4 |
16x16 | 5 |
8x8 | 6 |
4x4 | 7 |
2x2 | 8 |
1x1 | 9 |
表1
本文中描述的实例一般提供“失效保护”,使得非驻留页不出现页错误。例如,通过求助于具有较高mipmap水平(MIP水平)的更粗糙的纹理,在渲染图片所需要的纹理在存储器中不可用时。在一些实例中,可不需要读取。此可例如在读取比加载在存储器中的纹理水平更详细的纹理水平时发生。在此情况下,可告诉所述应用纹理未驻留且可使用较不详细版本。纹理可能不被加载到保存存储器。对于色彩写入,可能遗失到保存物理存储器的页。
一些实例可存取非驻留页以用于色彩缓冲。色彩缓冲可包含仅读取操作、仅写入操作或读取及写入操作两者。处理器(例如,GPU)可在例如使用目的地阿尔法通道信息且阿尔法通道信息的当前值将被保持且写入被中止时执行仅读取操作。此可例如在混合情况中发生。阿尔法通道是可添加到图像的额外通道。阿尔法通道信息含有关于图像的透明度信息,且取决于阿尔法类型,其可含有各种水平的透明度。阿尔法通道一般控制所有其它通道的透明度。通过将阿尔法通道信息添加到图像,红色通道、绿色通道及蓝色通道的透明度可受到控制。仅写入通常可用于将色彩值写入到存储器,例如每一像素一个色彩值。读取及写入可一般用于混合。例如,处理器可读取像素的目的地色彩及目的地阿尔法且使用例如与所述像素的传入源色彩及源阿尔法的波特-达夫样式混合而合并所述像素的信息。因此,处理器可读取且随后写入与混合所述数据相关的数据。在一些情况下,可存在中止的写入,在此情况下,仅发生读取。(波特-达夫混合规则界定用于控制两个源像素对目的地像素的贡献的一对混合等式)。
图1是说明可用于实施本发明中描述的技术的实例计算装置2的框图。计算装置2可包括个人计算机、桌上型计算机、膝上型计算机、计算机工作站、视频游戏平台或控制台、无线通信装置(例如,移动电话、蜂窝式电话、卫星电话和/或移动电话手持机)、陆线电话、因特网电话、例如便携式视频游戏装置或个人数字助理(PDA)的手持式装置、个人音乐播放器、视频播放器、显示装置、电视、电视机顶盒、服务器、中间网络装置、主机计算机或处理及/或显示图形数据的任何其它类型的装置。
如图1的实例中所说明,计算装置2包含用户接口4、CPU 6、存储器控制器8、存储器10、图形处理单元(GPU)12、GPU高速缓冲存储器14、显示接口16、显示器18和总线20。用户接口4、CPU 6、存储器控制器8、GPU 12和显示接口16可使用总线20彼此通信。应注意,图1中说明的不同组件之间的总线和通信接口的特定配置仅是示范性的,且具有相同或不同组件的计算装置和/或其它图形处理系统的其它配置可用以实施本发明的技术。
CPU 6可包括控制计算装置2的操作的通用或专用处理器。用户可将输入提供到计算装置2以致使CPU 6执行一或多个软件应用。在CPU 6上执行的软件应用可包含(例如)操作系统、字处理器应用、电子邮件应用、电子数据表应用、媒体播放器应用、视频游戏应用、图形用户接口应用或另一程序。用户可经由一或多个输入装置(未图示)(例如,键盘、鼠标、麦克风、触摸垫或经由用户输入接口4耦合到计算装置2的另一输入装置)将输入提供到计算装置2。
在CPU 6上执行的软件应用可包含指令GPU 12致使将图形数据渲染到显示器18的一或多个图形渲染指令。在一些实例中,软件指令可符合图形应用编程接口(API),例如开放图形库API、开放图形库嵌入系统(OpenGL ES)API、Direct3D API、DirectXAPI、RenderMan API、WebGL API或任何其它公共或专有标准图形API。为了处理图形渲染指令,CPU 6可将一或多个图形渲染命令发布到GPU 12以致使GPU 12执行图形数据的渲染的一些或全部。在一些实例中,待渲染的图形数据可包含例如点、线、三角形、四边形、三角形带、小片等图形基元的列表。
本发明提供向客户端(例如CPU 6、GPU 12或存储器控制器8)告知存储器页(例如,虚拟存储器的固定长度邻接块)非驻留在存储器10中的系统及方法。一些实例可包含尝试存取非驻留页且确定非驻留页不应该导致页错误。此确定可基于指示特定非驻留页不应该产生页错误的位。一些实例可在对所述非驻留页的存取是读取时返回默认值。在一些实例中,所述非驻留页不应该导致页错误且在对所述非驻留页的存取是写入时中断写入。所述非驻留页不应该导致页错误。在另一实例中,处理器(例如GPU 12)可尝试存取非驻留页(即,未存储于存储器(例如存储器10)中的页)。非驻留页的地址可替代地指向例如含有默认值的存储器10中的存储器页。在对所述非驻留页的存取是读取且非驻留页不应该导致页错误时,默认值可由存储器10通过存储器控制器8返回到GPU 12。在写入是对非驻留页且所述非驻留页不应该导致页错误时,例如GPU 12等处理器的写入可被中断。在一些实例中,例如GPU 12等处理器可重新计算从中断的写入丢失的数据(如果稍后需要所述数据)。
存储器控制器8促进将数据传递进出存储器10。例如,存储器控制器8可从CPU 6及/或GPU 12接收存储器读取请求及存储器写入请求,且服务关于存储器10的此类请求以便为计算装置2中的组件提供存储器服务。存储器控制器8通信地耦合到存储器10。虽然在图1的实例计算装置2中将存储器控制器8说明为与CPU 6及存储器10两者分开的处理模块,但在其它实例中,存储器控制器8的功能性中的一些或全部可实施在CPU 6、GPU 12及存储器10中的一或多者上。在一些实例中,存储器管理单元(MMU)可为例如GPU 12或其它客户端的部分。在其它实例中,MMU(未图示)可在每个客户端(例如GPU 12)与存储器控制器8之间。
存储器10可存储可存取以供CPU 6执行的程序模块和/或指令和/或供CPU 6上执行的程序使用的数据。举例来说,存储器10可存储用户应用和与所述应用相关联的图形数据。存储器10还可存储供计算装置2的其它组件使用和/或由其产生的信息。举例来说,存储器10可充当用于GPU 12的装置存储器且可存储将由GPU 12操作的数据以及由GPU 12执行的操作产生的数据。举例来说,存储器10可存储路径数据、路径片段数据、表面、纹理缓冲器、深度缓冲器、单元缓冲器、顶点缓冲器、帧缓冲器或类似者的任何组合。另外,存储器10可存储命令流以供GPU 12处理。存储器10可包含一或多个易失性或非易失性存储器或存储装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、同步动态随机存取存储器(SDRAM)、只读存储器(ROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
GPU 12可经配置以执行由CPU 6发出到GPU 12的命令。由GPU 12执行的命令可包含图形命令、绘制调用命令、GPU状态编程命令、存储器传送命令、通用计算命令、内核执行命令等。存储器传递命令可包含例如存储器复制命令、存储器合成命令及块传递(传图)命令。
在一些实例中,GPU 12可经配置以执行图形操作以向显示器18渲染一或多个图形基元。在此些实例中,当在CPU 6上执行的软件应用中的一者需要图形处理时,CPU 6可将图形数据提供到GPU 12以用于向显示器18渲染且将一或多个图形命令发出到GPU 12。所述图形命令可包含例如绘制调用命令、GPU状态编程命令、存储器传递命令、传图命令等。图形数据可包含顶点缓冲器、纹理数据、表面数据等。在一些实例中,CPU 6可通过将命令和图形数据写入到存储器10而将所述命令和图形数据提供到GPU 12,存储器10可由GPU 12存取。
在其它实例中,GPU 12可经配置以针对在CPU 6上执行的应用执行通用计算。在此些实例中,当在CPU 6上执行的软件应用中的一者决定卸载到GPU 12的计算任务时,CPU 6可将通用计算数据提供给GPU 12,且将一或多个通用计算命令发出到GPU 12。所述通用计算命令可包含例如内核执行命令、存储器传递命令等。在一些实例中,CPU 6可通过将命令和图形数据写入到可由GPU 12存取的存储器10而将命令和通用计算数据提供到GPU 12。
在一些情况下,GPU 12可内建有高度并行的结构,其提供比CPU 6更有效的处理。举例来说,GPU 12可包含经配置而以并行方式对多个顶点、控制点、像素和/或其它数据操作的多个处理元件。GPU 12的高度并行性质在一些情况下可允许GPU 12与使用CPU 6渲染图像相比更快地将图形图像(例如,GUI和二维(2D)和/或三维(3D)图形场景)渲染到显示器18上。另外,GPU 12的高度并行性质可允许GPU 12比CPU 6更快速地处理用于通用计算应用的某些类型的向量及矩阵操作。
在一些实例中,可将GPU 12集成到计算装置2的母板中。在其它情况下,GPU 12可存在于图形卡上,所述图形卡安装在计算装置2的母板中的端口中或可以其它方式并入经配置以与计算装置2互操作的外围装置内。在其它情况下,GPU 12可位于与CPU 6相同的微芯片上,从而形成系统芯片(SoC)。GPU 12可包含一或多个处理器,例如一或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它等效的集成或离散逻辑电路。
在一些实例中,GPU 12可直接耦合到GPU高速缓冲存储器14。因此,GPU 12可在不必使用总线20的情况下从GPU高速缓冲存储器14读取数据且将数据写入到GPU高速缓冲存储器14。换句话说,GPU 12可使用本地存储装置而不是片外存储器在本地处理数据。此允许GPU 12通过消除GPU 12经由总线20读取及写入数据的需要而以更有效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,GPU 12可不包含单独的高速缓冲存储器,而是经由总线20利用存储器10。GPU高速缓冲存储器14可包含一或多个易失性或非易失性存储器或储存装置,例如随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
CPU 6及/或GPU 12可将再现的图像数据存储在存储器10内所分配的帧缓冲器中。显示接口16可从帧缓冲器检索数据且配置显示器18以显示由再现的图像数据表示的图像。在一些实例中,显示接口16可包含经配置以将从帧缓冲器检索的数字值转换为可由显示器18消耗的模拟信号的数/模转换器(DAC)。在其它实例中,显示接口16可将数字值直接传递到显示器18以进行处理。
显示器18可包含监视器、电视、投影装置、液晶显示器(LCD)、等离子显示面板、发光二极管(LED)阵列、阴极射线管(CRT)显示器、电子纸、表面传导电子发射显示器(SED)、激光电视显示器、纳米晶体显示器或另一种类型的显示单元。显示器18可集成在计算装置2内。举例来说,显示器18可为移动电话手持机或平板计算机的屏幕。或者,显示器18可为经由有线或无线通信链路而耦合到计算机装置2的独立装置。举例来说,显示器18可为经由电缆或无线链路而连接到个人计算机的计算机监视器或平板显示器。
总线20可使用总线结构和总线协议的任何组合来实施,包含第一、第二和第三代总线结构和协议、共享总线结构和协议、点对点总线结构和协议、单向总线结构和协议以及双向总线结构和协议。可用以实施总线20的不同总线结构和协议的实例包含例如HyperTransport总线、InfiniBand总线、高级图形端口总线、外围组件互连(PCI)总线、PCI高速总线、高级微控制器总线架构(AMBA)、高级高性能总线(AHB)、AMBA高级外围总线(APB),和AMBA高级eXentisible接口(AXI)总线。也可以使用其它类型的总线结构和协议。
可在图1中说明的计算装置2中的组件中的任一者中实施本发明中所描述的用于区别导致错误的非驻留页及不导致错误的非驻留页的技术,所述组件包含例如CPU 6、GPU12及存储器10。页也可被称作存储器页或虚拟页。所述页可为虚拟存储器的固定长度邻接块。由于所述页是虚拟的,所以其可或可不存储于例如存储器10等存储器中。在特定页存储在例如存储器10中时,其可被称为驻留页。相反,在特定页未存储在例如存储器10中时,其可被称为非驻留页。其也可被称作未驻留。在一些实例中,可在GPU 12中(例如,在GPU 12的图形管线中)实施用于区别导致错误的非驻留页及不导致错误的非驻留页的技术中的全部或几乎全部。
图2及3说明本发明的两个实例系统的进一步细节,其描述区别导致错误的非驻留页及不导致错误的非驻留页的各种技术。另外,图2及3说明使例如GPU 12等客户端知晓页何时为非驻留的各种方式。换句话说,在页不存储于例如存储器10等存储器中时。一些实例实现区别导致错误及不导致错误的非驻留页。
图2是说明用以实施本发明中所描述的用于区别导致错误的非驻留页及不导致错误的非驻留页的技术的实例计算装置的框图。所述计算装置包含GPU 12、存储器控制器8(其可为输入/输出存储器管理单元(IOMMU))、存储器10(其可为动态随机存取存储器(DRAM))及页表(PTE)206。
如图2中所说明,实例计算装置包含存储器控制器8。存储器控制器8可呈存储器控制器的形式。另外,存储器控制器8可经配置以处理各种页属性210,例如读取权限(R)、写入权限(W)、可高速缓存存储器位置(C)及共享存储器位置(S)。如所说明,在图2的实例中,页属性210可包含用以指定对不应该产生页错误的非驻留页的存取的额外位。因此,存储器控制器8可经配置以处理指示对非驻留页的存取不应该产生页错误的“无错”(NF)位208。NF位208可指示对此非驻留页的存取不应该产生页错误。
NF位208的一个目的可为指定非驻留材料不应该导致错误。NF位208还可影响非驻留页的确定。NF位208可用于确定瓦片化资源中的页是否为驻留,如此处所描述。例如,NF位208可结合默认值、驻留检查等使用以确定瓦片化资源中的页是否为驻留。
在一实例中,如果GPU 12、存储器控制器8或其它处理器执行导致错误发生的存储器存取(例如,读取、写入),那么存储器存取是对非驻留页且NF位208必定已经被设定成允许所述存储器存取的错误。如果存储器存取不出现错误且NF位208使得允许发生错误,那么GPU 12、存储器控制器8或其它处理器进行的尝试的存储器存取必定是对驻留页。如果错误将出现,除了NF位208被设定成使得错误将不发生之外,那么可发生本发明的其它方面,例如返回默认值、驻留检查等。
图2说明包含被称作“NF”208的“无错”、“不是驻留位”或“非驻留位”的实例。对于给定虚拟地址,页表可存储与虚拟地址相关联的物理地址212,以及存储在由物理地址识别的页中的数据的页属性210。页属性210可被存储为前置于物理地址212(作为一个实例)的二进制位。这些页属性210中的一者是NF位208,如图2中所说明。
一些实例实现使例如GPU 12等客户端知晓页何时是非驻留的。如本文中所描述,页在其不存储于例如存储器10等存储器中时是非驻留的。由于页是虚拟的,所以其可或可不存储于例如存储器10等存储器中。在特定页存储在例如存储器10中时,其可被称为驻留页。相反,在特定页不存储在例如存储器10中时,其可被称为非驻留页。其也可被称作不驻留。
页可为虚拟存储器的固定长度邻接块。一般来说,虚拟存储器允许寻址及使用当前不驻留在主存储器中的页。在一些情况下,如果例如在GPU 12上运行的程序尝试存取不是在存储器中的页中的位置,即,不驻留或非驻留,那么产生被称为页错误的异常。在一些情况下,操作系统或硬件可自动从辅助存储装置载入所需的页。然而,在本应用中,对非驻留页的一些尝试的存取导致页错误且其它尝试的存取不导致页错误。如上文所论述,DX11瓦片化可允许在不导致错误的情况下发生非驻留存储器存取,确切地说,可替代地发生本文中描述的方面中的一或多者。
在图2中说明的实例中,NF位208可提供非驻留的页不应该导致错误的指示。例如,NF位208可用于确定非驻留的瓦片化资源中的页是否应该导致错误。在一些实例中,这种解决方案的优点是可通过以下方式支持到所有其它资源(非瓦片化)的存取的页错误:简单地返回页错误而非将非瓦片化的非驻留页的虚拟地址映射到虚拟页,这是因为一般在处理器或存储器管理单元尝试读取或写入到非驻留页的存储器地址时出现页错误。
在一实例中,对于到瓦片化资源的存取,可将NF位208设定成不允许错误。相反,对于到所有其它资源(例如非瓦片化)的存取,可将NF位208设定成允许错误。换句话说,对非驻留页的读取或写入应该导致到所有其它资源的存取的页错误。因此,如果NF 208是单一位且NF=“1”指示不应该发生错误,那么NF=“0”指示应该正常地处理错误。因此,对于到所有其它资源(例如非瓦片化)的存取,NF位208将为“0”。相反情况也一样。因此,如果NF 208是单一位且NF=“0”(例如,低有效)指示不应该发生错误,那么NF=“1”指示应该正常地处理错误。因此,对于到所有其它资源(例如非瓦片化)的存取,NF位208将为“1”。
在图2的实例中,在读取不应该导致错误的非驻留页时,可针对所述读取返回默认值,例如预定位值,例如全部0、全部1等。所述默认值提供可以用于所有非驻留页存取的预定义值。在所说明的实例中,如果发生到非驻留页的读取,那么所述值将为0。所述默认值可为例如存储在存储器控制器8中的值。不读取存储器10,存储器控制器8可替代地返回所述默认值。然而,所述默认值不确凿地指示所述页是非驻留的。所述默认值(例如0)可为共同值且驻留页的存储器10中的存储器位置有可能偶然含有默认值。因此,存储器控制器8可提供状态或确认(ACK)以向执行所述读取的装置(例如GPU 12)指示已经存取不应该导致错误的非驻留页。
在一实例中,可执行读取但一般不执行写入的纹理单元可在读取不应该导致错误的非驻留页时返回默认值。所述纹理单元可为单独的硬件或可为像素着色器或其它着色器的部分。所述纹理单元可选择所显示的粗糙水平。例如,所述纹理单元可选择驻留的较粗糙纹理而不是非驻留的更详细纹理。
如图2的实例中所说明,可由例如GPU 12等客户端执行(或请求)驻留检查。在图2的实例中,GPU 12请求驻留检查且存储器控制器8返回指示虚拟存储器位置是驻留还是非驻留的驻留确认。
在图2的实例中,在尝试写入到非驻留页时,应该丢弃所述写入尝试,因为写入尝试是针对不是存储在存储器中的页。换句话说,非驻留页的虚拟地址不映射到实际的物理存储器地址。用于尝试的写入的数据可被丢失且可需要重新计算所述数据(如果稍后需要所述数据)。然而,此一般是必要的,因为尚未分配存储器位置来存储非驻留页的信息。在一实例中,存储器控制器8(例如,存储器管理单元(MMU)或输入/输出MMU(IOMMU))可在存储器控制器8确定写入是针对非驻留页时丢弃所述写入。在其它实例中,像素着色器、几何着色器或其它着色器单元可执行写入且可经编程以丢弃对非驻留页的写入。
在一些实例中,执行读取及/或写入以用于深度测试。深度测试是可相对于三维(3-D)图形中的图像深度坐标使用以决定所渲染场景的哪些元素可见及哪些元素被隐藏的图形操作。还可执行读取以作为色彩混合的部分,其可使用操作指派新的色彩值:New_color=old_color*(1-blend_value)+incoming_color*(blend_value)。这些功能可使用本文中提供的实例以允许处理与深度测试、色彩混合等相关的驻留及非驻留页。
如上文所论述,一些实例可使用现有的页表属性。换句话说,在此实例中可不需要存在NF位208。在此实例中,填充有恰当默认值的“虚拟页”可用于所有非驻留页。所述虚拟页可为填充有恰当默认值的单一存储器页,可例如在读取到非驻留页的任何存储器地址时存取所述恰当默认值。
图3是说明用以实施本发明中所描述的用于区别导致错误的非驻留页及不导致错误的非驻留页的技术的实例计算装置的框图。图3的实例使用现有的页表属性且不使用NF位208。在此实例中,填充有恰当默认值的“虚拟页”可用于所有非驻留页。计算装置包含GPU12、存储器控制器8、存储器10、PTE 306及比较单元308。不使用无错/非驻留位。
在图3中说明的替代解决方案中,虚拟页含有指示页是否为驻留的虚拟值。所述虚拟页可为填充有恰当默认值的单一存储器页,可例如在读取到非驻留页的任何存储器地址时存取所述默认值。所述虚拟值可例如为预定位值,例如全部0、全部1或一些其它已知值。在其它实例中,所述虚拟页可包含随机或未知值。然而,在此实例中,虚拟页中的值将不提供页是驻留还是非驻留的指示。此实例可将虚拟页存储在存储器10中的特定物理存储器地址处且将物理存储器地址的值存储在寄存器中,例如,存储在存储器控制器8或PTE 306中。例如,PTE 306可包含物理地址寄存器312。非驻留页的虚拟地址可被映射到虚拟页的物理存储器地址。另外,在正存取页时,可使用比较单元308比较所述页表中的其物理存储器与存储在物理地址寄存器312中的物理存储器值。如果所述两个值相同,那么客户端确定其正存取非驻留页。例如,客户端可为GPU 12且其可确定其正通过存储器控制器8存取非驻留页。如果所述两个值不同,那么客户端可确定其正存取驻留页。然而,将理解,此比较可仅提供页是驻留的指示,这是因为存储在特定存储器位置中的值可仅偶然等于默认值。因此,本发明的其它方面可用于验证所述指示是正确的,例如如本文中所描述的驻留检查。
在一个实例中,系统(例如图3中说明的比较单元308)可比较地址(例如,页表(PTE306)中的物理地址寄存器312)与存储在寄存器中的虚拟页的地址值(例如,无错/不驻留页地址寄存器NF地址寄存器310)以确定物理地址是否与存储在寄存器中的到虚拟页的地址相同。以此方式,所述系统可确定所述页是驻留还是非驻留的。
一般来说,单一共用虚拟页可以用于全部非驻留页。因此,如果正存取的页的物理地址与NF地址寄存器310中的地址值中的一者匹配,那么所述页是非驻留的。对所述页的读取可正常进行。换句话说,存储在虚拟页中的数据(例如,默认值)可从例如存储器10中的为虚拟页保留的存储器读取。这是因为适当的默认值将一般已经被写入到虚拟页且这些值将由尝试存取非驻留页的系统读取。应该丢弃尝试的写入。再者,尝试的写入的数据可丢失且可需要在稍后需要所述数据的情况下重新计算所述数据。然而,此一般是必要的,因为除包含可由多个非驻留页使用的虚拟值的页之外,尚未分配存储器位置来存储非驻留页的信息。另外,在一实例中,在正被存取的页匹配寄存器中的指示所述页是非驻留页的值时,驻留检查应该返回错误。例如,运行着色器程序的GPU可向MMU请求驻留检查。在GPU请求驻留检查时,MMU可检查驻留可确定例如瓦片(多个存储器页)是否驻留在存储器中。如果驻留映射的检查返回瓦片是非驻留的,那么可能使用着色器中的默认值而非从存储器获取所述值。
这种解决方案的一些实例的优点是非驻留页明显被映射到‘虚拟页’而不是产生关于读取的页错误,且仅需要关于写入的‘特殊’处置。这种解决方案的一些实例的另一优点是默认值可为可编程的,这是因为软件可负责使用默认值填充页。
在一些实例中,DX11特征(即,瓦片化资源)还可需要图形着色器程序确定资源的瓦片(多个存储器页)是否为驻留的方式。如上文所论述,填充有恰当默认值的虚拟页可以用于所有非驻留页。在一些情况下,然而,如果出现对这些非驻留页中的任一者的写入,那么其将覆写默认值。因此,不可依赖虚拟页始终返回正确的默认值。还需要单独的驻留映射以允许着色器程序确定页是否为驻留的。此实例可检查驻留映射以确定从纹理的读取是否可发生。如果驻留映射的检查返回瓦片是非驻留的,那么可能使用着色器中的默认值而非从瓦片化纹理获取所述值。
在各种实例中,提供用于区别导致错误的非驻留页及不导致错误的非驻留页的技术。另外,提供使例如GPU 12等客户端知晓页何时为非驻留的各种方式。在正存取非驻留的页时客户端在做什么可变化且可一般由客户端的需要指定。
例如,在一种情况下可使用部分驻留的纹理。部分驻留纹理部分存储在存储器中。例如,一些但不是所有粒度水平的纹理可能存储在存储器中。粒度是指可为特定渲染提供的纹理的细节的水平。一般来说,假设给定纹理在3D图片的2D渲染中越远,可以用于纹理中的细节越少。
所述纹理可大于用于存储其一部分的存储器的大小。例如,每个粒度水平一起可大于用于存储其一部分的存储器的大小,例如,一或多个粒度水平。然而,纹理的一部分(例如,一或多个粒度水平)可存储于所述存储器中。因此,驻留检查可用于确定所述纹理的一部分是驻留还是非驻留。所述纹理的非驻留部分可返回默认值。
在一些情况下,可使用驻留的纹理粒度水平而不使用非驻留的纹理粒度水平。因此,在此实例中,客户端可求助于具有较高mipmap水平(MIP水平)的更粗糙的纹理,其中给定纹理的以像素计的大小较小,并且因此,纹理较粗糙。mipmap是表示相同图像的阵列的有序集合;每一阵列具有低于先前分辨率的分辨率。例如,mipmap水平(MIP水平)0可针对最高分辨率图像,MIP水平1可针对第二最高分辨率图像,以此类推,其中最高MIP水平针对具有最粗糙分辨率的图像(参看上表1)。通过使用较粗糙的纹理,可使用较少的存储器来存储纹理的较不详细版本。因此,部分驻留的纹理的较粗糙版本可自身为驻留的驻留部分。在一些实例中,部分驻留纹理的较粗糙版本可取决于给定纹理所需要的细节水平(LOD)而为可接受的。在一些实例中,纹理单元可从用于给定纹理的多个不同粗糙水平选择所显示的粗糙水平。所述纹理单元可为单独的硬件或可为像素着色器或其它着色器的部分。本文中描述的实例一般提供“失效保护”,使得非驻留页不出现页错误。
图4是说明可执行本发明的用于区别导致错误的非驻留页及不导致错误的非驻留页的技术的实例图形管线的概念图。在一些实例中,所述图形管线可对应于DirectX(DX)11图形管线。如图4中所示,所述实例图形管线包含资源块42和多个处理级。所述多个处理级包含输入汇编器(IA)级44、顶点着色器(VS)级46、外壳着色器(HS)级48、棋盘形布置器级50、域着色器(DS)级52、几何着色器(GS)级54、光栅化器级56、像素着色器(PS)级58和输出合并器级60。HS级48、棋盘形布置器级50和域着色器级52可形成图形管线的棋盘形布置级62。
如本文中所描述,在一些实例中,提供让图形着色器程序(例如,VS级46、HS级48、DS级52、GS级54、PS级58或其它级)确定资源的瓦片(多个存储器页)是否为驻留的方式。资源的瓦片在其存储于例如存储器10等存储器中时是驻留的。资源的瓦片在其不存储于存储器中时是非驻留的。
在一些实例中,填充有恰当默认值的虚拟页可以用于全部非驻留页。虚拟页是可用于提供存储器(例如存储器10)的区域的存储器页,可在尝试对任何非驻留页的读取时读取所述区域。可存储在虚拟页中的默认值可为任何预定值,例如全部0、全部1或任何其它预定值。将已知预定值用作默认值可允许读取提供页可为非驻留页的指示。在一些实例中,可能替代地使用随机值、从先前写入留下的值或任何其它值。在此实例中,可能不提供指示,因为不使用预定值。
在一些情况下,如果出现对非驻留页中的任一者的写入,那么其将覆写默认值。因此,不可依赖虚拟页始终返回正确的默认值(例如,如果允许完成写入)。单独的驻留映射还可用于允许着色器程序(例如,在例如GPU 12上运行的着色器级46、48、52、54、58)确定页是否为驻留的。一般来说,任何着色器程序可如本文中所描述进行交互以确定页是否为驻留的。通常,全部着色器程序都具有存储器存取。驻留映射可为存储器控制器8的部分或可例如由存储器控制器8存储在存储器10中。在此实例中,GPU 12或例如在GPU 12上运行的着色器程序可检查驻留映射以确定从特定页的读取是驻留还是非驻留。在一些实例中,纹理的全部或一部分可存储在存储器10中。如果纹理的仅一部分存储在例如存储器10中,那么一些所述纹理是驻留的且一些所述纹理程序是非驻留的。例如,不同粗糙水平的纹理可存储在存储器10中,而其它粗糙水平的纹理可不存储在存储器10中。因此,可使用驻留映射执行驻留检查以确定渲染特定图片可能需要的特定粗糙水平的特定纹理是否可出现。如果驻留映射的检查返回含有所需要的粗糙水平的纹理的瓦片是非驻留的,那么可能使用着色器级46、48、52、54、58中的默认值而非从瓦片化纹理获取值。一些实例可在读取是针对非驻留页时读取不同粗糙水平的部分驻留的纹理。
如图4中所示,所述管线级中的许多也可以通信地耦合到资源块。资源块可包含例如缓冲器和纹理等存储器资源。剩余块指示管线级。具有笔直拐角的块表示固定功能管线级,且具有圆形拐角的块表示可编程级。可编程级中的每一者可经配置以执行特定类型的着色器程序。例如,顶点着色器级46可经配置以执行顶点着色器程序,外壳着色器级48可经配置以执行外壳着色器程序等。不同类型的着色器程序中的每一者可在GPU的共同着色器单元上或在专用于执行一或多个特定类型的着色器程序的一或多个专用着色器单元上执行。外壳着色器级48、棋盘形布置器级50及域着色器级52级可统称为棋盘形布置级62。
截至2013年5月9日,关于DirectX 11图形管线的一般操作的额外背景信息可在http://msdn.microsoft.com/en-us/library/windows/desktop/ff476882%28v=vs.85%29.aspx处找到,且以引用的方式并入本文。关于DirectX 11图形管线的大体操作的进一步信息可参见辛克(Zink)等人的“以Direct3D 11进行的实际渲染和计算”CRC出版社(2011年),其整个内容以引用的方式并入本文中。
图5是说明根据本发明中所描述的一或多个实例风实例方法范流程图。在一些实例中,存储器控制器8、GPU 12或其它处理器可尝试存取非驻留页。非驻留页风地址可指向含有默认值范存储器页。在一些实例中,存取可为例如执行读取(550)。非驻留页是不具有与其相关联的物理存储器位置的页。相反,驻留页是具有与其相关联的物理存储器位置的页。
存储器控制器8、GPU 12或其它处理器可基于指示特定非驻留页不应该产生页错误的位或旗标而确定非驻留页不应该导致页错误(552)。DX11中的被称为瓦片化资源的新特征允许在没有出错的情况下经由图形操作(即纹理读取、色彩缓冲器写入)存取资源的非驻留页。因此,可需要区别导致错误的非驻留页及不导致错误的非驻留页。所述位允许客户端知晓页何时是非驻留的。
存储器控制器8、GPU 12或其它处理器可接收存储器读取未翻译的指示的返回并且还在对所述非驻留页的存取是读取且非驻留页不应该导致页错误时返回默认值(554)。所述默认值可来自寄存器、存储器或其它位置。默认值可为预定位值,例如全部0、全部1,或一些其它默认值。这些默认值可由读取返回。所述默认值提供可以用于全部非驻留页存取的预定义值。在所说明的实例中,如果出现对非驻留页的读取,那么所述值将为0。然而,此不确凿地指示所述页是非驻留的。所述默认值(例如,0、1等)可为共同值且驻留页可有可能偶然含有所述默认值。MMU或其它处理器可使用例如状态或确认(ACK)以向执行所述读取的装置指示已经存取不应该导致错误的非驻留页。在一实例中,可执行读取但一般不执行写入的纹理单元可在其或另一处理器读取不应该导致错误的非驻留页时返回默认值。另外,在一实例中,客户端可执行驻留检查。
在一些实例中,存储器控制器8、GPU 12或其它处理器可在对非驻留页的存取是写入且非驻留页不应该导致页错误时中断写入(556)。在一些实例中,所述写入可为中断的,这是因为未提供用于所述非驻留页的存储器。
图6是说明根据本发明中所描述的一或多个实例的实例方法的流程图。存储器控制器8、GPU 12或其它处理器可存取非驻留页(650)。非驻留页的地址可指向含有默认值的存储器页。含有默认值的所述存储器页也可被称作虚拟页且被称为含有虚拟值。这些虚拟可指示页是否为驻留的。例如,在存取虚拟页时,读取请求的字节地址可映射到虚拟页中且将返回存储在那里的值(例如)以替代0x0,除非其为虚拟值。
存储器控制器8、GPU 12或其它处理器可接收存储器读取未翻译的返回的指示且在存储器控制器8、GPU 12或其它处理器可尝试存取非驻留页时返回默认值(652)。此可例如在存储器控制器8、GPU 12或其它处理器尝试从非驻留页的读取时发生。非驻留页不应该导致页错误。对页的读取可正常进行。这是因为适当的默认值将已经写入到虚拟页且这些值将由尝试存取非驻留页的系统读取。在虚拟地址不映射到物理地址时存储器读取不翻译。
在对所述非驻留页的所述存取是写入且非驻留页不应该导致页错误时,存储器控制器8、GPU 12或其它处理器可中断写入或在一些情况下,存储器自身可中断写入(654)。在一些情况下,然而,如果出现对这些非驻留页中的任一者的写入,那么其将覆写默认值。因此,如果允许写入继续,那么将不能够依赖虚拟页始终返回正确的默认值。
本发明中所描述的技术可至少部分实施于硬件、软件、固件或其任何组合中。举例来说,所描述技术的各种方面可实施于一或多个处理器中,包含一或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA),或任何其它等效集成或离散逻辑电路,以及此类组件的任何组合。术语“处理器”或“处理电路”可大体上指前述逻辑电路中的任一者(单独或结合其他逻辑电路)或例如执行处理的离散硬件的任何其它等效电路。
此硬件、软件和固件可实施于相同装置内或单独装置内以支持本发明中所描述的各种操作和功能。另外,所描述单元、模块或组件中的任一者可一起或单独作为离散但可互操作逻辑装置而实施。将不同特征描述为模块或单元意图强调不同功能方面且未必暗示此类模块或单元必须由单独硬件或软件组件实现。而是,与一或多个模块或单元相关联的功能性可由单独硬件、固件和/或软件组件执行,或整合到共用或单独硬件或软件组件内。
本发明中所描述的技术也可存储、体现或编码于计算机可读媒体(例如,存储指令的计算机可读存储媒体)中。嵌入或编码于计算机可读媒体中的指令可导致一或多个处理器执行本文中所描述的技术(例如,当由一或多个处理器执行指令时)。计算机可读存储媒体可包含随机存取存储器(RAM)、只读存储器(ROM)、可编程只读存储(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器、硬盘、CD-ROM、软盘、盒式磁带、磁性媒体、光学媒体或其它有形计算机可读存储媒体。
计算机可读媒体可包含计算机可读存储媒体,其对应于例如上文所列的有形存储媒体的有形存储媒体。计算机可读媒体也可包括通信媒体,其包含促进计算机程序从一个地点到另一地点的传送(例如,根据通信协议)的任何媒体。以此方式,短语“计算机可读媒体”大体上可对应于(1)非暂时性有形计算机可读存储媒体和(2)例如暂时性信号或载波的非有形计算机可读通信媒体。
已描述各种方面和实例。然而,可在不脱离以下权利要求的范围的情况下对本发明的结构或技术作出修改。
Claims (31)
1.一种处理非驻留页的方法,其包括:
使用存储器管理单元MMU确定处理器尝试存取第一非驻留页,所述第一非驻留页包括不映射到存储器中的页的页;
读取一个或多个值的第一集合,所述一个或多个值的第一集合基于所述第一非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第一非驻留页的所述存取将发生页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第一集合基于所述第一非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第一非驻留页不针对纹理信息而指示将发生所述页错误;
响应于所述处理器尝试存取所述第一非驻留页的所述确定,使用所述MMU基于所述一个或多个值的第一集合来确定从对所述第一非驻留页的所述存取将发生所述页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误;
响应于所述第一非驻留页针对纹理信息以及从对所述第一非驻留页的所述存取将不发生所述页错误的所述确定,使用所述MMU向所述处理器返回:
存储器读取未翻译的指示,及
在对所述第一非驻留页的所述存取是读取时的默认值;及
使用所述MMU确定所述处理器尝试存取第二非驻留页,所述第二非驻留页包括不映射到所述存储器中的页的页;
读取一个或多个值的第二集合,所述一个或多个值的第二集合基于所述第二非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第二非驻留页的所述存取将发生页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第二集合基于所述第二非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第二非驻留页不针对纹理信息而指示将发生所述页错误;
响应于所述处理器尝试存取所述第二非驻留页的所述确定,使用所述MMU基于所述一个或多个值的第二集合来确定从对所述第二非驻留页的所述存取将发生所述页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误;以及
响应于所述第二非驻留页不针对纹理信息以及从对所述第二非驻留页的所述存取将发生所述页错误的所述确定,使用所述处理器接收指示所述第二非驻留页的所述页错误的信息。
2.根据权利要求1所述的方法,其中读取所述一个或多个值的第一集合包括读取位或旗标,并且其中确定将发生所述页错误还是将不发生所述页错误包括基于所述位或旗标来确定将发生所述页错误还是将不发生所述页错误。
3.根据权利要求1所述的方法,其进一步包括在返回所述默认值时执行驻留检查。
4.根据权利要求1所述的方法,其中所述存取包括对部分驻留的纹理的读取。
5.根据权利要求4所述的方法,其进一步包括读取粗糙水平的所述部分驻留的纹理,作为对所述第一非驻留页的所述存取的一部分。
6.根据权利要求1所述的方法,其中确定所述处理器尝试存取包括确定所述处理器尝试存取所述第一非驻留页以用于色彩缓冲。
7.一种处理非驻留页的方法,其包括:
使用存储器管理单元MMU确定处理器尝试存取第一非驻留页,所述第一非驻留页包括不映射到存储器中的页的页;
读取一个或多个值的第一集合,所述一个或多个值的第一集合基于所述第一非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第一非驻留页的所述存取将发生页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第一集合基于所述第一非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第一非驻留页不针对纹理信息而指示将发生所述页错误;
响应于所述处理器尝试存取所述第一非驻留页的所述确定,使用所述MMU基于所述一个或多个值的第一集合来确定从对所述第一非驻留页的所述存取将发生所述页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误;
响应于所述第一非驻留页针对纹理信息以及从对所述第一非驻留页的所述存取将不发生所述页错误的所述确定,中断所述处理器对所述第一非驻留页的写入存取;
使用MMU确定所述处理器尝试存取第二非驻留页,所述第二非驻留页包括不映射到所述存储器中的页的页;
读取一个或多个值的第二集合,所述一个或多个值的第二集合基于所述第二非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第二非驻留页的所述存取将发生页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第二集合基于所述第二非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第二非驻留页不针对纹理信息而指示将发生所述页错误;
响应于所述处理器尝试存取所述第二非驻留页的所述确定,使用所述MMU基于所述一个或多个值的第二集合来确定从对所述第二非驻留页的所述存取将发生所述页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误;以及
响应于所述第二非驻留页不针对纹理信息以及从对所述第二非驻留页的所述存取将发生所述页错误的所述确定,使用所述处理器接收指示所述第二非驻留页的所述页错误的信息。
8.根据权利要求7所述的方法,其中所述第一非驻留页的地址指向含有默认值的存储器页,所述方法进一步包括将页表中的地址与含有默认值的所述存储器页的地址值进行比较,其中确定所述处理器尝试存取所述第一非驻留页包括基于所述比较而确定所述处理器尝试存取所述第一非驻留页。
9.根据权利要求8所述的方法,其中含有默认值的所述存储器页的所述地址值存储在寄存器中。
10.根据权利要求7所述的方法,其中所述第一非驻留页的地址指向含有默认值的存储器页,其中读取所述一个或多个值包括读取所述默认值,且其中所述默认值指示页是驻留或非驻留的。
11.根据权利要求7所述的方法,其进一步包括在稍后需要从中断的写入丢失的数据的情况下重新计算所述数据。
12.一种用于处理非驻留页的设备,其包括:
存储器,其包括多个页;
处理器,其包括集成电路,所述处理器经配置以:
尝试存取第一非驻留页,所述第一非驻留页包括不映射到所述存储器中的页的页;以及
尝试存取第二非驻留页,所述第二非驻留页包括不映射到所述存储器中的页的页;
存储器管理单元MMU,其包括集成电路,所述MMU经配置以:
确定所述处理器尝试存取所述第一非驻留页;
读取一个或多个值的第一集合,所述一个或多个值的第一集合基于所述第一非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第一非驻留页的所述存取将发生页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第一集合基于所述第一非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第一非驻留页不针对纹理信息而指示将发生所述页错误;
响应于所述处理器尝试存取所述第一非驻留页的所述确定,基于所述一个或多个值的第一集合来确定从对所述第一非驻留页的所述存取将发生所述页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误;
响应于所述第一非驻留页针对纹理信息以及从对所述第一非驻留页的所述存取将不发生所述页错误的所述确定,向所述处理器返回:
存储器读取未翻译的指示,及
在对所述第一非驻留页的所述存取是读取时的默认值,
确定所述处理器尝试存取所述第二非驻留页;
读取一个或多个值的第二集合,所述一个或多个值的第二集合基于所述第二非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第二非驻留页的所述存取将发生页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第二集合基于所述第二非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第二非驻留页不针对纹理信息而指示将发生所述页错误;以及
响应于所述处理器尝试存取所述第二非驻留页的所述确定基于所述一个或多个值的第二集合来确定从对所述第二非驻留页的所述存取将发生所述页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误;
其中所述处理器经配置以响应于所述第二非驻留页不针对纹理信息以及从对所述第二非驻留页的所述存取将发生所述页错误的所述确定而接收指示所述第二非驻留页的所述页错误的信息。
13.根据权利要求12所述的设备,其中为了读取所述一个或多个值的第一集合,所述MMU经配置以读取位或旗标,并且其中所述MMU经配置以基于所述位或旗标来确定将发生所述页错误还是将不发生所述页错误。
14.根据权利要求12所述的设备,其中所述处理器进一步经配置以在返回所述默认值时执行驻留检查。
15.根据权利要求12所述的设备,其中,为尝试存取所述第一非驻留页,所述处理器进一步经配置以执行对部分驻留的纹理的读取。
16.根据权利要求15所述的设备,其中所述处理器进一步经配置以读取粗糙水平的所述部分驻留的纹理,作为对所述第一非驻留页的所述存取的一部分。
17.根据权利要求12所述的设备,其中,为确定所述处理器尝试存取所述第一非驻留页,所述处理器经配置以确定所述处理器尝试存取所述第一非驻留页以用于色彩缓冲。
18.一种用于处理非驻留页的设备,其包括:
存储器,其包括多个页;
处理器,其包括集成电路,所述处理器经配置以:
尝试存取第一非驻留页,所述第一非驻留页包括不映射到所述存储器中的页的页;以及
尝试存取第二非驻留页,所述第二非驻留页包括不映射到所述存储器中的页的页;
存储器管理单元MMU,其包括集成电路,所述MMU经配置以:
确定所述处理器尝试存取所述第一非驻留页;
读取一个或多个值的第一集合,所述一个或多个值的第一集合基于所述第一非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第一非驻留页的所述存取将发生页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第一集合基于所述第一非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第一非驻留页不针对纹理信息而指示将发生所述页错误;
响应于所述处理器尝试存取所述第一非驻留页的所述确定,基于所述一个或多个值的第一集合来确定从对所述第一非驻留页的所述存取将发生所述页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误;
其中,响应于所述第一非驻留页针对纹理信息以及从对所述第一非驻留页的所述存取将不发生所述页错误的所述确定,所述处理器经配置以在对所述第一非驻留页的所述存取是写入时中断写入,
确定所述处理器尝试存取所述第二非驻留页;
读取一个或多个值的第二集合,所述一个或多个值的第二集合基于所述第二非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第二非驻留页的所述存取将发生页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第二集合基于所述第二非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第二非驻留页不针对纹理信息而指示将发生所述页错误;以及
响应于所述处理器尝试存取所述第二非驻留页的所述确定,基于所述一个或多个值的第二集合来确定从对所述第二非驻留页的所述存取将发生所述页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误;以及
其中,响应于所述第二非驻留页不针对纹理信息以及从对所述第二非驻留页的所述存取将发生所述页错误的所述确定,所述处理器经配置以接收指示所述第二非驻留页的所述页错误的信息。
19.根据权利要求18所述的设备,其中所述第一非驻留页的地址指向含有默认值的存储器页,其中所述MMU进一步经配置以将页表中的地址与含有默认值的所述存储器页的地址值进行比较,且其中为确定所述处理器尝试存取所述第一非驻留页,所述MMU经配置以基于所述比较而确定所述处理器尝试存取所述第一非驻留页。
20.根据权利要求19所述的设备,其中含有默认值的所述存储器页的所述地址值存储在寄存器中。
21.根据权利要求18所述的设备,其中所述第一非驻留页的地址指向含有默认值的存储器页,其中为了读取所述一个或多个值,所述MMU经配置以读取所述默认值,且其中所述默认值指示页是驻留或非驻留的。
22.根据权利要求18所述的设备,其中所述处理器进一步经配置以在稍后需要从中断的写入丢失的数据的情况下重新计算所述数据。
23.一种用于处理非驻留页的设备,其包括:
处理器;及
存储器管理单元MMU,
其中所述MMU包括:
用于确定所述处理器尝试存取第一非驻留页的装置,所述第一非驻留页包括不映射到存储器中的页的页;
用于读取一个或多个值的第一集合的装置,所述一个或多个值的第一集合基于所述第一非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第一非驻留页的所述存取将发生页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第一集合基于所述第一非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第一非驻留页不针对纹理信息而指示将发生所述页错误;
用于响应于所述处理器尝试存取所述第一非驻留页的所述确定而基于所述一个或多个值的第一集合来确定从对所述第一非驻留页的所述存取将发生所述页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误的装置;
用于响应于所述第一非驻留页针对纹理信息以及从对所述第一非驻留页的所述存取将不发生所述页错误的所述确定而向所述处理器返回以下各者的装置:
存储器读取未翻译的指示,及
在对所述第一非驻留页的所述存取是读取时到所述处理器的默认值;
用于确定所述处理器尝试存取第二非驻留页的装置;
用于读取一个或多个值的第二集合的装置,所述一个或多个值的第二集合基于所述第二非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第二非驻留页的所述存取将发生页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第二集合基于所述第二非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第二非驻留页不针对纹理信息而指示将发生所述页错误;以及
用于响应于所述处理器尝试存取所述第二非驻留页的所述确定而基于所述一个或多个值的第二集合来确定从对所述第二非驻留页的所述存取将发生所述页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误的装置;
其中所述处理器包括用于响应于所述第二非驻留页不针对纹理信息以及从对所述第二非驻留页的所述存取将发生所述页错误的所述确定而接收指示所述第二非驻留页的所述页错误的信息的装置。
24.根据权利要求23所述的设备,其中用于读取所述一个或多个值的第一集合的装置包括用于读取位或旗标的装置,并且其中用于确定将发生所述页错误还是将不发生所述页错误的装置包括用于基于所述位或旗标来确定将发生所述页错误还是将不发生所述页错误的装置。
25.根据权利要求23所述的设备,其进一步包括用于在返回默认值时执行驻留检查的装置。
26.一种用于处理非驻留页的设备,其包括:
处理器;及
存储器管理单元MMU,
其中所述MMU包括:
用于确定所述处理器尝试存取第一非驻留页的装置,所述第一非驻留页包括不映射到存储器中的页的页;
用于读取一个或多个值的第一集合的装置,所述一个或多个值的第一集合基于所述第一非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第一非驻留页的所述存取将发生页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第一集合基于所述第一非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第一非驻留页不针对纹理信息而指示将发生所述页错误;
用于响应于所述处理器尝试存取所述第一非驻留页的所述确定而基于所述一个或多个值的第一集合来确定从对所述第一非驻留页的所述存取将发生所述页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误的装置;
用于确定所述处理器尝试存取第二非驻留页的装置,所述第二非驻留页包括不映射到所述存储器中的页的页;
用于读取一个或多个值的第二集合的装置,所述一个或多个值的第二集合基于所述第二非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第二非驻留页的所述存取将发生页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第二集合基于所述第二非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第二非驻留页不针对纹理信息而指示将发生所述页错误;以及
用于响应于所述处理器尝试存取所述第二非驻留页的所述确定而基于所述一个或多个值的第二集合来确定从对所述第二非驻留页的所述存取将发生所述页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误的装置;
其中所述处理器包括:
用于响应于所述第一非驻留页针对纹理信息以及从对所述第一非驻留页的所述存取将不发生所述页错误的所述确定而中断对所述第一非驻留页的写入存取的装置;及
用于响应于所述第二非驻留页不针对纹理信息以及从对所述第二非驻留页的所述存取将发生所述页错误的所述确定而接收指示所述第二非驻留页的所述页错误的信息的装置。
27.根据权利要求26所述的设备,其中所述第一非驻留页的地址指向含有默认值的存储器页,所述设备进一步包括用于将页表中的地址与含有默认值的所述存储器页的地址值进行比较的装置,其中所述用于确定所述处理器尝试存取所述第一非驻留页的装置包括用于基于所述比较而确定所述处理器尝试存取所述第一非驻留页的装置。
28.根据权利要求27所述的设备,其进一步包括用于存储含有默认值的所述存储器页的所述地址值的装置。
29.根据权利要求26所述的设备,其进一步包括用于在稍后需要从中断的写入丢失的数据的情况下重新计算所述数据的装置。
30.一种存储指令的非暂时性计算机可读存储媒体,所述指令在执行后:
致使存储器管理单元MMU确定处理器尝试存取第一非驻留页,所述第一非驻留页包括不映射到存储器中的页的页;
读取一个或多个值的第一集合,所述一个或多个值的第一集合基于所述第一非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第一非驻留页的所述存取将发生页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第一集合基于所述第一非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第一非驻留页不针对纹理信息而指示将发生所述页错误;
响应于所述处理器尝试存取所述第一非驻留页的所述确定,致使所述MMU基于所述一个或多个值的第一集合来确定从对所述第一非驻留页的所述存取将发生所述页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误;
响应于所述第一非驻留页针对纹理信息以及从对所述第一非驻留页的所述存取将不发生所述页错误的所述确定,致使所述MMU向所述处理器返回:
存储器读取未翻译的指示,及
在对所述第一非驻留页的所述存取是读取时的默认值;
致使所述MMU确定所述处理器尝试存取第二非驻留页,所述第二非驻留页包括不映射到所述存储器中的页的页;
读取一个或多个值的第二集合,所述一个或多个值的第二集合基于所述第二非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第二非驻留页的所述存取将发生页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第二集合基于所述第二非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第二非驻留页不针对纹理信息而指示将发生所述页错误;
响应于所述处理器尝试存取所述第二非驻留页的所述确定,致使所述MMU基于所述一个或多个值的第二集合来确定从对所述第二非驻留页的所述存取将发生所述页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误;以及
响应于所述第二非驻留页不针对纹理信息以及从对所述第二非驻留页的所述存取将发生所述页错误的所述确定,致使所述处理器接收指示所述第二非驻留页的所述页错误的信息。
31.一种存储指令的非暂时性计算机可读存储媒体,所述指令在执行后:
致使存储器管理单元MMU确定处理器尝试存取第一非驻留页,所述第一非驻留页包括不映射到存储器中的页的页;
读取一个或多个值的第一集合,所述一个或多个值的第一集合基于所述第一非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第一非驻留页的所述存取将发生页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第一集合基于所述第一非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第一非驻留页不针对纹理信息而指示将发生所述页错误;
响应于所述处理器尝试存取所述第一非驻留页的所述确定,致使所述MMU基于所述一个或多个值的第一集合来确定从对所述第一非驻留页的所述存取将发生所述页错误还是从对所述第一非驻留页的所述存取将不发生所述页错误;
响应于所述第一非驻留页针对纹理信息以及从对所述第一非驻留页的所述存取将不发生所述页错误的所述确定,致使所述处理器中断对所述第一非驻留页的写入存取;
致使所述MMU确定所述处理器尝试存取第二非驻留页,所述第二非驻留页包括不映射到所述存储器中的页的页;
读取一个或多个值的第二集合,所述一个或多个值的第二集合基于所述第二非驻留页是针对纹理信息还是不针对纹理信息而指示从对所述第二非驻留页的所述存取将发生页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误,其中所述一个或多个值的第二集合基于所述第二非驻留页针对纹理信息而指示将不发生所述页错误、并且基于所述第二非驻留页不针对纹理信息而指示将发生所述页错误;
响应于所述处理器尝试存取所述第二非驻留页的所述确定,致使所述MMU基于所述一个或多个值的第二集合来确定从对所述第二非驻留页的所述存取将发生所述页错误还是从对所述第二非驻留页的所述存取将不发生所述页错误;以及
响应于所述第二非驻留页不针对纹理信息以及从对所述第二非驻留页的所述存取将发生所述页错误的所述确定,致使所述处理器接收指示所述第二非驻留页的所述页错误的信息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/035,643 | 2013-09-24 | ||
US14/035,643 US9489313B2 (en) | 2013-09-24 | 2013-09-24 | Conditional page fault control for page residency |
PCT/US2014/053016 WO2015047642A1 (en) | 2013-09-24 | 2014-08-27 | Conditional page fault control for page residency |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105556487A CN105556487A (zh) | 2016-05-04 |
CN105556487B true CN105556487B (zh) | 2019-04-02 |
Family
ID=51619268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480052005.7A Active CN105556487B (zh) | 2013-09-24 | 2014-08-27 | 对页驻留的条件性页错误控制 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9489313B2 (zh) |
EP (1) | EP3049939A1 (zh) |
JP (1) | JP6110044B2 (zh) |
CN (1) | CN105556487B (zh) |
WO (1) | WO2015047642A1 (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4447977B2 (ja) * | 2004-06-30 | 2010-04-07 | 富士通マイクロエレクトロニクス株式会社 | セキュアプロセッサ、およびセキュアプロセッサ用プログラム。 |
US9754561B2 (en) * | 2013-10-04 | 2017-09-05 | Nvidia Corporation | Managing memory regions to support sparse mappings |
US10061539B2 (en) * | 2015-06-30 | 2018-08-28 | International Business Machines Corporation | Inaccessibility status indicator |
US10310854B2 (en) | 2015-06-30 | 2019-06-04 | International Business Machines Corporation | Non-faulting compute instructions |
US10282808B2 (en) * | 2016-05-27 | 2019-05-07 | Intel Corporation | Hierarchical lossless compression and null data support |
US20180005349A1 (en) * | 2016-07-03 | 2018-01-04 | Intel Corporation | Buffering graphics tiled resource translations in a data port controller tlb |
US20180024938A1 (en) * | 2016-07-21 | 2018-01-25 | Advanced Micro Devices, Inc. | Allocating physical pages to sparse data sets in virtual memory without page faulting |
US10289847B2 (en) * | 2016-07-29 | 2019-05-14 | Qualcomm Incorporated | Updating virtual memory addresses of target application functionalities for an updated version of application binary code |
US10388058B2 (en) | 2017-02-16 | 2019-08-20 | Microsoft Technology Licensing, Llc | Texture residency hardware enhancements for graphics processors |
US10248574B2 (en) * | 2017-05-30 | 2019-04-02 | Intel Corporation | Input/output translation lookaside buffer prefetching |
US10489308B2 (en) * | 2017-06-29 | 2019-11-26 | Intel Corporation | Mitigating attacks on kernel address space layout randomization |
GB2575689B (en) * | 2018-07-20 | 2021-04-28 | Advanced Risc Mach Ltd | Using textures in graphics processing systems |
US10540802B1 (en) * | 2019-01-31 | 2020-01-21 | Advanced Micro Devices, Inc. | Residency map descriptors |
US11392698B2 (en) * | 2019-03-15 | 2022-07-19 | Intel Corporation | Active side-channel attack prevention |
CN113674133B (zh) * | 2021-07-27 | 2023-09-05 | 阿里巴巴新加坡控股有限公司 | Gpu集群共享显存系统、方法、装置及设备 |
GB2616643B (en) * | 2022-03-16 | 2024-07-10 | Advanced Risc Mach Ltd | Read-as-X property for page of memory address space |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473138A (zh) * | 2009-06-29 | 2012-05-23 | 甲骨文美国公司 | 具有用于页面错误处理的闪存的扩展主存储器层次结构 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6650333B1 (en) | 1999-06-09 | 2003-11-18 | 3Dlabs Inc., Ltd. | Multi-pool texture memory management |
US7710424B1 (en) | 2004-11-18 | 2010-05-04 | Nvidia Corporation | Method and system for a texture-aware virtual memory subsystem |
US7447869B2 (en) * | 2005-04-07 | 2008-11-04 | Ati Technologies, Inc. | Method and apparatus for fragment processing in a virtual memory system |
US20070055843A1 (en) | 2005-09-02 | 2007-03-08 | Silicon Graphics, Inc. | Predictive prefaulting in the page fault handler |
US7746352B2 (en) | 2006-11-03 | 2010-06-29 | Nvidia Corporation | Deferred page faulting in virtual memory based sparse texture representations |
US8451281B2 (en) | 2009-06-23 | 2013-05-28 | Intel Corporation | Shared virtual memory between a host and discrete graphics device in a computing system |
US20110161620A1 (en) | 2009-12-29 | 2011-06-30 | Advanced Micro Devices, Inc. | Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices |
US8860743B2 (en) * | 2009-12-31 | 2014-10-14 | Nvidia Corporation | Sparse texture systems and methods |
US8907969B2 (en) * | 2010-12-13 | 2014-12-09 | Advanced Micro Devices, Inc. | Partially resident textures |
-
2013
- 2013-09-24 US US14/035,643 patent/US9489313B2/en active Active
-
2014
- 2014-08-27 CN CN201480052005.7A patent/CN105556487B/zh active Active
- 2014-08-27 EP EP14772487.6A patent/EP3049939A1/en not_active Ceased
- 2014-08-27 WO PCT/US2014/053016 patent/WO2015047642A1/en active Application Filing
- 2014-08-27 JP JP2016544342A patent/JP6110044B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473138A (zh) * | 2009-06-29 | 2012-05-23 | 甲骨文美国公司 | 具有用于页面错误处理的闪存的扩展主存储器层次结构 |
Also Published As
Publication number | Publication date |
---|---|
CN105556487A (zh) | 2016-05-04 |
WO2015047642A1 (en) | 2015-04-02 |
EP3049939A1 (en) | 2016-08-03 |
US20150089146A1 (en) | 2015-03-26 |
JP6110044B2 (ja) | 2017-04-05 |
JP2016534486A (ja) | 2016-11-04 |
US9489313B2 (en) | 2016-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105556487B (zh) | 对页驻留的条件性页错误控制 | |
JP5917784B1 (ja) | グラフィックス処理ユニットのためのハードウェアによるコンテンツ保護 | |
JP6385614B1 (ja) | グラフィックス処理ユニットのためのハードウェア強制コンテンツ保護 | |
US9134954B2 (en) | GPU memory buffer pre-fetch and pre-back signaling to avoid page-fault | |
US9483861B2 (en) | Tile-based rendering | |
KR101800987B1 (ko) | 계층적 z-컬링을 수행하기 위한 부분적으로-커버된 타일들의 선택적 병합 | |
JP5844485B2 (ja) | グラフィックス処理システムにおけるメモリアクセス帯域幅をデスティネーションアルファ値に基づいて減少させるための技法 | |
US9569862B2 (en) | Bandwidth reduction using texture lookup by adaptive shading | |
US9047686B2 (en) | Data storage address assignment for graphics processing | |
EP3350766B1 (en) | Storing bandwidth-compressed graphics data | |
US10102391B2 (en) | Hardware enforced content protection for graphics processing units | |
CN105122310A (zh) | 用于基于瓦片的渲染的帧内时戳 | |
CN105144244A (zh) | 用于基于瓦片的渲染器的查询处理 | |
CN117435521B (zh) | 基于gpu渲染的纹理显存映射方法、装置及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |