CN103370728B - 用于图形处理的数据存储地址指派的方法和设备 - Google Patents
用于图形处理的数据存储地址指派的方法和设备 Download PDFInfo
- Publication number
- CN103370728B CN103370728B CN201280008415.2A CN201280008415A CN103370728B CN 103370728 B CN103370728 B CN 103370728B CN 201280008415 A CN201280008415 A CN 201280008415A CN 103370728 B CN103370728 B CN 103370728B
- Authority
- CN
- China
- Prior art keywords
- address
- data
- data type
- scope
- adjacent
- 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.)
- Expired - Fee Related
Links
Classifications
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
大体来说,本发明的方面描述针对用于图形处理的各种数据类型的数据的有效存储的实例技术。在一些实例中,处理单元可分别指派第一和第二数据类型的第一和第二邻接地址范围。所述处理单元可分别将所述第一或第二数据类型的图形数据或所述第一或第二数据类型的所述图形数据的地址中的至少一者存储在地址在所述第一和第二邻接地址范围内的块内。所述处理单元可将所述第一数据类型的所述图形数据和所述第二数据类型的所述图形数据存储在高速缓冲存储器的高速缓存线中。
Description
技术领域
本发明涉及数据存储,且更特定来说涉及用于图形处理的数据存储地址的指派。
背景技术
提供用于视觉呈现的内容的装置通常包含图形处理单元(GPU)。GPU处理且再现代表显示器上的图像的内容的像素。为再现显示器上的像素,GPU处理各种数据类型。各种类型的数据存储在一个或一个以上数据存储装置中。GPU从所述一个或一个以上存储装置检索数据,且处理数据以再现显示器上的像素。
发明内容
一般来说,本发明描述针对用于图形处理的各种数据类型的数据的有效存储的技术。图形处理单元(GPU)可处理各种数据类型的数据以再现用于显示的图像。处理器可将各种数据类型的数据存储在存储装置中,且界定其中各种数据类型的数据存储在存储装置中的片段,或界定其中各种数据类型的数据的地址存储在存储装置中的片段。每一片段可包含可由邻接地址寻址的多个块。
所述装置还可包含共同高速缓冲存储器。所述共同高速缓冲存储器可存储各种数据类型的数据。GPU可能够快速从共同高速缓冲存储器检索数据。在一些实例中,GPU和处理器可能够快速从共同高速缓冲存储器检索数据。在本发明描述的一些实例实施方案中,共同高速缓冲存储器可存储用于图形处理的所有各种数据类型的数据。举例来说,共同高速缓冲存储器可存储第一数据类型的数据和第二数据类型的数据,其中第一和第二数据类型是用于图形处理的不同数据类型。
在一个实例中,本发明描述一种方法,其包括:利用处理单元指派用于图形处理的第一数据类型的第一邻接地址范围,以及指派用于图形处理的第二数据类型的第二邻接地址范围,其中第一和第二数据类型是不同数据类型;利用处理单元将第一数据类型的图形数据或第一数据类型的图形数据的地址中的至少一者存储在地址在第一邻接地址范围内的块内;利用处理单元将第二数据类型的图形数据或第二数据类型的图形数据的地址中的至少一者存储在地址在第二邻接地址范围内的块内;以及将第一数据类型的图形数据和第二数据类型的图形数据存储在共同高速缓冲存储器的多个高速缓存线中。
在另一实例中,本发明描述一种设备,其包括包含多个高速缓存线的共同高速缓冲存储器,以及处理单元,所述处理单元经配置以:指派用于图形处理的第一数据类型的第一邻接地址范围,以及指派用于图形处理的第二数据类型的第二邻接地址范围,其中第一和第二数据类型是不同数据类型;将第一数据类型的图形数据或第一数据类型的图形数据的地址中的至少一者存储在地址在第一邻接地址范围内的块内,以及将第二数据类型的图形数据或第二数据类型的图形数据的地址中的至少一者存储在地址在第二邻接地址范围内的块内;且将第一数据类型的图形数据和第二数据类型的图形数据存储在共同高速缓冲存储器的多个高速缓存线中。
在另一实例中,本发明描述一种计算机可读存储媒体,其包括致使一个或一个以上处理单元进行以下操作的指令:指派用于图形处理的第一数据类型的第一邻接地址范围,以及指派用于图形处理的第二数据类型的第二邻接地址范围,其中第一和第二数据类型是不同数据类型;将第一数据类型的图形数据或第一数据类型的图形数据的地址中的至少一者存储在地址在第一邻接地址范围内的块内;将第二数据类型的图形数据或第二数据类型的图形数据的地址中的至少一者存储在地址在第二邻接地址范围内的块内;将第一数据类型的图形数据和第二数据类型的图形数据存储在共同高速缓冲存储器的多个高速缓存线中。
在另一实例中,本发明描述一种设备,其包括:用于指派用于图形处理的第一数据类型的第一邻接地址范围以及指派用于图形处理的第二数据类型的第二邻接地址范围的装置,其中第一和第二数据类型是不同数据类型;用于将第一数据类型的图形数据或第一数据类型的图形数据的地址中的至少一者存储在地址在第一邻接地址范围内的块内的装置;用于将第二数据类型的图形数据或第二数据类型的图形数据的地址中的至少一者存储在地址在第二邻接地址范围内的块内的装置;以及用于将第一数据类型的图形数据和第二数据类型的图形数据存储在共同高速缓冲存储器的多个高速缓存线中的装置。
一个或一个以上实例的细节陈述于附图及以下描述中。其它特征、目标及优势将从描述及附图和从权利要求书中显而易见。
附图说明
图1是说明可经配置以实施本发明的各方面的装置的框图。
图2是更详细说明图1的一些组件的框图。
图3是更详细说明图1的一些组件的另一框图。
图4是说明可经配置以实施本发明的各方面的装置的实例操作的流程图。
图5是说明用以确定共同高速缓冲存储器的多个高速缓存线中的哪些者与特定数据类型相关联的实例技术的流程图。
图6是说明由处理单元执行的实例技术的流程图。
具体实施方式
本发明的各方面可涉及用于图形处理的各种数据类型的图形数据的有效存储。出于说明的目的,在数据用于图形处理的上下文中描述本发明的各方面。然而,本发明的各方面可延伸到除图形处理系统以外的系统。本发明的技术可通常适用于提供视频或图像内容的例如桌上型计算机和膝上型计算机等计算机图形系统、数字媒体播放器、机顶盒、例如移动电话等移动视频接收装置、个人数字助理(PDA)、包含视频显示器的视频游戏控制台、移动视频会议单元等。
装置内的图形处理单元(GPU)可处理各种数据类型的图形数据以产生在装置上显示的可检视内容。GPU是处理单元的一个实例。用于图形处理的各种数据类型可包含(但不限于)纹理数据、顶点数据、指令、常数和像素数据。各种数据类型的图形数据可存储在装置的存储装置中。可存在比上文提供的实例多的用于图形处理的数据类型。
在一些非限制性实例中,装置还包含输入/输出存储器管理单元(IOMMU)。IOMMU可向GPU提供到存储装置的存储块的虚拟化地址空间。IOMMU可包含多个地址块。每一地址块可存储各种数据类型的图形数据存储在存储装置中所在的地址。IOMMU的每一地址块可由GPU个别存取。
装置内的处理器可将IOMMU的地址空间分段为多个片段。处理器可为处理单元的一个实例。每一片段可包含可以邻接地址寻址的多个地址块。处理器可指派每一片段以存储特定数据类型的图形数据存储在存储装置中所在的地址。举例来说,IOMMU的地址空间的第一片段可包含可以邻接地址0-15寻址的地址块,IOMMU的地址空间的第二片段可包含可以邻接地址16-31寻址的地址块,等等。
在此实例中,处理器可指派可由第一片段的邻接地址0-15寻址的地址块以存储图形纹理数据存储在存储装置中所在的地址。处理器可指派可由第二片段的邻接地址16-31寻址的地址块以存储图形顶点数据存储在存储装置中所在的地址,等等。地址块(例如,0-15和16-31)的邻接地址仅出于说明的目的而提供,且不具有限制性。
从处理器和GPU的视角来看,IOMMU可呈现为存储用于图形处理的各种数据类型的图形数据的装置。举例来说,当处理器或GPU读取或写入数据时,处理器或GPU就像正从IOMMU读取或写入到IOMMU那样读取或写入数据。IOMMU可维持关于所读取或写入的数据实际上存储在存储装置中何处的地图。关于数据实际上存储在存储装置中何处的地图可视为虚拟地址空间。
在一些替代实例中,装置内的处理器可将存储装置的存储空间分段为多个片段,而非IOMMU。在这些实例中,可不需要IOMMU,但本发明的方面不应视为限于此。每一片段可包含可由邻接地址寻址的多个存储块。处理器可指派每一片段以存储特定数据类型的图形数据。举例来说,存储装置的第一片段可包含可由邻接地址0-15寻址的存储块,存储装置的第二片段可包含可由邻接地址16-31寻址的存储块,等等。在此实例中,处理器可指派可由第一片段的邻接地址0-15寻址的地址块以存储图形像素数据。处理器可指派可由第二片段的邻接地址16-31寻址的地址块以存储用于图形处理的指令,等等。存储块(例如,0-15和16-31)的邻接地址仅出于说明的目的而提供,且不具有限制性。
所述装置还可包含共同高速缓冲存储器。共同高速缓冲存储器可包含多个高速缓存线,其中每一高速缓存线可经配置以存储用于图形处理的数据类型中的任一者的图形数据。举例来说,共同高速缓冲存储器可经配置以将纹理数据、顶点数据、指令、常数和像素数据存储在共同高速缓冲存储器的一个或一个以上高速缓存线内。高速缓存线可视为用于存储的存储器的固定大小块。
共同高速缓冲存储器可存储用于由处理器或GPU快速存取的图形数据。共同高速缓冲存储器内的每一高速缓存线可包含至少两个字段。第一字段可存储到IOMMU的地址块中的一者的地址,或到存储装置的存储块中的一者的地址。在其中第一字段存储到IOMMU的地址块中的一者的地址的实例中,IOMMU的地址块可包含其中存储一数据类型的图形数据的存储装置内的地址。高速缓存线的第二字段可存储实际图形数据。
当一数据类型的图形数据改变(例如,重写或擦除)时,处理器可需要使共同高速缓冲存储器内的存储所述数据类型的图形数据的一些高速缓存线无效。为使高速缓存线无效,处理器可将无效数据值存储在所述高速缓存线的第二字段中。使共同高速缓冲存储器内的高速缓存线无效可向GPU指示存储在无效高速缓存线中的图形数据不是当前的。这可致使GPU从存储装置而非从共同高速缓冲存储器检索所述数据类型的图形数据,因为存储图形数据的高速缓存线不存储当前数据。
为使存储一数据类型的图形数据的一些高速缓存线无效,GPU可确定哪些高速缓存线存储所述数据类型的图形数据。为确定哪些高速缓存线存储所述数据类型的图形数据,GPU可询问高速缓存线中的每一者的第一数据字段以确定高速缓存线中的每一者的第一数据字段是否将地址块或存储块的所指派邻接地址范围内的地址分别存储在针对所述数据类型的IOMMU或存储装置内。
举例来说,假定图形数据类型是用于图形处理的纹理数据。此外,假定处理器指派地址块用于存储纹理数据存储在存储装置中的地址,IOMMU内的邻接地址0-15。当纹理数据改变时,处理器可使共同高速缓冲存储器中的存储纹理数据的每一高速缓存线无效。GPU可确定高速缓存线中的每一者的第一字段是否存储在0-15内的地址。如果高速缓存线存储在0-15内的地址,那么GPU可使所述高速缓存线无效。在本发明的方面中,GPU可使存储所述特定数据类型的图形数据的高速缓存线中的一者或一者以上无效。GPU不可使共同高速缓冲存储器中的其它高速缓存线中的任一者无效。举例来说,GPU不可使不存储所述特定数据类型的数据的高速缓存线中的任一者无效。
图1是说明可经配置以实施本发明的各方面的装置10的框图。装置10的实例包含(但不限于)移动无线电话、个人数字助理(PDA)、包含视频显示器的视频游戏控制台、移动视频会议单元、膝上型计算机、桌上型计算机、平板计算机、电视机顶盒、数字媒体播放器等。装置10可包含处理器12、图形处理单元(GPU)14、显示器16、显示缓冲器18、存储装置20、收发器模块22、用户接口24、共同高速缓冲存储器26和输入/输出存储器管理单元(IOMMU)28。处理器12和GPU14可各自为处理单元的实例。
装置10可包含图1中为清晰起见未图示的额外模块或单元。举例来说,装置10可包含扬声器和麦克风(其均未在图1中展示)以在装置10是移动无线电话的实例中实行电话通信。此外,装置10中展示的各个模块和单元可能并非在装置10的每个实例中都是必需的。举例来说,在装置10为桌上型计算机的实例中,用户接口24和显示器16可在装置10外部。作为另一实例,IOMMU28可能并非在每个实例中都是必需的,如下文更详细描述。
尽管处理器12、GPU14、共同高速缓冲存储器26和IOMMU28说明为单独单元,但本发明的方面不限于此。作为一个实例,GPU14、共同高速缓冲存储器26和IOMMU28可形成在处理器12内,例如一个处理单元可包含处理器12和GPU14以及共同高速缓冲存储器26和IOMMU28。作为另一实例,处理器12可包含IOMMU28,且GPU14可包含共同高速缓冲存储器26。处理器12、GPU14、共同高速缓冲存储器26和IOMMU28的配置的不同组合可为可能的,且本发明的方面预期所述不同组合。
各自可视为处理单元的处理器12和GPU14的实例包含(但不限于)数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA),或其它等效集成或离散逻辑电路。存储装置20可包括一个或一个以上计算机可读存储媒体。存储装置20的实例包含(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器,或可用于携载或存储指令或数据结构的形式的所要程序代码且可由计算机或处理器存取的任何其它媒体。在一些方面中,存储装置20可包含致使处理器12和/或GPU14执行在本发明中归于处理器12和GPU14的功能的指令。
用户接口24的实例包含(但不限于)跟踪球、鼠标、键盘和其它类型的输入装置。用户接口24还可为触摸屏,且可并入作为显示器16的一部分。收发器模块22可包含用以允许装置10与另一装置或网络之间的无线或有线通信的电路。收发器模块22可包含调制器、解调器、放大器和用于有线或无线通信的其它此类电路。
处理器12可执行一个或一个以上应用程序。应用程序的实例包含网络浏览器、电子邮件应用程序、电子数据表、视频游戏,或产生供呈现的可检视图像的其它应用程序。所述一个或一个以上应用程序可存储在存储装置20中。在一些例子中,处理器12可经由收发器模块22下载所述一个或一个以上应用程序。处理器12可基于用户经由用户接口24做出的选择而执行所述一个或一个以上应用程序。在一些实例中,处理器12可在无用户交互的情况下执行所述一个或一个以上应用程序。
处理器12产生的可检视图像中的每一者可为以多个多边形(其可称为图元)形成的二维(2-D)或三维(3-D)图像。处理器12可确定多边形的顶点的坐标。多边形的一个实例为三角形,但多边形不应视为限于三角形。出于说明的目的,本发明中的实例在多边形为三角形的上下文中描述。举例来说,处理器12可确定每一三角形的三个顶点的坐标。对于2-D图像,每一三角形的每一顶点的坐标可包括x和y坐标。对于3-D图像,每一三角形的每一顶点的坐标可包括x、y、z和w坐标,其中w坐标是可利于识别无穷远的顶点的均匀坐标。多边形的所确定的顶点坐标称为顶点数据。处理器12可将顶点数据存储在存储装置20中。
处理器12还可确定所确定的顶点的各种其它属性。举例来说,对于每一顶点,处理器12可确定颜色值,其称为像素数据。每一颜色值可包含三个或四个分量,例如红、绿和蓝分量,或红、绿、蓝和透明因子。可在一些装置中使用额外颜色坐标。处理器12可将像素数据存储在存储装置20中。
处理器12还可将纹理图像存储在存储装置20中。纹理图像可为施加到多边形以使多边形呈现为更逼真的图像。纹理图像可通常为纹理数据的二维阵列;然而,纹理图像也可为纹理数据的一维或三维阵列。出于说明的目的,本发明的方面在纹理数据的二维阵列的上下文中描述。处理器12可基于阵列的坐标将纹理数据存储在二维阵列内。阵列的坐标可为(u,v),其中坐标u是沿着二维阵列的x轴,且坐标v是沿着二维阵列的y轴。举例来说,处理器12可针对待在阵列内的对应于多边形的坐标的位置处施加到多边形的纹理图像将纹理数据存储在存储装置20中。
顶点数据、像素数据和纹理数据是GPU14可用来在显示器16上再现图像的用于图形处理的不同数据类型的实例。除了顶点数据、像素数据和纹理数据外,GPU14还可利用用于图形处理的其它数据类型的图形数据在显示器16上再现图像。作为一个实例,GPU16可利用存储在存储装置20中的再现指令在显示器16上再现图像。存储在存储装置20中的指令可为用于图形处理的数据类型的另一实例。作为另一实例,GPU16可利用存储在存储装置20中的常数在显示器16上再现图像。存储在存储装置20中的常数可为用于图形处理的数据类型的另一实例。
GPU14可实施使用来自各个数据类型的图形数据再现图像的图形管线。图形管线可经由至少一些硬件实施。举例来说,图形管线可实施为在GPU14上执行的软件、在GPU14上执行的固件、形成在GPU14上的一个或一个以上硬件单元,或其组合。图形管线可包含多个组件。举例来说,GPU14的图形管线可包含顶点着色器,其检索顶点数据且将顶点的坐标变换到另一坐标系中,且计算顶点的光值。GPU14的图形管线还可包含图元组装器,其确定多边形内的像素的深度(z)。GPU14的图形管线还可包含早期深度测试引擎,其在多边形内的像素随后会被其它像素阻挡的情况下排除对所述像素的进一步处理。GPU14的图形管线还可包含像素着色器,其基于多边形的顶点的颜色值而内插多边形内的像素的颜色值。
图形管线的各个组件是出于说明的目的而提供,且不应视为具有限制性。在替代实例中,图形管线可包含比上文描述的组件多的组件。图形管线也可包含比上文描述的组件少的组件。
在一些实例中,当GPU14再现图像时,GPU14可将图像的所再现部分输出到显示缓冲器18。显示缓冲器18可临时存储所再现的图像直到再现整个图像为止。显示缓冲器18可视为帧缓冲器。显示缓冲器18可接着发射所再现的图像以在显示器16上显示。在一些替代实例中,GPU14可将图像的所再现部分直接输出到显示器16以供显示,而非将图像临时存储在显示缓冲器18中。显示器16可包括液晶显示器(LCD)、阴极射线管(CRT)显示器、等离子体显示器,或另一类型的显示装置。
存储装置20可包含多个存储块。每一存储块可存储用于图形处理的各种数据类型的图形数据。每一存储块可个别可寻址。在一些实例中,处理器12可将存储装置20提供的存储空间分段为若干数据存储片段。每一片段可包含各自可由邻接存储器地址寻址的多个数据存储块。因此,每一数据存储片段可由邻接存储器地址范围界定。
处理器12可指派特定数据类型的每一数据存储片段。举例来说,处理器12可指派第一片段以存储第一数据类型的图形数据,且指派第二片段以存储第二数据类型的图形数据。在此实例中,第一片段的存储块可能可由邻接地址寻址。举例来说,处理器12可指派针对第一片段中的块的第一邻接地址范围。第一片段的每一存储块的地址可在第一邻接地址范围内。类似地,第二片段的存储块的地址可在处理器12指派的第二邻接地址范围内。
在一些实例中,装置10可包含IOMMU28。IOMMU28可并非在装置10的每个实例中都是必需的。举例来说,IOMMU28可并非在其中处理器12指派存储在存储装置20中的各种数据类型的图形数据的邻接地址的实例中都是必需的。然而,本发明的方面不应视为限于此。即使在其中处理器12指派存储在存储装置20中的各种数据类型的图形数据的邻接地址的实例中,装置10也可包含IOMMU28。
IOMMU28可实施为一个或一个以上硬件单元、在硬件单元上执行的软件、在硬件单元上执行的固件,或其任何组合。在其中IOMMU28为一个或一个以上硬件单元的实例中,IOMMU28的实例可包含(但不限于)DSP、通用微处理器、ASIC、FPGA,或其它等效集成或离散逻辑电路。
IOMMU28可向GPU14提供到存储装置20的存储块的虚拟化地址空间,使得IOMMU28例如对于GPU14呈现为存储各种数据类型的图形数据的装置。举例来说,IOMMU28可为负责处置处理器12和/或GPU14请求的对存储装置20的存取的硬件组件。举例来说,IOMMU28可包含指示多个地址块的表或其它数据结构,例如寄存器。每一地址块可存储存储装置20的存储块中的一者的地址。每一地址块可为个别可寻址的。
当处理器12或GPU14希望读取或写入数据时,在处理器12或GPU14上执行的软件调出IOMMU28的地址块中的一者的地址,就像处理器12或GPU14正从由其地址调出的地址块读取或向所述地址块写入。IOMMU28可接着确定哪一存储块对应于存储在IOMMU28的地址块中的地址。IOMMU28可接着向对应于存储在IOMMU28的地址块中的地址的存储块写入或从所述存储块读取。
出于清楚的目的,术语存储装置地址可指代存储装置20内的存储块的地址。并且,术语IOMMU地址可指代IOMMU28内的地址块的地址。如上文描述,IOMMU28的每一地址块可存储存储装置地址。一般来说,IOMMU28可将IOMMU地址映射到存储装置地址。以此方式,当处理器12或GPU14调出IOMMU地址时,IOMMU28可基于映射通过确定对应于IOMMU地址的存储装置地址(例如,如表、寄存器、矩阵或其它数据结构所指示)确定存储图形数据的存储块的存储装置地址。
如上文描述,处理器12可将存储装置20的存储器空间分段为若干片段。每一片段可包含各自可由邻接存储装置地址寻址的多个存储块。在一些实例中,处理器12可将IOMMU28的地址空间分段为若干片段。每一片段可包含各自可由邻接IOMMU地址寻址的多个地址块。
在一些实例中,处理器12可将第一邻接IOMMU地址范围指派到IOMMU28内的地址块。在这些实例中,第一邻接IOMMU地址范围是针对存储关于第一数据类型的图形数据存储在存储装置20中何处的地址的地址块。处理器12还可将第二邻接IOMMU地址范围指派到IOMMU28内的地址块。在这些实例中,第二邻接IOMMU地址范围是针对存储关于第二数据类型的图形数据存储在存储装置20中何处的地址的地址块。处理器12可类似地指派针对用于图形处理的各种数据类型的邻接IOMMU地址范围。
在一些例子中,指派针对每一数据类型的图形数据的邻接存储装置地址或指派针对每一数据类型的图形数据的邻接IOMMU地址可为有利的。作为一个实例,处理器12和GPU14可不需要跟踪数据类型中的每一者的图形数据存储在存储装置20中的确切地址。处理器12和GPU14可仅跟踪邻接存储装置地址或IOMMU地址的范围。邻接存储装置地址或IOMMU地址的每一范围可视为子堆(sub-heap)。处理器12可视为将例如邻接存储装置地址或IOMMU地址的范围等子堆指派到存储装置20内的存储块或IOMMU28内的地址块的分配器。
举例来说,假定GPU14希望检索用于图形处理的纹理数据。并且,假定所述纹理数据不存储在可邻接寻址的存储块中,如常规堆分配器中所发生的那样。在此例子中,GPU14将需要跟踪纹理数据的每一者的存储装置地址,这可能是处理低效的。在本发明的方面中,GPU14可不需要跟踪每一个别存储装置地址,且可跟踪存储装置地址的范围,这可促进有效处理。
作为另一实例,对于指派每一数据类型的图形数据的邻接存储装置地址或IOMMU地址的潜在益处,处理器12和GPU14可较不可能检索错误数据。举例来说,在GPU14上执行的软件(例如,着色器程序)可致使GPU14检索特定数据类型的数据(例如,纹理数据)。着色器程序可由应用程序开发者使用OpenCL版本1.1规格的语法编写,作为一个非限制性实例。然而,本发明的方面不应视为限于根据OpenCL版本1.1规格编写着色器程序的实例。在GPU14上执行的软件可向GPU14提供关于从何处检索纹理数据的地址。在此实例中,处理器12可向GPU14指示纹理数据的邻接IOMMU地址范围。在GPU14上执行的软件可接着确保其提供到GPU14用于检索纹理数据的地址在邻接IOMMU地址范围内。举例来说,着色器程序可确保GPU14不会试图存取在着色器程序请求的数据类型的范围之外的数据。
如图1中说明,装置10还可包含共同高速缓冲存储器26。尽管共同高速缓冲存储器26说明为在处理器12和GPU14外部,但在一些实例中,共同高速缓冲存储器26可形成在处理单元(例如,处理器12或GPU14)内,或部分形成在处理器12和GPU14两者中。共同高速缓冲存储器26可存储图形数据以供由处理器12或GPU14快速存取。举例来说,处理单元(例如,处理器12和GPU14)可能够比从存储装置20检索图形数据更快地从共同高速缓冲存储器26检索图形数据。
共同高速缓冲存储器26可包含多个高速缓存线,其中每一高速缓存线可经配置以存储用于图形处理的图形数据类型中的任一者的图形数据。举例来说,共同高速缓冲存储器26可将纹理数据、顶点数据、指令、常数和像素数据存储在共同高速缓冲存储器26的一个或一个以上高速缓存线内。共同高速缓冲存储器26可促进有效存储,因为共同高速缓冲存储器26经配置以存储各种数据类型的图形数据,而非存储单一数据类型的图形数据的多个高速缓冲存储器。举例来说,装置10可不需要包含纹理数据高速缓冲存储器、像素数据高速缓冲存储器、顶点数据高速缓冲存储器、指令高速缓冲存储器和常数高速缓冲存储器,因为共同高速缓冲存储器26可将纹理数据、像素数据、顶点数据、指令和常数存储在同一高速缓冲存储器中。
高速缓存线可视为用于存储的存储器的固定大小块。每一高速缓存线可包含两个字段。第一字段可存储到存储装置地址或IOMMU地址中的一者的地址,例如到存储装置20的存储块中的一者的地址或到IOMMU28的地址块中的一者的地址。第二字段可存储各种数据类型的实际图形数据。
当一数据类型的图形数据改变(例如,重写或擦除)时,处理器12可需要使共同高速缓冲存储器26内的存储所述数据类型的图形数据的高速缓存线无效。举例来说,共同高速缓冲存储器26内的一些高速缓存线可存储当前纹理图像的纹理数据。当处理器12存储新的纹理图像时,处理器12可需要使共同高速缓冲存储器26内的存储纹理数据的这些高速缓存线无效,因为纹理图像改变了。作为另一实例,共同高速缓冲存储器26内的一些高速缓存线可存储正处理的当前多边形的顶点数据。当GPU14需要处理另一多边形时,处理器12可需要使共同高速缓冲存储器26内的存储顶点数据的这些高速缓存线无效,因为当前多边形的顶点不再正被处理。
作为一个实例,为使高速缓存线无效,处理器12或GPU14可将空数据值存储在所述高速缓存线的第二字段中。使共同高速缓冲存储器26内的高速缓存线无效可向处理器12和GPU14指示存储在无效高速缓存线中的数据并非当前的。“高速缓冲存储器未中”可在处理器12或GPU14从无效高速缓存线检索数据时发生。当高速缓冲存储器未中发生时,处理器12或GPU14可从存储装置20检索图形数据,因为共同高速缓冲存储器26中的无效高速缓存线不存储当前数据。在一些实例中,除了从存储装置20检索图形数据外,处理器12或GPU14还可将所检索的图形数据存储在共同高速缓冲存储器26的高速缓存线中以供随后快速存取。
处理器12或GPU14可基于哪一数据类型改变了而确定应使共同高速缓冲存储器26的哪些高速缓存线无效。举例来说,如果纹理图像改变,那么GPU14可确定共同高速缓冲存储器26的哪些高速缓存线存储纹理数据。在此实例中,GPU14可使存储纹理数据的一个或一个以上高速缓存线无效,且不可使存储除纹理数据以外的数据类型的数据的高速缓存线中的任一者无效。
以此方式,每当特定数据类型的图形数据改变时,处理器12或GPU14可仅使共同高速缓冲存储器26的一些高速缓存线无效,且不使所有共同高速缓冲存储器26无效。不使共同高速缓冲存储器26的所有高速缓存线无效可进一步促进有效存储,因为处理器12或GPU14可不需要在每次无效之后检索先前存储在共同高速缓冲存储器26中的所有图形数据。处理器12或GPU14可仅需要检索改变的图形数据,且仅将改变的数据存储到共同高速缓冲存储器26中。
为使存储改变的数据类型的图形数据的高速缓存线无效,处理器12或GPU14可确定共同高速缓冲存储器26的哪些高速缓存线存储所述数据类型的图形数据。举例来说,GPU14可询问高速缓存线中的每一者的第一数据字段以确定高速缓存线中的每一者的第一数据字段是否存储在针对所述数据类型的存储装置地址或IOMMU地址的所指派邻接范围内的地址。举例来说,假定图形数据类型是像素数据。此外,假定处理器12向IOMMU28内的地址块指派邻接IOMMU地址16-31。在此实例中,邻接IOMU地址16-31可各自存储其中存储像素数据的存储装置20的存储块的地址。
当GPU14需要存取除存储在共同高速缓冲存储器26中的像素数据以外的像素数据时,GPU14可需要从存储装置20检索像素数据。为将新的所检索的像素数据存储在共同高速缓冲存储器中,处理器12可使共同高速缓冲存储器26中的存储像素数据的足够数目的高速缓存线无效以使得处理器12可存储所检索的像素数据。处理器可确定高速缓存线中的每一者的第一字段是否存储在16-31内的地址。如果高速缓存线存储在16-31内的地址,那么处理器12可使所述高速缓存线无效。
因为处理器12可指派邻接存储装置地址或IOMMU地址,所以处理器12可较容易确定高速缓存线是否存储特定数据类型的图形数据。举例来说,如果存储装置地址或IOMMU地址不邻接,那么处理器12将需要跟踪针对所述特定数据类型的每个单一存储装置地址或IOMMU地址。处理器12将接着需要将存储在高速缓存线的第一数据字段中的地址与针对所述特定数据类型的每个单一存储装置地址或IOMMU地址进行比较以确定高速缓存线是否存储所述特定数据类型的图形数据。在本发明的方面中,处理器12可将存储在每一高速缓存线的第一字段中的地址与邻接存储装置地址或IOMMU地址的范围而非个别存储装置地址或IOMMU地址进行比较,以确定高速缓存线是否存储特定数据类型的图形数据。
图2是更详细说明图1的一些组件的框图。举例来说,图2更详细说明图1的共同高速缓冲存储器26和存储装置20。如图2中说明,存储装置20包含十二个存储块0-11(统称为“存储块”)。存储装置20可包含比十二个存储块多或少的存储块。在一些实例中,存储装置20可为4千兆字节(GB)存储装置;然而,本发明的方面不限于此。
如图2中说明,存储块0-11不连续排序。这是为了说明在一些实例中,存储块0-11并非必须在存储装置20上为邻接的,但有可能存储块0-11在存储装置20上为邻接的。存储块0-11中的每一者可个别通过其地址可寻址。举例来说,图2说明存储装置地址0-11。存储装置地址0-11可分段(即,划分)为若干片段,其中每一片段包括存储装置地址范围。处理器12可将每一存储装置地址范围指派到特定数据类型。针对每一数据类型的存储装置地址范围可为邻接的。
举例来说,如图2中说明,存储装置地址范围32可为存储纹理数据的存储块(例如,存储块4、8和1)的邻接存储装置地址。存储装置地址范围32可包含存储地址0-2。存储装置地址范围34可为存储顶点数据的存储块(例如,存储块10和5)的邻接存储装置地址。存储装置地址范围34可包含存储地址3和4。存储装置地址范围36可为存储指令的存储块(例如,存储块2和9)的邻接存储装置地址。存储装置地址范围36可包含存储地址5和6。存储装置地址范围38可为存储常数的存储块(例如,存储块0和6)的邻接存储装置地址。存储装置地址范围38可包含存储地址7和8。存储装置地址范围40可为存储像素数据的存储块(例如,存储块11、3和7)的邻接存储装置地址。存储装置地址范围40可包含存储地址9-11。可存在比图2中说明的多或少的纹理数据、顶点数据、指令、常数和像素数据。
如图2中说明,共同高速缓冲存储器26可包含高速缓存线42A-42F(统称为“高速缓存线42”)。可存在比图2中说明的多或少的高速缓存线42。在一些实例中,共同高速缓冲存储器26可为层级2(L2)高速缓冲存储器。在一些实例中,共同高速缓冲存储器26可为具有快速范围无效的32千字节(KB)8路组相关联L2高速缓冲存储器。
高速缓存线42中的每一者可包含地址字段30A和数据字段30B。地址字段30A可指示存储在数据字段30B中的图形数据的存储装置地址。举例来说,高速缓存线42A的地址字段30A指示存储在数据字段30B中的图形数据的地址为1。如图2中说明,高速缓存线42A的数据字段30B存储对应于存储块8的第二纹理数据,因为存储块8的存储装置地址为1。
共同高速缓冲存储器26的存储相同数据类型的高速缓存线42可视为高速缓存线42的集合。举例来说,如图2中说明,高速缓存线42B和高速缓存线42E各自存储顶点数据。在此实例中,高速缓存线42B和高速缓存线42E可形成存储顶点数据的高速缓存线的集合。作为另一实例,如图2中说明,高速缓存线42C、高速缓存线42D和高速缓存线42F各自存储像素数据。在此实例中,高速缓存线42C、高速缓存线42D和高速缓存线42F可形成存储像素数据的高速缓存线的集合。
应理解,“高速缓存线的集合”并不暗示仅所述集合中的高速缓存线可存储特定图形数据类型。举例来说,如图2中说明,高速缓存线42A和42E存储顶点数据。然而,在替代实例中,高速缓存线42A和42E可存储其它图形数据类型,例如纹理数据、像素数据、指令数据和常数数据。使用短语“高速缓存线的集合”来指示存储类似图形数据类型的高速缓存线42的群组。
在一些实例中,高速缓存线的集合可不是邻接的。举例来说,高速缓存线42B和42E形成高速缓存线的集合,但不是邻接的。作为另一实例,高速缓存线42C、42D和42F形成高速缓存线的集合,但不是邻接的。在替代实例中,有可能高速缓存线的集合是邻接的。
如上文描述,在一些实例中,处理器12可在图形数据针对高速缓存线42中的一者存储的数据类型改变的情况下使高速缓存线42中的所述一者无效。举例来说,如果纹理图像改变,那么处理器12可使高速缓存线42的存储纹理数据的一个或一个以上高速缓存线无效。为确定高速缓存线42中的一者是否存储纹理数据,处理器12可将高速缓存线42中的每一者的地址字段30A与指派到纹理数据的存储装置地址的邻接范围进行比较。
举例来说,在图2的实例中,处理器12向纹理数据指派了存储装置地址的邻接范围32,其包含邻接存储装置地址0-2。在此实例中,处理器12可比较高速缓存线42中的每一者的地址字段30A以确定其是否在存储装置地址的邻接范围32内。高速缓存线42A的地址字段30A在存储装置地址的邻接范围32内,例如1在0-2内。在此实例中,处理器12可用空数据代替存储在高速缓存线42A的数据字段30B中的第二纹理数据。处理器12可接着从存储装置20检索新纹理数据,且可将所述纹理数据存储在高速缓存线42A中。处理器12可不需要在每个实例中均将所述纹理数据存储在高速缓存线42A中。在一些实例中,处理器12还可在所检索的新纹理数据的存储装置地址存储在不同于1的存储装置地址处的情况下更新高速缓存线42A的地址字段30A。
图3是更详细说明图1的一些组件的另一框图。举例来说,图3更详细说明图1的共同高速缓冲存储器26、IOMMU28和存储装置20。如图3中说明的存储装置20可类似于图2中说明的存储装置20。然而,在图3的实例中,处理器12可不指派邻接存储装置地址范围。举例来说,如图3中说明,存储装置20的存储块中的每一者的地址不连续排序。为便于说明,在图3的实例中,存储块的存储装置地址对应于存储块的识别符。举例来说,存储装置20的存储块4的存储装置地址是4,存储装置20的存储块8的存储装置地址是8,等等。然而,本发明的方面不限于此。存储块的存储装置地址不限于存储块的识别符。
图3更详细说明IOMMU28。在图3的实例中,IOMMU28包含十二个地址块0-11。IOMMU28可包含比十二个地址块多或少的地址块。在一些实例中,IOMMU28可向GPU14提供到存储装置20的存储块0-11的虚拟化地址空间。
地址块0-11中的每一者可个别通过其地址可寻址。举例来说,图3说明IOMMU地址0-11。IOMMU地址0-11可分段为若干片段,其中每一片段包括IOMMU地址范围。处理器12可将每一IOMMU地址范围指派到特定数据类型。针对每一数据类型的IOMMU地址范围可为邻接的。
举例来说,如图3中说明,IOMMU地址范围44可为存储存储装置20的存储纹理数据的存储块的存储装置地址(例如,存储装置地址4、8和1)的地址块的邻接IOMMU地址。IOMMU地址范围44可包含IOMMU地址0-2。IOMMU地址范围46可为存储存储装置20的存储顶点数据的存储块的存储装置地址(例如,存储装置地址10和5)的地址块的邻接IOMMU地址。IOMMU地址范围46可包含IOMMU地址3和4。IOMMU地址范围48可为存储存储装置20的存储指令的存储块的存储装置地址(例如,存储装置地址2和9)的地址块的邻接IOMMU地址。IOMMU地址范围48可包含IOMMU地址5和6。IOMMU地址范围50可为存储存储装置20的存储常数的存储块的存储装置地址(例如,存储装置地址0和6)的地址块的邻接IOMMU地址。IOMMU地址范围50可包含IOMMU地址7和8。IOMMU地址范围52可为存储存储装置20的存储像素数据的存储块的存储装置地址(例如,存储装置地址11、3和7)的地址块的邻接IOMMU地址。IOMMU地址范围52可包含IOMMU地址9-11。如图2一样,可存在比图3中说明的多或少的纹理数据、顶点数据、指令、常数和像素数据。
如图3中说明,类似于图2,共同高速缓冲存储器26可包含高速缓存线42。同样,类似于图2,高速缓存线42中的每一者可包含地址字段30A和数据字段30B。在图3中说明的实例中,地址字段30A可指示IOMMU28的存储关于存储在数据字段30B中的图形数据存储在存储装置20中何处的地址的地址块的IOMMU地址。举例来说,图3中,高速缓存线42A的地址字段30A指示IOMMU28的地址块的地址为1。如图3中说明,IOMMU地址1是针对IOMMU28的地址块1。IOMMU的地址块1存储存储装置地址8。存储装置地址8对应于存储装置20中的存储块8。如图3中说明,存储装置20的存储块8存储第二纹理数据。高速缓存线42A的数据字段30B存储对应于具有存储装置地址8的存储块8的第二纹理数据。存储装置地址8对应于IOMMU28的地址块1,且地址块1的IOMMU地址为1,其对应于高速缓存线42A的数据字段30A。
如上文,在一些实例中,处理器12可在图形数据针对高速缓存线42中的一者存储的数据类型改变的情况下使图3的高速缓存线42中的一者无效。与之前一样,假定纹理图像改变,且处理器12可需要使高速缓存线42的存储纹理数据的一个或一个以上高速缓存线无效。为确定高速缓存线42中的一者是否存储纹理数据,处理器12可将高速缓存线中的每一者的地址字段30A与指派到纹理数据的IOMMU地址的邻接范围进行比较。
举例来说,类似于图2的实例,处理器12向纹理数据指派了IOMMU地址的邻接范围44,其包含邻接IOMMU地址0-2。在此实例中,处理器12可比较高速缓存线42中的每一者的地址字段30A以确定其是否在IOMMU地址的邻接范围44内。图3中,高速缓存线42A的地址字段30A在IOMMU地址的邻接范围44内。在此实例中,处理器12可使高速缓存线42A无效。
图4是说明可经配置以实施本发明的各方面的装置10的实例操作的流程图。出于说明的目的,参看图1、2和3。如上文描述,处理单元(例如,处理器12或GPU14)可将存储装置20的存储空间分段为各自包含多个存储块的片段,或将IOMMU28的地址空间分段为各自包含多个地址块的片段。出于说明的目的,存储装置20的存储块和IOMMU28的地址块可概括地称为块。
处理单元可指派第一数据类型的第一邻接地址范围,且指派第二数据类型的第二邻接地址范围(54)。第一和第二数据类型可为用于图形处理的不同数据类型。举例来说,如图2中说明,存储装置地址的邻接范围32、34、36、38和40中的一者可包括第一邻接地址范围。存储装置地址的邻接范围32、34、36、38和40中的另一者可包括第二邻接地址范围。并且,如图2中说明,针对特定数据类型指派存储装置地址的邻接范围32、34、36、38和40中的每一者。存储装置地址的邻接范围32、34、36、38和40中的每一者的所指派数据类型可包括第一数据类型。存储装置地址的邻接范围32、34、36、38和40中的另一者的所指派数据类型可包括第二数据类型。
作为另一实例,如图4中说明,IOMMU地址的邻接范围44、46、48、50和52中的一者可包括第一邻接地址范围。IOMMU地址的邻接范围44、46、48、50和52中的另一者可包括第二邻接地址范围。并且,如图3中说明,针对特定数据类型指派IOMMU地址的邻接范围44、46、48、50和52中的每一者。针对IOMMU地址的邻接范围44、46、48、50和52中的每一者的所指派的数据类型可包括第一数据类型。针对IOMMU地址的邻接范围44、46、48、50和52中的另一者的所指派的数据类型可包括第二数据类型。
处理单元(例如,处理器12或GPU14)可将第一数据类型的图形数据或第一数据类型的图形数据的地址存储在地址在第一邻接地址范围内的块内,且将第二数据类型的图形数据或第二数据类型的图形数据的地址存储在地址在第二邻接地址范围内的块内(56)。举例来说,如图2中说明,处理器12或GPU14可将纹理数据存储在存储装置20的地址在存储装置地址的邻接范围32内的存储块内。如图2中说明,处理器12或GPU14可将特定数据类型的图形数据存储在存储装置20的地址在针对所述特定数据类型指派的邻接地址范围内的存储块内。
作为另一实例,如图3中说明,处理单元(例如,处理器12或GPU14)可存储关于纹理数据存储在存储装置20中在IOMMU28的地址块(其地址在IOMMU地址的邻接范围44内)内何处的地址。如图3中说明,处理器12或GPU14可存储关于特定数据类型的图形数据存储在存储装置20的存储块(其地址在针对所述特定数据类型指派的邻接地址范围内)内何处的地址。
处理器12或GPU14可将第一数据类型的图形数据存储在共同高速缓冲存储器26的多个高速缓存线中的一些高速缓存线中,且将第二数据类型的图形数据存储在共同高速缓冲存储器26的所述多个高速缓存线中的一些高速缓存线中(58)。举例来说,如图2和3中说明,共同高速缓冲存储器26包含高速缓存线42。并且,如图2和3中说明,高速缓存线42B和42E可视为存储特定数据类型的图形数据(例如,顶点数据)的高速缓存线的群组。高速缓存线42C、42D和42F可视为存储特定数据类型的图形数据(例如,像素数据)的高速缓存线的另一群组。
图5是说明用以确定共同高速缓冲存储器26的多个高速缓存线中的哪些者与特定数据类型相关联的实例技术的流程图。出于说明的目的,参看图1、2和3。处理单元(例如,处理器12或GPU14)可将每一高速缓存线的地址字段与邻接地址范围进行比较(60)。举例来说,处理器12或GPU14可将高速缓存线42的地址字段30A与图2的存储装置地址的邻接范围32、34、36、38和40中的每一者进行比较。作为另一实例,处理器12或GPU14可将高速缓存线42的地址字段30A与图3的IOMMU地址的邻接范围44、46、48、50和52中的每一者进行比较。
处理器12或GPU14可基于所述比较确定高速缓存线42中的哪些高速缓存线与哪一数据类型相关联(62)。举例来说,处理器12或GPU14可确定高速缓存线42A与纹理数据相关联,高速缓存线42B和42E与顶点数据相关联,且高速缓存线42C、42D和42F与像素数据相关联,如图2和3中说明。在图2的实例中,处理器12或GPU14可确定高速缓存线42A与纹理数据相关联,因为高速缓存线42A的地址字段30A对应于存储装置20的存储纹理数据的存储块的地址。处理器12或GPU14可确定高速缓存线42B和42E与顶点数据相关联,因为高速缓存线42B和42E的地址字段30A对应于存储装置20的存储顶点数据的存储块的地址。处理器12或GPU14可确定高速缓存线42C、42D和42F与像素数据相关联,因为高速缓存线42C、42D和42F的地址字段30A对应于存储装置20的存储像素数据的存储块的地址。
在图3的实例中,处理器12或GPU14可确定高速缓存线42A与纹理数据相关联,因为高速缓存线42A的地址字段30A对应于IOMMU28的存储关于纹理数据存储在存储块20中何处的地址的地址块的地址。处理器12或GPU14可确定高速缓存线42B和42E与顶点数据相关联,因为高速缓存线42B和42E的地址字段30A对应于IOMMU28的存储关于顶点数据存储在存储块20中何处的地址的地址块的地址。处理器12或GPU14可确定高速缓存线42C、42D和42F与像素数据相关联,因为高速缓存线42C、42D和42F的地址字段30A对应于IOMMU28的存储关于像素数据存储在存储块20中何处的地址的地址块的地址。
图6是说明由处理单元(例如,处理器12或GPU14)执行的实例技术的流程图。出于说明的目的,参看图1、2和3。处理单元(例如,处理器12或GPU14)可接收对于第一数据类型的图形数据或第二数据类型的图形数据的请求(64)。所述请求可包含第一数据类型或第二数据类型的地址。举例来说,在GPU14上执行的软件(例如,着色器程序)可产生致使GPU14检索特定数据类型的图形数据(例如,第一数据类型的图形数据或第二数据类型的图形数据)的请求。在GPU14上执行的软件可向GPU14提供从其处检索所述请求中的第一或第二数据类型的图形数据的地址。
处理器12或GPU14可确定在对于第一或第二数据类型的图形数据的请求内的地址分别在第一邻接地址范围或第二邻接地址范围内(66)。举例来说,假定着色器程序请求纹理数据,且包含存储装置地址或IOMMU地址。在此实例中,GPU14可确定存储装置地址是否在图2的存储装置地址的邻接范围32内,或确定IOMMU地址是否在图3的IOMMU地址的邻接范围44内。通过确定请求中的地址是否在邻接地址范围内,处理器12或GPU14可确保处理器12或GPU14不会因疏忽而检索错误数据。
处理器12或GPU14可接着基于所述确定而处理所述请求(68)。举例来说,如果对于第一或第二数据类型的图形数据的请求分别在第一邻接地址范围或第二邻接地址范围内,那么处理器12或GPU14可处理所述请求。然而,如果对于第一或第二数据类型的图形数据的请求不分别在第一邻接地址范围或第二邻接地址范围内,那么处理器12或GPU14可不处理所述请求。
在一个或一个以上实例中,所描述的功能可实施在硬件、软件、固件,或其任何组合中。如果实施在软件中,那么所述功能可作为一个或一个以上指令或代码存储在包括非瞬时计算机可读媒体的制品上。计算机可读媒体可包含计算机数据存储媒体或通信媒体,通信媒体包含促进将计算机程序从一处传递到另一处的任何媒体。数据存储装置可为可由一个或一个以上计算机或一个或一个以上处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。借助实例而非限制,此计算机可读媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器,或可用于携载或存储指令或数据结构形式的所要程序代码且可由计算机存取的任何其它媒体。如本文使用的磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。上文的组合也应包含在计算机可读媒体的范围内。
所述代码可由例如一个或一个以上DSP、通用微处理器、ASIC、FPGA或其它等效集成或离散逻辑电路等一个或一个以上处理器执行。另外,在一些方面中,本文描述的功能性可提供在经配置用于编码和解码的专用硬件和/或软件模块内,或并入在组合式编解码器中。并且,可将所述技术完全实施于一个或一个以上电路或逻辑元件中。
本发明的技术可实施在广泛多种装置或设备中,包含无线手持机、集成电路(IC)或IC组(例如,芯片组)。本发明中描述各种组件、模块或单元以强调经配置以执行所揭示的技术的装置的功能方面,但不一定要求由不同硬件单元实现。事实上,如上文描述,各个单元可组合在硬件单元中,或由互操作硬件单元的集合提供,包含如上文描述的一个或一个以上处理器,结合适宜的软件和/或固件。
已描述了各种实例。这些及其它实例属于所附权利要求书的范围内。
Claims (14)
1.一种用于数据存储地址指派的方法,其包括:
利用处理单元指派用于图形处理的多个数据类型中的第一数据类型的第一邻接地址范围,以及指派用于图形处理的所述多个数据类型中的第二数据类型的第二邻接地址范围,其中所述第一和第二数据类型是不同数据类型,并且其中所述多个数据类型包括纹理数据、顶点数据、指令、常数和像素数据中的至少一者;
利用所述处理单元将所述第一数据类型的图形数据或所述第一数据类型的所述图形数据的地址中的至少一者存储在地址在所述第一邻接地址范围内的块内;
利用所述处理单元将所述第二数据类型的图形数据或所述第二数据类型的所述图形数据的地址中的至少一者存储在地址在所述第二邻接地址范围内的块内;
将所述第一邻接地址范围内的地址存储在共同高速缓冲存储器的多个高速缓存线的第一集合的每一者中的第一字段中,并且将所述第一数据类型的所述图形数据存储在所述共同高速缓冲存储器的所述多个高速缓存线的所述第一集合的第二字段中;
将所述第二邻接地址范围内的地址存储在所述共同高速缓冲存储器的所述多个高速缓存线的第二集合的每一者中的第一字段中,并且将所述第二数据类型的所述图形数据存储在所述共同高速缓冲存储器的所述多个高速缓存线的所述第二集合的第二字段中;
在所述第一数据类型的所述图形数据改变的情况下,将存储在所述多个高速缓存线的所述第一集合和所述第二集合中的每一者的第一字段中的地址与所述第一邻接地址范围进行比较,以确定哪些高速缓存线存储所述第一数据类型的图形数据;以及
使经确定的存储所述第一数据类型的图形数据的高速缓存线无效,以指示所述第一数据类型的所述图形数据不是当前的。
2.根据权利要求1所述的方法,其中所述第一和第二邻接地址范围包括存储装置地址的第一和第二邻接范围以及输入/输出存储器管理单元IOMMU地址的第一和第二邻接范围中的至少一者。
3.根据权利要求1所述的方法,其中地址在所述第一邻接地址范围内的所述块和地址在所述第二邻接地址范围内的所述块包括存储装置内的存储块和输入/输出存储器管理单元IOMMU内的地址块中的至少一者。
4.根据权利要求1所述的方法,其进一步包括:
接收对于所述第一数据类型的所述图形数据和所述第二数据类型的所述图形数据中的至少一者的请求,其中所述请求包含所述第一数据类型或所述第二数据类型的地址;
确定所述第一数据类型或第二数据类型的所述地址是否分别在所述第一邻接地址范围或所述第二邻接地址范围内;以及
基于所述确定处理所述请求。
5.一种用于数据存储地址指派的设备,其包括:
包含多个高速缓存线的共同高速缓冲存储器;以及
处理单元,所述处理单元经配置以:
指派用于图形处理的多个数据类型中的第一数据类型的第一邻接地址范围,以及指派用于图形处理的所述多个数据类型中的第二数据类型的第二邻接地址范围,其中所述第一和第二数据类型是不同数据类型,并且其中所述多个数据类型包括纹理数据、顶点数据、指令、常数和像素数据中的至少一者;
将所述第一数据类型的图形数据或所述第一数据类型的所述图形数据的地址中的至少一者存储在地址在所述第一邻接地址范围内的块内,以及将所述第二数据类型的图形数据或所述第二数据类型的所述图形数据的地址中的至少一者存储在地址在所述第二邻接地址范围内的块内;
将所述第一邻接地址范围内的地址存储在所述共同高速缓冲存储器的多个高速缓存线的第一集合的每一者中的第一字段中,并且将所述第一数据类型的所述图形数据存储在所述共同高速缓冲存储器的所述多个高速缓存线的所述第一集合的第二字段中;
将所述第二邻接地址范围内的地址存储在所述共同高速缓冲存储器的所述多个高速缓存线的第二集合的每一者中的第一字段中,并且将所述第二数据类型的所述图形数据存储在所述共同高速缓冲存储器的所述多个高速缓存线的所述第二集合的第二字段中;
在所述第一数据类型的所述图形数据改变的情况下,将存储在所述多个高速缓存线的所述第一集合和所述第二集合中的每一者的第一字段中的地址与所述第一邻接地址范围进行比较,以确定哪些高速缓存线存储所述第一数据类型的图形数据;以及
使经确定的存储所述第一数据类型的图形数据的高速缓存线无效,以指示所述第一数据类型的所述图形数据不是当前的。
6.根据权利要求5所述的设备,其中所述处理单元包括处理器和图形处理单元GPU中的至少一者。
7.根据权利要求5所述的设备,其中所述第一和第二邻接地址范围包括存储装置地址的第一和第二邻接范围以及输入/输出存储器管理单元IOMMU地址的第一和第二邻接范围中的至少一者。
8.根据权利要求5所述的设备,其进一步包括:
存储装置,
其中地址在所述第一邻接地址范围内的所述块和地址在所述第二邻接地址范围内的所述块包括所述存储装置内的存储块。
9.根据权利要求5所述的设备,其进一步包括:
输入/输出存储器管理单元IOMMU,
其中地址在所述第一邻接地址范围内的所述块和地址在所述第二邻接地址范围内的所述块包括所述IOMMU内的地址块。
10.根据权利要求5所述的设备,其中所述处理单元接收对于所述第一数据类型的所述数据和所述第二数据类型的所述数据中的至少一者的请求,其中所述请求包含所述第一数据类型或所述第二数据类型的地址,其中所述处理单元确定所述第一数据类型或第二数据类型的所述地址是否分别在所述第一邻接地址范围或所述第二邻接地址范围内,且其中所述处理单元基于所述确定处理所述请求。
11.一种用于数据存储地址指派的设备,其包括:
用于指派用于图形处理的多个数据类型中的第一数据类型的第一邻接地址范围以及指派用于图形处理的所述多个数据类型中的第二数据类型的第二邻接地址范围的装置,其中所述第一和第二数据类型是不同数据类型,并且其中所述多个数据类型包括纹理数据、顶点数据、指令、常数和像素数据中的至少一者;
用于将所述第一数据类型的图形数据或所述第一数据类型的所述图形数据的地址中的至少一者存储在地址在所述第一邻接地址范围内的块内的装置;
用于将所述第二数据类型的图形数据或所述第二数据类型的所述图形数据的地址中的至少一者存储在地址在所述第二邻接地址范围内的块内的装置;用于将所述第一邻接地址范围内的地址存储在共同高速缓冲存储器的多个高速缓存线的第一集合的每一者中的第一字段中并且将所述第一数据类型的所述图形数据存储在所述共同高速缓冲存储器的所述多个高速缓存线的所述第一集合的第二字段中的装置;
用于将所述第二邻接地址范围内的地址存储在所述共同高速缓冲存储器的所述多个高速缓存线的第二集合的每一者中的第一字段中并且将所述第二数据类型的所述图形数据存储在所述共同高速缓冲存储器的所述多个高速缓存线的所述第二集合的第二字段中的装置;
用于在所述第一数据类型的所述图形数据改变的情况下将存储在所述多个高速缓存线的所述第一集合和所述第二集合中的每一者的第一字段中的地址与所述第一邻接地址范围进行比较以确定哪些高速缓存线存储所述第一数据类型的图形数据的装置;以及
用于使经确定的存储所述第一数据类型的图形数据的高速缓存线无效以指示所述第一数据类型的所述图形数据不是当前的的装置。
12.根据权利要求11所述的设备,其中所述第一和第二邻接地址范围包括存储装置地址的第一和第二邻接范围以及输入/输出存储器管理单元IOMMU地址的第一和第二邻接范围中的至少一者。
13.根据权利要求11所述的设备,其中地址在所述第一邻接地址范围内的所述块和地址在所述第二邻接地址范围内的所述块包括存储装置内的存储块和输入/输出存储器管理单元IOMMU内的地址块中的至少一者。
14.根据权利要求11所述的设备,其进一步包括:
用于接收对于所述第一数据类型的所述图形数据和所述第二数据类型的所述图形数据中的至少一者的请求的装置,其中所述请求包含所述第一数据类型或所述第二数据类型的地址;
用于确定所述第一数据类型或第二数据类型的所述地址是否分别在所述第一邻接地址范围或所述第二邻接地址范围内的装置;以及
用于基于所述确定处理所述请求的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/024,579 US9047686B2 (en) | 2011-02-10 | 2011-02-10 | Data storage address assignment for graphics processing |
US13/024,579 | 2011-02-10 | ||
PCT/US2012/024760 WO2012109619A1 (en) | 2011-02-10 | 2012-02-10 | Data storage address assignment for graphics processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103370728A CN103370728A (zh) | 2013-10-23 |
CN103370728B true CN103370728B (zh) | 2016-06-01 |
Family
ID=45755552
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280008415.2A Expired - Fee Related CN103370728B (zh) | 2011-02-10 | 2012-02-10 | 用于图形处理的数据存储地址指派的方法和设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9047686B2 (zh) |
EP (1) | EP2673746B1 (zh) |
JP (1) | JP5694570B2 (zh) |
KR (1) | KR101563070B1 (zh) |
CN (1) | CN103370728B (zh) |
WO (1) | WO2012109619A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
EP2790179A4 (en) * | 2011-12-07 | 2015-07-01 | Mitsubishi Electric Corp | CONTROL DEVICE AND REMOTE CONTROL DEVICE |
CN103077130B (zh) * | 2012-12-31 | 2016-03-16 | 上海算芯微电子有限公司 | 信息处理方法及装置 |
JP2014186392A (ja) * | 2013-03-21 | 2014-10-02 | Fuji Xerox Co Ltd | 画像処理装置及びプログラム |
JP6271939B2 (ja) * | 2013-10-11 | 2018-01-31 | キヤノン株式会社 | 情報処理装置及びその制御方法、並びにプログラム |
US9311743B2 (en) * | 2013-10-23 | 2016-04-12 | Qualcomm Incorporated | Selectively merging partially-covered tiles to perform hierarchical z-culling |
US10621690B2 (en) * | 2015-09-17 | 2020-04-14 | Qualcomm Incorporated | Storing bandwidth-compressed graphics data |
US10671419B2 (en) * | 2016-02-29 | 2020-06-02 | Red Hat Israel, Ltd. | Multiple input-output memory management units with fine grained device scopes for virtual machines |
US10417134B2 (en) * | 2016-11-10 | 2019-09-17 | Oracle International Corporation | Cache memory architecture and policies for accelerating graph algorithms |
CN107003892B (zh) * | 2016-12-29 | 2021-10-08 | 深圳前海达闼云端智能科技有限公司 | Gpu虚拟化方法、装置、系统及电子设备、计算机程序产品 |
KR101943999B1 (ko) | 2017-08-31 | 2019-01-30 | 성균관대학교 산학협력단 | Gpu 컴퓨팅에서 캐시 용량을 고려한 캐시 바이패싱 방법 |
US10664396B2 (en) * | 2017-10-04 | 2020-05-26 | Intel Corporation | Systems, methods and apparatus for fabric delta merge operations to enhance NVMeoF stream writes |
US10467774B2 (en) * | 2017-11-06 | 2019-11-05 | Qualcomm Incorporated | Memory address flipping to determine data content integrity in GPU sub-system |
US20220308877A1 (en) * | 2021-03-26 | 2022-09-29 | Intel Corporation | High performance constant cache and constant access mechanisms |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5313577A (en) * | 1991-08-21 | 1994-05-17 | Digital Equipment Corporation | Translation of virtual addresses in a computer graphics system |
US5914730A (en) * | 1997-09-09 | 1999-06-22 | Compaq Computer Corp. | System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1993004462A1 (en) | 1991-08-21 | 1993-03-04 | Digital Equipment Corporation | Computer graphics system |
US5761720A (en) | 1996-03-15 | 1998-06-02 | Rendition, Inc. | Pixel engine pipeline processor data caching mechanism |
US5987582A (en) | 1996-09-30 | 1999-11-16 | Cirrus Logic, Inc. | Method of obtaining a buffer contiguous memory and building a page table that is accessible by a peripheral graphics device |
US6414687B1 (en) | 1997-04-30 | 2002-07-02 | Canon Kabushiki Kaisha | Register setting-micro programming system |
US5933158A (en) | 1997-09-09 | 1999-08-03 | Compaq Computer Corporation | Use of a link bit to fetch entries of a graphic address remapping table |
US5949436A (en) | 1997-09-30 | 1999-09-07 | Compaq Computer Corporation | Accelerated graphics port multiple entry gart cache allocation system and method |
US6243081B1 (en) | 1998-07-31 | 2001-06-05 | Hewlett-Packard Company | Data structure for efficient retrieval of compressed texture data from a memory system |
US6683615B1 (en) | 1999-06-09 | 2004-01-27 | 3Dlabs Inc., Ltd. | Doubly-virtualized texture memory |
US6457100B1 (en) | 1999-09-15 | 2002-09-24 | International Business Machines Corporation | Scaleable shared-memory multi-processor computer system having repetitive chip structure with efficient busing and coherence controls |
US6778175B2 (en) * | 2002-02-05 | 2004-08-17 | Xgi Technology Inc. | Method of arbitration of memory request for computer graphics system |
US7058755B2 (en) * | 2003-09-09 | 2006-06-06 | Ballard Power Systems Corporation | EEPROM emulation in flash memory |
US7760804B2 (en) | 2004-06-21 | 2010-07-20 | Intel Corporation | Efficient use of a render cache |
US8190206B2 (en) * | 2006-07-04 | 2012-05-29 | Sandisk Il Ltd. | Dual channel smart card data storage |
US20100079454A1 (en) | 2008-09-29 | 2010-04-01 | Legakis Justin S | Single Pass Tessellation |
US20100141664A1 (en) | 2008-12-08 | 2010-06-10 | Rawson Andrew R | Efficient GPU Context Save And Restore For Hosted Graphics |
US8793438B2 (en) * | 2009-10-15 | 2014-07-29 | Netronome Systems, Incorporated | Atomic compare and write memory |
-
2011
- 2011-02-10 US US13/024,579 patent/US9047686B2/en active Active
-
2012
- 2012-02-10 JP JP2013553622A patent/JP5694570B2/ja not_active Expired - Fee Related
- 2012-02-10 EP EP12705572.1A patent/EP2673746B1/en not_active Not-in-force
- 2012-02-10 CN CN201280008415.2A patent/CN103370728B/zh not_active Expired - Fee Related
- 2012-02-10 KR KR1020137023665A patent/KR101563070B1/ko active IP Right Grant
- 2012-02-10 WO PCT/US2012/024760 patent/WO2012109619A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5313577A (en) * | 1991-08-21 | 1994-05-17 | Digital Equipment Corporation | Translation of virtual addresses in a computer graphics system |
US5914730A (en) * | 1997-09-09 | 1999-06-22 | Compaq Computer Corp. | System and method for invalidating and updating individual GART table entries for accelerated graphics port transaction requests |
Also Published As
Publication number | Publication date |
---|---|
US9047686B2 (en) | 2015-06-02 |
CN103370728A (zh) | 2013-10-23 |
JP2014506700A (ja) | 2014-03-17 |
EP2673746A1 (en) | 2013-12-18 |
US20120206466A1 (en) | 2012-08-16 |
EP2673746B1 (en) | 2015-04-08 |
JP5694570B2 (ja) | 2015-04-01 |
KR20130135309A (ko) | 2013-12-10 |
KR101563070B1 (ko) | 2015-10-23 |
WO2012109619A1 (en) | 2012-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103370728B (zh) | 用于图形处理的数据存储地址指派的方法和设备 | |
KR101820621B1 (ko) | 광선 추적 어플리케이션들에서 트리 순회를 위한 시작 노드 결정 | |
JP6385614B1 (ja) | グラフィックス処理ユニットのためのハードウェア強制コンテンツ保護 | |
US6950107B1 (en) | System and method for reserving and managing memory spaces in a memory resource | |
US9134954B2 (en) | GPU memory buffer pre-fetch and pre-back signaling to avoid page-fault | |
CN104508638B (zh) | 多核心处理系统中的高速缓冲存储器数据迁移 | |
US11727632B2 (en) | Shader binding management in ray tracing | |
US20140040593A1 (en) | Multiple sets of attribute fields within a single page table entry | |
US9256536B2 (en) | Method and apparatus for providing shared caches | |
US10163180B2 (en) | Adaptive memory address scanning based on surface format for graphics processing | |
JP2016085729A (ja) | キャッシュメモリ・システム及びその動作方法 | |
CN105164653A (zh) | 属性字段的多核页表集合 | |
CN111209116A (zh) | 一种分配显存空间的方法、装置及计算机存储介质 | |
US9965827B2 (en) | Graphics processing system for and method of storing and querying vertex attribute data in a cache | |
US9779471B2 (en) | Transparent pixel format converter | |
US11372756B2 (en) | Memory pool management | |
KR102657586B1 (ko) | 그래픽스 데이터를 관리하는 방법 및 장치 | |
CN117435521B (zh) | 基于gpu渲染的纹理显存映射方法、装置及介质 | |
US20240371086A1 (en) | Method and apparatus for rendering virtual scene, device, and storage medium | |
CN117563221A (zh) | 一种自动生成mipmap纹理贴图的方法及系统 | |
CN115601566A (zh) | 基于纹素请求融合处理的纹理采样方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160601 Termination date: 20220210 |