CN104350523B - 用于多通道存储器的填补 - Google Patents
用于多通道存储器的填补 Download PDFInfo
- Publication number
- CN104350523B CN104350523B CN201380029728.0A CN201380029728A CN104350523B CN 104350523 B CN104350523 B CN 104350523B CN 201380029728 A CN201380029728 A CN 201380029728A CN 104350523 B CN104350523 B CN 104350523B
- Authority
- CN
- China
- Prior art keywords
- memory
- system storage
- stored
- pixel value
- storage
- 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
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本发明中描述的技术一股涉及当在系统存储器中存储数据时在所述系统存储器中保留填补字节。填补字节的所述保留可允许存储器接口在存储或随后检索所述数据时有效地利用到所述系统存储器的通道。
Description
技术领域
本发明涉及数据的存储和检索,且更特定来说涉及图形处理单元(GPU)对数据的存储和检索。
背景技术
例如图形处理单元(GPU)等各种处理单元从系统存储器检索数据和将数据存储到系统存储器中,所述系统存储器为用于容纳所述GPU的装置的存储器。系统存储器能够存储大量数据。GPU经由将所述GPU耦合到系统存储器的系统总线从系统存储器检索数据和将数据存储到系统存储器中。
发明内容
大体上,本发明中描述的技术是针对存储器填补以平衡系统存储器的存储器单元之间的存储器存取。举例来说,集成电路(IC)可包含多个存储器控制器。存储器控制器中的每一者可存取系统存储器内的存储器单元中的每一者。如更详细描述,通过填补,IC以一方式将数据存储到存储器单元中使得当将随后检索数据时,存储器控制器能够并行地(例如,在同时)从存储器单元检索数据。
在一个实例中,本发明描述一种方法,其包含以存储器接口接收指示所述存储器接口将表面的像素值存储在系统存储器中的多个指令。所述方法还包含以所述存储器接口至少在经由第一存储器控制器的所述系统存储器的第一存储器单元与经由第二不同存储器控制器的所述系统存储器的第二不同存储器单元之间以交错方式将所述表面的所述像素值存储在所述系统存储器的除了所述系统存储器中的保留填补位之外的位中,使得显示瓦片的第一像素值集合经由所述第一存储器控制器存储在所述第一存储器单元内且所述同一显示瓦片的第二像素值集合经由所述第二存储器控制器存储在所述第二存储器单元内。
在另一实例中,本发明描述一种集成电路(IC),其包含:第一存储器控制器,其以操作方式耦合到系统存储器的第一存储器单元;第二不同存储器控制器,其以操作方式耦合到所述系统存储器的第二不同存储器单元;以及存储器接口。所述存储器接口经配置以接收指示所述存储器接口将表面的像素值存储在所述系统存储器中的多个指令。所述存储器接口还经配置以至少在经由所述第一存储器控制器的所述系统存储器的所述第一存储器单元与经由所述第二不同存储器控制器的所述系统存储器的所述第二不同存储器单元之间以交错方式将所述表面的所述像素值存储在所述系统存储器的除了所述系统存储器中的保留填补位之外的位中,使得显示瓦片的第一像素值集合经由所述第一存储器控制器存储在所述第一存储器单元内且所述同一显示瓦片的第二像素值集合经由所述第二存储器控制器存储在所述第二存储器单元内。
在另一实例中,本发明描述一种装置,其包含:系统存储器,其包括至少第一存储器单元和第二不同存储器单元;以及集成电路(IC)。所述IC包含:第一存储器控制器,其以操作方式耦合到系统存储器的第一存储器单元;第二不同存储器控制器,其以操作方式耦合到所述系统存储器的第二不同存储器单元;以及存储器接口。所述存储器接口经配置以接收指示所述存储器接口将表面的像素值存储在所述系统存储器中的多个指令。所述存储器接口还经配置以至少在经由所述第一存储器控制器的所述系统存储器的所述第一存储器单元与经由所述第二不同存储器控制器的所述系统存储器的所述第二不同存储器单元之间以交错方式将所述表面的所述像素值存储在所述系统存储器的除了所述系统存储器中的保留填补位之外的位中,使得显示瓦片的第一像素值集合经由所述第一存储器控制器存储在所述第一存储器单元内且所述同一显示瓦片的第二像素值集合经由所述第二存储器控制器存储在所述第二存储器单元内。
在另一实例中,本发明描述一种装置,其包含:系统存储器,其包括至少第一存储器单元和第二不同存储器单元;以及集成电路(IC)。所述IC包含:第一存储器控制器,其以操作方式耦合到系统存储器的第一存储器单元;以及第二不同存储器控制器,其以操作方式耦合到所述系统存储器的第二不同存储器单元。所述IC还包含:用于以存储器接口接收指示所述存储器接口将表面的像素值存储在系统存储器中的多个指令的装置;以及用于以所述存储器接口至少在经由第一存储器控制器的所述系统存储器的第一存储器单元与经由第二不同存储器控制器的所述系统存储器的第二不同存储器单元之间以交错方式将表面的所述像素值存储在所述系统存储器的除了所述系统存储器中的保留填补位之外的位中使得显示瓦片的第一像素值集合经由所述第一存储器控制器存储在所述第一存储器单元内且所述同一显示瓦片的第二像素值集合经由所述第二存储器控制器存储在所述第二存储器单元内的装置。
在另一实例中,本发明描述一种计算机可读存储媒体。所述计算机可读存储媒体具有存储于其上的指令,所述指令在执行后即刻致使一或多个处理器:指示存储器接口至少在经由第一存储器控制器的所述系统存储器的第一存储器单元与经由第二不同存储器控制器的所述系统存储器的第二不同存储器单元之间以交错方式将表面的像素值存储在系统存储器的除了所述系统存储器中的保留填补位之外的位中,使得显示瓦片的第一像素值集合经由所述第一存储器控制器存储在所述第一存储器单元内且所述同一显示瓦片的第二像素值集合经由所述第二存储器控制器存储在所述第二存储器单元内。
在附图和以下描述中陈述一或多个实例的细节。从描述和附图以及从权利要求书将明了其它特征、目标和优点。
附图说明
图1是说明可经配置以实施本发明的一或多个方面的装置的实例的框图。
图2是说明图1的系统存储器的实例性物理页的概念图。
图3A和3B是说明以线性和瓦片方式存储像素值的实例的概念图。
图3C是说明表面瓦片的实例的概念图。
图3D是说明实例性显示瓦片的概念图。
图4是说明以线性方式在系统存储器中存储表面的图形图。
图5是说明当表面以线性方式存储时显示瓦片在系统存储器中的存储的图形图。
图6是说明以瓦片方式在系统存储器中存储表面的图形图。
图7是说明当表面以瓦片方式存储时显示瓦片在系统存储器中的存储的图形图。
图8是说明具有字节填补的以线性方式在系统存储器中存储表面的图形图。
图9到11是说明具有字节填补的以线性方式在系统存储器中存储表面的额外图形图。
图12是说明具有字节填补的以瓦片方式在系统存储器中存储表面的图形图。
图13和14是说明具有字节填补的以瓦片方式在系统存储器中存储表面的额外图形图。
图15是说明以瓦片方式在系统存储器中存储表面的另一图形图。
图16是说明具有字节填补的以瓦片方式在系统存储器中存储表面的另一图形图。
图17A和17B是说明通道函数的实例的图形图。
图18是说明根据本发明中描述的一或多个实例的实例性技术的流程图。
图19是说明可经配置以实施本发明的一或多个方面的装置的另一实例的框图。
具体实施方式
集成电路(IC)可包含一或多个处理单元,例如图形处理单元(GPU)和处理器。IC还可包含存储器接口单元(MIF)和多个存储器控制器(MC)。MC中的每一者可允许GPU和处理器存取系统存储器中的对应存储器单元。举例来说,系统存储器可为用于容纳IC的装置的总存储器,且一般提供与IC局部的存储器(例如IC内的高速缓存存储器)相比来说相对大量的存储能力。
如本发明中使用的术语集成电路或IC用以描述包含例如处理器、GPU、MIF和MC等不同组件的组合的电路。术语集成电路或IC不应解释为意味着这些各种组件驻留于共同封装或外壳内。举例来说,IC可包含两个不同的芯片封装。第一封装可包含处理器、MIF和MC,且第二封装可包含GPU。其它排列和组合可为可能的,包含其中存在共同形成IC的两个以上封装的实例。单个封装包含处理器、GPU、MIF和MC也是可能的。
在一些实例中,系统存储器可划分为多个存储器单元,且存储器单元中的每一者可由对应MC控制。举例来说,假定系统存储器内存在两个存储器单元(存储器单元0和存储器单元1),且IC内存在两个MC(MC0和MC1)。在此实例中,MC0为GPU和处理器提供对存储器单元0的存取,且MC1为GPU和处理器提供对存储器单元1的存取。不可能从MC1存取存储器单元0,且不可能从MC0存取存储器单元1。
为了说明的目的且便于描述,以下实例是在包含分别由两个MC(MC0和MC1)控制的两个存储器单元(存储器单元0和存储器单元1)的系统存储器的上下文中描述。然而,本发明中描述的技术不受此限制。系统存储器可包含两个以上存储器单元,且IC可包含两个以上MC。
存储器接口单元(MIF)为GPU提供对MC的存取。举例来说,MIF包含存储器管理单元(MMU),其将虚拟存储器地址映射到系统存储器的物理地址。GPU使用数据经存储或将存储在系统存储器中处的虚拟地址来检索或存储数据。MIF将虚拟地址转换为系统存储器的物理地址。
举例来说,在可为中央处理单元(CPU)的处理器上运行的现代操作系统(OS)通常使用虚拟存储器方案,用于向多个到各种组件(例如GPU)分配存储器。虚拟存储器是一种存储器管理技术,其虚拟化系统物理存储器(例如,RAM、磁盘存储装置等等)以使得GPU可仅需要参考存储器的一个集合(即,虚拟存储器)。虚拟存储器由映射到物理存储器中的位置的连续地址空间组成。以此方式,物理存储器的分段对GPU“隐藏”,GPU可改为与虚拟存储器的连续块交互。虚拟存储器中的连续块通常布置为“页”。每一页是虚拟存储器地址的某种固定长度的连续块。从虚拟存储器到物理存储器的映射经常由存储器管理单元(MMU)处置,所述MMU在本发明中描述的实例中为MIF的部分。
当存储由GPU或IC内的另一组件传输的数据时,MIF可利用交错方式来存储数据。存储的交错方式指代MC0将第一位集合存储在存储器单元0中,然后MC1将第二位集合存储在存储器单元1中,然后MC0将第三位集合存储在存储器单元0中,然后MC1将第四位集合存储在存储器单元1中,等等。换句话说,存储的交错方式可视为位集合在存储器单元0和存储器单元1中的存储的交替。每交错循环存储的位的数目可称为交错粒度。交错粒度可以字节来界定,其中一个字节等于八个位。交错粒度可经预编程或为可选择的。
作为说明性实例,GPU可将待存储的数据以及数据将存储到的虚拟地址传输到MIF。MIF又将虚拟地址映射到物理地址,且将数据存储在系统存储器中。在本发明中描述的实例中,MIF可以交错方式基于交错粒度经由MC0将数据存储在存储器单元0中且经由MC1将数据存储在存储器单元1中。
在一些实例中,MC0和MC1可将数据存储在系统存储器的页中,其中页可涵盖存储器单元0和存储器单元1两者。举例来说,页可包含四个区段0到3。区段0和2可为存储器单元0的部分,且区段1和3可为存储器单元1的部分。MIF可将虚拟页映射到物理页的四个区段,且以交错方式将虚拟页的数据存储在物理页的区段中。然而,本发明的方面不限于其中系统存储器包含页的实例。为了说明的目的,为便于描述而在系统存储器包含页的上下文中描述各种实例。
作为说明性实例,假定交错粒度为1024个字节(例如,1千字节(kB)),且系统存储器中的页可存储多达4096个字节(例如,4kB)的数据。在此实例中,为了以交错方式填充页,MIF可致使MC0将第一1kB的数据存储在存储器单元0中的页的区段0中,随后致使MC1将第二1kB的数据存储在存储器单元1中的页的区段1中,随后致使MC0将第三1kB的数据存储在存储器单元0中的页的区段2中,且随后致使MC1将第四1kB的数据存储在存储器单元1中的页的区段3中。
在其中系统存储器未划分为页的实例中,MIF可仍基于交错粒度来交错存储。举例来说,MIF可致使MC0将第一1kB的数据存储在系统存储器中,且随后致使MC1将第二1kB的数据存储在系统存储器中,等等。举例来说,MIF可使用MC0和MC1在系统存储器中以交错方式存储数据。
虽然以交错方式存储数据可平衡大体上在MC0与MC1之间的存储责任,但在检索数据中可能没有相等的平衡(例如,MIF经由MC0在存储器单元0中且经由MC1在存储器单元1中存储相等量的从GPU接收的数据,但MIF可能不会经由MC0从存储器单元0且经由MC1从存储器单元1检索相等量的数据用于GPU)。如更详细描述,GPU可执行光栅化步骤,其中GPU将显示器划分为若干显示瓦片,从系统存储器检索显示瓦片内的像素值,且基于像素值再现显示器的像素。以交错方式存储可导致GPU随后仅从存储器单元0或存储器单元1而不是存储器单元0和存储器单元1两者检索像素值。
举例来说,以交错方式存储可导致用于一个显示瓦片的所有像素值存储在存储器单元0中且无像素值存储在存储器单元1中,或反之亦然。在此情况下,当GPU请求检索显示瓦片的像素值时,MIF可仅能够使用MC0来从存储器单元0检索像素值,从而留下MC1空闲,或反之亦然。在此实例中,从系统存储器的仅一个存储器单元且不从任何其它存储器单元检索显示瓦片的像素值可能不是对系统存储器的有效存取。
本发明中描述的技术可在以交错方式存储时将填补位添加到系统存储器。为了说明的目的,在填补字节的方面描述所述技术,其中一个填补字节等于八个填补位。与其中不存在填补字节的实例相比,填补字节可占据系统存储器内的额外存储位置。然而,填补字节可切换数据存储的方式,使得当随后检索显示瓦片内的像素的像素值时,分别经由MC0和MC1从存储器单元0和存储器单元1两者检索所述显示瓦片的像素值。此外,通过填补字节,GPU可能够并行地存储显示瓦片的数据,如下文论述。
举例来说,为了检索显示瓦片的像素值,GPU可能够请求MIF在大体上同时(例如,并行地)分别经由MC0和MC1从存储器单元0和存储器单元1两者检索像素值。使用MC0和MC1在同时存取像素值可促进系统存储器的有效存取。与GPU仅可从MC0或MC1且并非同时存取系统存储器的情况相比,这可允许GPU对系统存储器的每次存取检索更大量的像素值。以此方式,本发明中描述的技术可牺牲存储空间(例如,由于额外填补字节)来实现对系统存储器的较好存取效率。
类似地,当存储显示瓦片的像素值时,GPU可能够请求MIF在大体上同时(例如,并行地)分别经由MC0和MC1从存储器单元0和存储器单元1两者存储像素值。类似于像素值的检索,此并行存储可促进对系统存储器的有效存取。
图1是说明可实施本发明的一或多个方面的装置的实例的框图。举例来说,图1说明装置10。装置10的实例包含(但不限于)例如媒体播放器等视频装置、机顶盒、例如移动电话等无线手持机、个人数字助理(PDA)、桌上型计算机、膝上型计算机、游戏控制台、视频会议单元、平板计算装置和类似物。如所说明,装置10可包含集成电路(IC)12和系统存储器24。装置10可包含除了图1中说明的那些组件之外的组件,如图19中更详细说明。
IC 12可包含图形处理单元(GPU)14、处理器16、存储器接口(MIF)20以及存储器控制器(MC)22A到22N(统称为MC 22)。虽然图1说明GPU 14和处理器16驻留于共同封装(例如,共同硬件芯片)中,但本发明的方面不受此限制。举例来说,处理器16可在封装的外部。此外,在其中处理器16在封装的外部的一些实例中,GPU 14可包含MIF 20和MC 22;然而,这并非在其中处理器16在封装的外部的每个实例中都是要求。
换句话说,在一些实例中,处理器16、GPU 12、MIF 20和MC 22A到22N可为个别硬件芯片,且IC 12可包含这些硬件芯片的组合。在其它实例中,一个硬件芯片可包含处理器16、MIF 20和MC 22中的一或多者,且另一硬件芯片可包含GPU 14,且在这些实例中,IC 12可包含这两个硬件芯片两者。其它此类排列和组合可为可能的,包含图1中说明的实例,其中处理器16、GPU 14、MIF 20和MC 22说明为处于共同封装中。而且,IC 12可包含除了图1中说明的组件外的额外组件,例如视频译码器。
IC 12可为经设计以用于特定目的的专用硬件单元,例如以特定性能准则再现图形,所述性能准则例如以相对快速方式再现图形的大量并行处理能力。在一些实例中,IC12可包含与数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它等效集成或离散逻辑电路组合的专门硬件。举例来说,GPU 14可为专用硬件,且处理器16可为DSP、通用微处理器、ASIC或FPGA,但本发明的方面不应视为受此限制。
系统存储器24的实例包含(但不限于)随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器、硬盘驱动器,或可用以用指令或数据结构的形式存储所要程序代码且可由处理器16和GPU 14存取的任一其它媒体。在一些实例中,系统存储器24可包括一或多个计算机可读存储媒体,例如计算机可读存储装置。举例来说,在一些实例性实施方案中,系统存储器24可包含致使处理器16和GPU 14执行归属于本发明中的每一功能的功能的指令。
在一些实例中,系统存储器24可视为非暂时性存储媒体。术语“非暂时性”可指示存储媒体未在载波或传播信号中体现。然而,术语“非暂时性”不应解释为意味着系统存储器24是不可移动的。作为一个实例,系统存储器24可从装置10移除,且移动到另一装置。作为另一实例,大体上类似于系统存储器24的存储装置可插入到装置10中。在某些实例中,非暂时性存储媒体可存储可随着时间改变的数据(例如,在RAM中)。
GPU 14可经配置以执行图形相关功能,例如确定装置10的显示器(可为装置10的部分或耦合到装置10)的像素的像素值,且再现显示器的像素。举例来说,处理器16可执行存储在系统存储器24中的应用程序,例如视频游戏、网络浏览器、电子邮件应用程序,或产生将呈现的图形的任一其它应用程序。处理器16可指示GPU 14执行图形相关功能以确定像素值,例如通过应用程序的执行产生的图形的颜色值、不透明度值和其它此类值。作为响应,GPU 14可执行图形相关功能且基于所确定像素值再现显示器的像素。
图形处理单元(GPU)驱动器18可充当处理器16与GPU 14之间的接口,其允许处理器16指示GPU 14执行图形相关功能。举例来说,当处理器16需要将命令或指令传输到GPU14时,处理器16是通过GPU驱动器18来传输所述命令或指令。处理器16可传输到GPU 14的命令或指令包含加载和执行例如顶点着色器和片段着色器等着色器程序的指令的命令,以及例如GPU 14可从系统存储器24检索像素值或将像素值存储到所述系统存储器中的虚拟地址等命令。以此方式,处理器16可控制GPU 14的功能性。
GPU 14用以检索或存储像素值的虚拟地址可为虚拟存储器方案的部分,其保持像素值所存储或正被检索的实际位置对GPU 14“隐藏”。举例来说,虚拟存储器是存储器管理技术,其虚拟化系统存储器24以使得GPU 14可仅需要参考虚拟地址来检索和存储像素值。在这些实例中,处理器16的GPU驱动器18可将虚拟地址传输到GPU14,其向GPU 14指示将像素值存储到何处或从何处检索像素值。
如所说明,在处理器16内以虚线展示GPU驱动器18。这是为了说明GPU驱动器18是在处理器16上执行的软件。在此实例中,系统存储器24存储GPU驱动器18的源代码或目标代码,处理器16检索所述代码用于执行。替代地,GPU驱动器18可为嵌入在处理器16内的硬件,或在处理器16外部的耦合到处理器16和GPU 14的硬件。大体上,GPU驱动器18可为硬件、软件、固件或其任一组合。为了说明和清楚的目的,本发明中描述的实例是在GPU驱动器18为在处理器16上执行的软件的上下文中描述。
如上文指示,GPU 14可将像素值存储到系统存储器24中和从所述系统存储器检索像素值。为了存取系统存储器24,GPU 14可利用存储器接口(MIF)20和存储器控制器(MC)22。MIF 20和MC 22可为硬件、软件、固件或其任一组合。为了说明的目的,将MIF 20和MC 22描述为硬件。
MC 22中的每一者可提供对系统存储器24的存储器单元26A到26N(统称为存储器单元26)中的对应者的存取。存储器单元26中的每一者可为系统存储器24的单独可存取的相异部分。举例来说,系统存储器24可包含多个存储器单元26,且对存储器单元26的存取由MC 22中的对应一者提供。
在一些实例中,存储器单元26中的一者可仅经由MC 22中的其对应一者而不经由其它MC 22来存取。举例来说,如果MC 22A对应于存储器单元26A,那么存储器单元26A可仅经由MC 22A来存取,且MC 22B到22N不能够存取存储器单元26A。以此方式,MC 22中的每一者经由对应存储器单元26提供到系统存储器24的通道。
为了说明和清楚的目的,本发明的方面是在IC 12包含两个MC 22(例如,MC 22A和MC 22N)且系统存储器24包含两个存储器单元26(例如,存储器单元26A和存储器单元26N)的情况下描述。然而,本发明的方面不受此限制。在替代实例中,IC 12可包含两个以上MC22,且系统存储器24可包含两个以上存储器单元26,且本发明中描述的技术也可扩展到此些实例。在其中系统存储器24包含两个存储器单元的实例中,系统存储器24可称为双通道存储器,因为存在分别由两个MC 22提供到系统存储器24的两个通道。
MIF 20可为接口,其允许GPU 14和处理器16分别经由MC 22A和22N从存储器单元26A和26N存取数据(例如,像素值)。举例来说,MIF 20可包含存储器管理单元(MMU)21,其将虚拟存储器地址映射到物理存储器地址中。举例来说,为了将像素值存储到系统存储器24内的特定存储器地址或从所述特定存储器地址检索像素值,GPU14可将与所述特定存储器地址相关联的虚拟地址输出到MIF 20。MIF 20的MMU 21可从虚拟存储器地址确定所述特定存储器地址,且存取系统存储器26中的所述特定存储器地址。
虚拟存储器空间可划分为多个虚拟页。这些虚拟页可为连续的,但系统存储器24中这些虚拟页对应的物理页可能在系统存储器24中不连续。页可视为MIF 20可能够管理的最小单元。
在本发明的方面中,从虚拟页映射的物理页可涵盖存储器单元26A和存储器单元26N两者,如图2中更详细说明。图2是说明系统存储器24的实例性物理页的概念图。举例来说,图2说明包含虚拟页28的存储器接口(MIF)20,所述虚拟页包含四个区段(区段0到3)。应了解,虚拟页28是在图2中为便于理解而说明的虚拟构造。在图2中,系统存储器24可包含对应于虚拟页28的物理页30。
物理页30可涵盖存储器单元26A和存储器单元26N两者。举例来说,存储器单元26A可存储物理页30的一部分,指示为部分30A,且存储器单元26B可存储物理页30的一部分,指示为部分30B。如所说明,存储器单元26A存储物理页30的区段0和区段2,且存储器单元26N存储物理页30的区段1和区段3。
由于IC 12以交错方式存储数据,因此存储器单元26A可存储区段0和区段2且存储器单元26N可存储区段1和区段3。举例来说,返回参见图1,GPU驱动器18可传输致使GPU 14存储像素值的指令,且可传输像素值将存储于的虚拟地址。GPU 14又可请求MIF 20根据虚拟地址存储像素值。MIF 20又可将虚拟地址映射到物理地址,且基于物理地址以交错方式将像素值存储在系统存储器24的页中。
MIF 20可经配置以用交错方式存储像素值。作为一个实例,MIF 20可经预编程以用交错方式存储像素值。作为另一实例,MIF 20可接收指示MIF 20以交错方式存储像素值的指令。
作为图形相关功能的部分,GPU 14可产生将在装置10的显示器上显示的图形图像或内容的表面。GPU驱动器18可传输致使GPU 14将所述表面存储在系统存储器24中的指令,以及关于GPU 14将在何处存储所述表面的虚拟地址。每一表面可包含存储在系统存储器24中的像素值。
在本发明中描述的实例中,当GPU驱动器18传输指令时,作为一个实例,GPU驱动器18可将指令直接传输到GPU 14,其致使GPU 14执行所指示的功能。作为另一实例,GPU驱动器18可传输存储在系统存储器24中的指令。GPU驱动器18可随后命令GPU 14从系统存储器24检索所存储指令,且执行所指示的功能。在这些实例中的任一者中,可考虑GPU驱动器18传输致使GPU 14执行所指示的功能的指令。
所述表面可视为像素值的二维(2D)阵列,且GPU 14可在系统存储器24中以线性或瓦片方式存储表面。在一些实例中,像素值的2D阵列可为与显示器上的像素数目近似相同的大小。举例来说,表面的像素值可表示由GPU 14产生的图形图像。
作为一个实例,在处理器16上执行的GPU驱动器18可传输致使GPU 14存储表面的每一条线的指令,所述线随后存储在系统存储器24中,其中一条线涵盖所述表面的一行上的像素值。作为另一实例,GPU驱动器18可传输致使GPU 14存储表面的每一瓦片(称为表面瓦片)的指令,所述瓦片随后存储在系统存储器24中,其中瓦片涵盖所述表面的MxN像素值。大体上,本发明可一般地涉及存储表面的若干部分,其可称为以线性或瓦片方式存储表面。
在此实例中,为了以线性或瓦片方式存储表面,GPU驱动器18可传输致使GPU14将像素值存储在虚拟地址处的指令。MIF 20的MMU 21可确定对应于虚拟地址的物理地址,且GPU 14通过MIF 20可将像素值存储在系统存储器24的对应于物理地址的页处。
MIF 20可在MC 22A与MC 22N之间交错以将像素值存储在系统存储器24的页中。存储的交错方式指代经由MC 22A将第一字节集合(其中一个字节为八位)存储在存储器单元26A中,然后经由MC 22N将第二字节集合存储在存储器单元26N中,然后经由MC 22A将第三字节集合存储在存储器单元26A中,然后经由MC 22N将第四字节集合存储在存储器单元26N中,等等。换句话说,存储的交错方式可视为字节经由相应MC 22A和22N在存储器单元26A和存储器单元26N中的存储的交替。每交错循环存储的字节数目可称为交错粒度,且可由GPU驱动器18界定或MIF 20可以交错粒度预编程。
举例来说,在图2中说明的实例中,物理页30(从虚拟页28映射)可能够存储4096个字节的像素值(例如,4千字节(kB)的像素值),其意味着区段0到3中的每一者可存储1024个字节的像素值(例如,1kB的像素值)。而且,假定交错粒度为1024个字节。在此实例中,由于1kB的交错粒度,GPU驱动器18可致使GPU 14通过MIF 20存储像素值,使得表面的一条线或瓦片的第一1kB的像素值经由MC 22A存储在存储器单元26A中的区段0中,且使得表面的所述线或瓦片的第二1kB的像素值经由MC 22N存储在存储器单元26N中的区段1中。而且,由于1kB的交错粒度,GPU驱动器18可指示致使GPU 14通过MIF 20存储像素值,使得表面的所述线或瓦片的第三1kB的像素值经由MC 22A存储在存储器单元26A中的区段2中,且使得表面的所述线或瓦片的第四1kB的像素值经由MC 22N存储在存储器单元26N中的区段3中。
虽然以上实例描述像素值在页(例如,物理页30或虚拟页28)中的存储,但本发明的方面不受此限制。举例来说,系统存储器24划分为多个物理页可能是不必要的。甚至在这些实例中,GPU驱动器18也可致使GPU 14通过MIF 20以交错方式存储像素值。在这些实例中,系统存储器24内的存储位可视为连续存储位置;然而,连续存储可能不是在每个实例中都是必要的。作为其中系统存储器24不一定划分为物理页的实例,由于1kB的交错粒度,GPU驱动器18可致使GPU 14通过MIF 20存储像素值,使得表面的一条线或瓦片的第一1kB的像素值经由MC 22A存储在存储器单元26A中,且使得表面的所述线或瓦片的第二1kB的像素值经由MC 22N存储在存储器单元26N中。而且,由于1kB的交错粒度,GPU驱动器18可致使GPU14通过MIF 20存储像素值,使得表面的所述线或瓦片的第三1kB的像素值经由MC 22A存储在存储器单元26A中,且使得表面的所述线或瓦片的第四1kB的像素值经由MC 22N存储在存储器单元26N中。为便于描述,以其中系统存储器24包含例如物理页30等页的实例来描述各种实例。
为了说明的目的,本发明描述存储若干字节的像素值。一字节等于8个位。因此,存储1024个字节等效于存储8192个位,其中位可为数字值0或数字值1。因此,虽然本发明描述存储若干字节的像素值,但本发明中描述的技术等效于存储若干位的像素值,其中每一字节为8个位。
在其中系统存储器24包含物理页30的实例中,交错粒度致使物理页30的一半存储在存储器单元26A中且物理页30的另一半存储在存储器单元26B中。此交错存储可促进有效的通道利用。举例来说,交错粒度可致使MIF 20使用由MC 22A建立的通道存储一半像素值,且使用由MC 22N建立的通道存储一半像素值。此使用由MC22A建立的通道存储一半像素值且使用由MC22N建立的通道存储一半像素值可甚至在其中系统存储器24未划分为页的实例中发生。
而且,以交错存储方式存储像素值可允许GPU 14在系统存储器24中并行地存储像素值。举例来说,GPU 14可能够经由MC 22A将像素值存储在存储器单元26A内的物理页30的部分30A的区段0中,在同时(例如,并行地)GPU 14可能够经由MC 22N将像素值存储在存储器单元26N内的物理页30的部分30B的区段1中。类似于上文,在与经由MC 22N在存储器单元26N内的像素值的存储同时发生的经由MC 22A在存储器单元26A内的像素值的存储也可甚至在其中系统存储器24未划分为页的实例中发生。
然而,如更详细描述,检索已经以交错存储方式存储的像素值可能未有效利用由MC 22A和MC 22N建立的到系统存储器24的通道。举例来说,GPU 14的功能中的一者是在装置10的显示器上再现最终像素值以用于呈现。举例来说,在表面存储在系统存储器24中之后,GPU 14从系统存储器24检索表面的像素值以在装置10的显示器上显示像素。像素值表示显示器将显示的图形内容或图像。
在一些实例中,GPU 14在称为光栅化的过程中逐片地再现显示。在光栅化中,GPU14将显示器划分为多个显示瓦片。GPU 14随后再现一个显示瓦片的图形内容,随后是下一显示瓦片,以此类推,以在显示器上再现最终图像。
每一显示瓦片可为显示器的矩形区域。举例来说,每一显示瓦片包含WxH像素,其中W是以像素计的显示瓦片的宽度,且H是以像素计的显示瓦片的高度。显示瓦片可为16x16、8x4、8x8、16x4、16x8、32x4、32x8、4x8、4x16、8x16、4x32或8x32。然而,本发明的方面不受此限制,且本发明中描述的技术一般预期任何大小的显示瓦片,包含非矩形显示瓦片。
显示瓦片和以瓦片方式存储表面(例如,存储表面瓦片)不应混淆。显示瓦片是显示器的其中GPU 14再现图形内容的部分。以瓦片方式存储表面意味着将表面瓦片的像素值存储在系统存储器24中。换句话说,显示瓦片指代显示器上的瓦片,且表面瓦片指代表面内将显示的瓦片。为便于理解,假定每一显示瓦片的大小为16x16,且每一表面瓦片的大小为4x4。显示瓦片的16x16的大小以及表面瓦片的4x4的大小经选择以使得显示瓦片的大小和表面瓦片的大小不同,以避免混淆显示瓦片和表面瓦片。在替代实例中,显示瓦片和表面瓦片具有相同大小或不同于16x16和4x4的大小可为可能的。
图3A和3B是说明以线性和瓦片方式存储像素值的实例的概念图。图3A说明表面32A,且图3B说明表面32B。表面32A和32B可包含装置10的显示器上的对应像素的像素值,例如颜色值或纹理值。举例来说,表面32A和表面32B各自包含h乘w像素值,其中h是表面32A和表面32B的高度且w是表面32A和表面32B的宽度。在一些实例中,表面32A和32B的高度和宽度可大体上类似于装置10的显示器的高度和宽度。举例来说,装置10的显示器可包含h乘w像素,且表面32A和32B的像素值中的每一者可为装置10的显示器的对应像素的像素值。
在图3A中,表面32A包含h条线,且GPU 14可从上到下且从线的左端到线的右端,利用上述交错存储技术在系统存储器24的页中存储h条线中的每一者中的像素值。以相对于图3A描述的方式存储像素值可称为以线性方式存储像素值。举例来说,如图3A中说明,GPU14可将线0的像素值存储在虚拟存储器28的第一部分中,将线1的像素值存储在虚拟存储器28的第二部分中,等等。如上文论述,虚拟存储器28的部分可为连续的。MIF 20可随后经由MC 22A和MC 22N将像素值存储到系统存储器24的存储器单元26A和存储器单元26N中。
在图3B中,表面32B包含X数目个表面瓦片,其中每一表面瓦片为MxN的大小。举例来说,每一表面瓦片对应于装置10的显示器上的MxN像素。GPU 14可从左上方表面瓦片(例如,瓦片0)开始且以右下方表面瓦片(例如,瓦片X-1)结束,存储每一表面瓦片中的MxN像素值。以相对于图3B描述的方式存储像素值可称为以瓦片方式存储像素值。举例来说,如图3B中说明,GPU 14可将表面瓦片0的像素值存储在虚拟存储器28的第一部分中,将表面瓦片1的像素值存储在虚拟存储器28的第二部分中,等等。类似于图3A,虚拟存储器28的部分可为连续的。而且,类似于图3A,在图3B中,MIF 20可随后经由MC 22A和MC 22N将像素值存储到系统存储器24的存储器单元26A和存储器单元26N中。
在一些实例中,以线性方式存储像素值可视为以瓦片方式存储像素值的特殊情况。举例来说,假定表面瓦片的大小为w乘1(例如,M等于w,且N等于1)。在此实例中,表面瓦片的大小与表面32A的线的大小相同,且在此实例中以瓦片方式存储像素值可与以线性方式存储像素值相同。大体上,本发明可一般地涉及存储表面(例如,表面32A或表面32B)的若干部分,其可称为以线性或瓦片方式存储表面。
当GPU 14产生表面(例如,将在装置10的显示器上显示的图像或图形内容)的像素值时,GPU 14可请求以线性方式或瓦片方式存储像素值,且MIF 20可随后基于交错粒度以交错方式存储像素值以有效地利用由MC 22A和MC 22N提供的到系统存储器24的通道。然而,当GPU 14请求从系统存储器24检索像素值时,在表面是以线性或瓦片方式存储时MIF20可能不会有效地利用由MC 22A和MC 22N提供的到系统24的通道。
举例来说,装置10的显示器可包含右半部和左半部。如图4到7中更详细说明,当GPU 14以线性或瓦片方式存储像素值时,MIF 20可仅使用MC 22A且不从MC 22N检索对应于显示器的左半部的所有像素值。类似地,MIF 20可仅使用MC 22N且不从MC 22A检索对应于显示器的右半部的所有像素值。以此方式,当GPU 14再现处于显示器的左半部中的显示瓦片时,GPU 14可仅从MC 22A接收像素值,留下由MC 22N建立的通道空闲,这可为对到系统存储器24的通道的低效使用。类似地,当GPU 14再现处于显示器的右半部中的显示瓦片时,GPU 14可仅从MC 22N接收像素值,留下由MC 22A建立的通道,这也可为对到系统存储器24的通道的低效使用。
图3C是说明表面瓦片的实例的概念图。举例来说,图3C说明4x4表面瓦片33,其在瓦片中包含总共16个像素。图3D是说明实例性显示瓦片的概念图。举例来说,图3D说明显示35,其包含十六个显示瓦片(例如,显示瓦片0到15)。作为一个实例,每一显示瓦片可包含16x16像素。换句话说,显示瓦片0可包含16x16像素,显示瓦片1可包含16x16像素,等等。在此实例中,显示35可包含64x64像素(即,每显示瓦片16个水平像素*4个显示瓦片等于64个水平像素,且每显示瓦片16个垂直像素*4个显示瓦片等于64个垂直像素,总共64x64像素)。
图4是说明以线性方式在系统存储器中存储表面的图形图。举例来说,如上文相对于图3A描述,MIF 20可在系统存储器24中以线性方式存储由GPU 14产生的表面32A的像素值。图4说明表面32A的像素值在系统存储器24中的存储的结果。在图4中,假定装置10的显示器的宽度为512个像素且高度为16个像素。因此,表面32A的宽度(w)为512个像素值,且表面32A的高度(h)为16个像素值,因为表面32A的大小可与装置10的显示器的大小相同。为便于说明,图4中的每一列表示16个像素值。因此,存在32个列,其各自表示16个像素值,得到512个像素值的总宽度(即,16*32等于512)。
而且,在图4的实例中,假定每一像素值涵盖4个字节的数据。举例来说,每一像素值可表示红绿蓝(RGB)颜色值和不透明度值。在此实例中,红色值可涵盖8个位,绿色值可涵盖8个位,蓝色值可涵盖8个位,且不透明度值可涵盖8个位,总共32个位,其为4个字节(即,32位除以每字节8位)。因此,在每一行上存在总共2048个字节(即,512个像素值*每像素值4个字节)。又,为便于描述,相对于若干字节的像素值来描述所述技术;然而,可相对于若干位的像素值来考虑所述技术,其中每一字节为8位。
图4中的数字值0到7指示系统存储器24中存储表面32A的像素值的页。举例来说,每一页可能够存储4096个字节,且图4中的每一行表示2048个字节的像素值(即,512个像素值*每像素值4个字节)。因此,可在一页中存储两条线的像素值(即,2048*2等于4096)。因此,在图4中,前两行中的数字值0意味着表面32A的前两条线中的4096个字节的像素值存储在页0中,接下来两行中的数字值1意味着表面32A的第二两条线中的4096个字节的像素值存储在页1中,等等。最后两行中的数字值7意味着表面32A的最后两行中的4096个字节的像素值存储在页7中。
如图4中说明,表面32A的左半部以白色背景呈现,且表面32A的右半部以灰色背景呈现。不同颜色的背景说明存储器单元26A和26N中的哪一者用以存储表面32A。举例来说,表面32A的左半部中(即,白色背景中)的像素值经由MC 22A存储在系统存储器24中的存储器单元26A中,且表面32A的右半部中(即,灰色背景中)的像素值经由MC 22N存储在系统存储器24中的存储器单元26N中。下文描述在图4中情况为何是这样。
类似于以上实例,重申交错粒度为1024个字节,且表面32A的每一条线包含2048个字节。因此,在此实例中,GPU驱动器18可传输致使GPU 14进行以下操作的指令,存储像素值以使得由于存储器单元26A与存储器单元26N之间以1024个字节的交错粒度的交错,MIF 20首先经由存储器单元26A和MC 22A将1024个字节的像素值存储在页0中,随后经由存储器单元26N和MC 22N将接下来1024个字节的像素值存储在页0中。而且,因为每一像素值为4个字节,所以1024个字节等于256个像素值(即,1024除以4等于256)。因此,如果考虑图4中的表面32A的第一线,那么MIF 20将经由存储器单元26A和MC 22A将第一1024个字节的像素值(将用于表面32A的第一线中的第一256个像素值)存储在页0中。随后,由于存储器单元26A与存储器单元26N之间以1024个字节的交错粒度的交错,MIF 20将经由存储器单元26N和MC22N将第二1024个字节(用于表面32A的第一线中的接下来256个像素值)存储在页0中。
因为256个像素值是512个像素值的一半,所以表面32A的第一线的第一半部中的像素值将经由存储器单元26A和MC 22A存储在系统存储器24中(因此为白色背景),且表面32A的第一线的第二半部中的像素将经由存储器单元26N和MC 22N存储在系统存储器24中(因此为灰色背景)。相同结果将针对表面32A的像素值的第二线发生,且随后页0将为满的。接着,如图4中说明,表面32A的第三条线的像素值将存储在页1中。出于上文相对于第一条线描述的相同原因,表面32A的第三条线的第一半部的像素值将经由存储器单元26A和MC22A存储在页1中(因此为白色背景),且表面32A的第三条线的第二半部将经由存储器单元26N和MC 22N存储在页1中(因此为灰色背景)。
此外,如上文描述,表面32A的大小可与装置10的显示器的大小相同。因此,表面32A的左半部对应于装置10的显示器的左半部上的像素,且表面32A的右半部对应于装置10的显示器的右半部上的像素。
如上文描述,GPU 14在称为光栅化的过程中再现存储于系统存储器24中的像素值。举例来说,GPU 14将装置10的显示器划分为若干显示瓦片,且再现一个显示瓦片内的像素的像素值,随后是下一个显示瓦片等等,以在装置10的显示器上再现最终图像。为了说明的目的,假定显示瓦片为16x16像素。因此,在图4中,一个显示瓦片对应于表面32A的一列。举例来说,如上所述,每一列为16个像素值宽,且每一列的高度为16个像素值。因此,表面32A的每一列表示装置10的显示器的16x16像素。因为显示瓦片为16x16像素,所以表面32A的每一列表示一个显示瓦片的像素值。
当GPU 14请求MIF 20从系统存储器24检索一个显示瓦片(例如,图4中的表面32A的一列)的像素值时,MIF 20将仅经由MC 22A从存储器单元26A或经由MC 22N从存储器单元26N但并非两者检索此显示瓦片。举例来说,当GPU 14检索第一显示瓦片(例如,图4中的第一列)的像素值时,MIF 20将经由MC 22A从存储器单元26A而非经由MC 22N从存储器单元26N检索像素值,因为表面32A的第一列的所有像素值是经由MC 22A存储在系统存储器24的存储器单元26A中(例如,如所说明,表面32A的第一列具有白色背景)。类似地,当GPU 14检索最后显示瓦片(例如,图4中的最后列)的像素值时,MIF 20将经由MC 22N从存储器单元26N而非经由MC 22A从存储器单元26A检索像素值,因为图4中的最后列的像素值是经由MC22N存储在系统存储器24的存储器单元26N中(例如,如所说明,表面32A的最后列具有灰色背景)。
此检索可为对系统存储器24的低效使用。举例来说,在图4的实例中,GPU 14将不能从存储器单元26A和存储器单元26N并行地接收显示瓦片的像素值,因为MIF20可仅从存储器单元26A或存储器单元26N而非两者检索每一显示瓦片的像素值。这导致限制了GPU 14可在显示器上再现像素的速率,因为其限制了MIF 20可检索显示瓦片的像素的速率。
虽然先前实例描述其中像素值为用以再现表面的颜色值的实例,但本发明的方面不受此限制。在其它实例中,本发明的技术可扩展到其中GPU 14从存储器单元26A和存储器单元26N读取纹理值的实例。
图5是说明当表面以线性方式存储时显示瓦片在系统存储器中的存储的图形图。举例来说,图5从显示器的角度说明图4的结果。举例来说,图5说明当表面32B以线性方式存储时哪一存储器通道用以存储显示瓦片中的两者的像素值。
如图5中说明,显示器的左半部中的显示瓦片的所有像素值经由通道0存储在系统存储器24的页0到7中,且显示器的右半部中的显示瓦片的所有像素值经由通道1存储在系统存储器24的页0到7中。在此实例中,通道0涉及经由MC 22A将像素值存储在存储器单元26A中,且通道1涉及经由MC 22N将像素值存储在存储器单元26N中。
举例来说,如上文相对于图4描述,左半部中的显示瓦片的所有像素值可经由MC22A存储在存储器单元26A的页0到7中。图5通过针对左半部中的显示瓦片指示所述显示瓦片的像素值经由MC 22A存储在存储器单元26A的页0到7中(即,通道0)来说明此情况。而且,如上文相对于图4描述,右半部中的显示瓦片的所有像素值可经由MC 22N存储在存储器单元26N的页0到7中。图5通过针对右半部中的显示瓦片指示所述显示瓦片的像素值经由MC22N存储在存储器单元26N的页0到7中(即,通道1)来说明此情况。
而且,如上文相对于图4描述,一个显示瓦片可为16个像素宽,其在图5中以延伸经扩展显示瓦片的宽度的值16说明。图5中说明的值2指示一页可存储显示瓦片的两行。举例来说,如上文相对于图4描述,表面32A的第一两行可存储在页0中,其由图5中的值2指示。
此外,虽然图4和5说明其中表面以线性方式存储在系统存储器24中的实例,但当表面以瓦片方式存储在系统存储器24中时类似的结果可发生。图6和7更详细说明此情况。
图6是说明以瓦片方式在系统存储器中存储表面的图形图。举例来说,如上文相对于图3B描述,MIF 20可在系统存储器24中以瓦片方式存储由GPU 14产生的表面32B的像素值。图6说明表面32B的像素值在系统存储器24中的存储的结果。在图6中,假定装置10的显示器的宽度为128个像素且高度为16个像素。因此,表面32B的宽度(w)为128个像素值,且表面32B的高度(h)为16个像素值,因为表面32B的大小可与装置10的显示器的大小相同。如同图4,图6中的每一列表示16个像素值。因此,存在8个列,其各自呈现16个像素值,得到128个像素值的总宽度(即,16*8等于128)。
而且,在图6的实例中,假定每一像素值涵盖4个字节的数据。图6中的数字值0和1指示系统存储器24中存储表面32B的像素值的页。举例来说,每一页可能够存储4096个字节,且图6中的每一行表示512个字节的像素值(即,128个像素值*每像素值4个字节)。因此,可在一页中存储八行的像素值(即,512*8等于4096)。因此,在图6中,第一八行中的数字值0意味着表面32B的第一八行中的4096个字节的像素值存储在页0中,接下来八行中的数字值1意味着表面32B的接下来八行中的4096个字节的像素值存储在页1中。
举例来说,对于存储,假定表面32B的每一表面瓦片为4x4表面瓦片。图6说明经扩展以说明四个4x4表面瓦片(例如,瓦片T1、T2、T3和T4)的第一四行和第一列。举例来说,因为每一列为16个像素值宽,所以表面32B的一列表示各自为4个像素值宽的四个瓦片T1、T2、T3和T4的宽度。而且,因为每一行为一个像素值的长度,所以表面32B的四行表示一个瓦片(例如,T1、T2、T3和T4中的一者)的长度。
在图6的实例中,如果表面瓦片为4x4像素值,且每一像素值为4个字节,那么每一表面瓦片包含64个字节(即,每像素值4*4*4个字节等于64个字节)。因此,在图6中,表面32B中的四行和一列包含256个字节(每瓦片64个字节*针对每四行和一列的4个瓦片等于256个字节)。此外,在表面32B中的四行和四列则包含1024个字节(例如,针对四行和列的256个字节*4列等于1024个字节)。在图6的实例中,表面32B的四行和四列表示64x4像素值,其包含1024个字节(即,每像素值64*4*4个字节等于1024个字节)。
因此,当以瓦片方式存储表面32B时,MIF 20可经由MC 22A将第一64x4像素值(例如,图5中包含行1到4和列1到4的块)存储在存储器单元26A中的页0中,随后经由MC 22N将接下来64x4像素值(例如,图6中包含行1到4和列5到8的块)存储在存储器单元26N中的页0中。情况将是这样的原因在于64x4像素值为1024个字节,且交错粒度为1024个字节。
如所说明,第一64x4像素值包含数字值0以指示这些像素值存储在页0中,且具有白色背景以指示这些像素值经由MC 22A存储在存储器单元26A中。而且,接下来64x4像素值(例如,包含行1到4和列5到8的块)包含数字值0以指示这些像素值存储在页0中,且具有灰色背景以指示这些像素值经由MC 22N存储在存储器单元26N中。因此,表面32B的包含四行和八列的块包含2048个字节。举例来说,表面32B的四行和八列表示128x4像素值,每像素值128*4*4个字节等于2048个字节。
出于与上文所述类似的原因,MIF 20可将由GPU 14产生的接下来64x4像素值(例如,包含行5到8和列1到4的块)经由MC 22A存储在存储器单元26A中的页0中,且将在其之后的64x4像素值(例如,包含行5到8和列5到8的块)经由MC 22N存储在存储器单元26N中的页0中,如相应的白色和灰色背景指示。在此实例中,在MIF20存储包含行1到8和列1到8的块之后,页0可为满的,因为页0可存储总共4096个字节。
随后,MIF 20可将由GPU 14产生的表面32B的包含行9到16和列1到8的块经由MC22A和MC 22N存储在存储器单元26A和存储器单元26N的页1中,如以白色和灰色背景指示。举例来说,由于1024个字节的交错粒度,MIF 20可将由GPU 14产生的包含行9到12和列1到4的块中的表面32B的像素值经由MC 22A存储在存储器单元26A的页1中,且将包含行9到12和列5到8的块中的表面32B的像素值经由MC 22N存储在存储器单元26N的页1中。相同情况适用于包含行13到16和列1到4的块以及包含行13到16和列5到8的块中的表面32B的像素值。
当GPU 14随后检索像素值时,出于与上文相对于图4描述相似的原因,相对于图6描述的瓦片存储方案可为低效的。举例来说,对于光栅化,GPU 14可将装置10的显示器划分为16x16像素的显示瓦片。类似于图4,在图6中,一个完整列对应于一个显示瓦片。在图6中,当GPU 14检索第一显示瓦片的像素值时,MIF 20可经由MC 22A从存储器单元26A而非经由MC 22N从存储器单元26N检索第一显示瓦片(例如,图6中的第一列)像素值,因为表面32B的第一列的所有像素值是经由MC 22A存储在系统存储器24的存储器单元26A中。类似地,当GPU 14检索最后显示瓦片(例如,图6中的最后列)的像素值时,MIF 20可经由MC 22N从存储器单元26N而非经由MC 22A从存储器单元26A检索像素值,因为图6中的最后列的像素值是经由MC 22N存储在系统存储器24的存储器单元26N中。
类似于图4,在图6的实例中,GPU 14将不能从存储器单元26A和存储器单元26N并行地接收显示瓦片的像素值,因为MIF 20可能够仅从存储器单元26A或存储器单元26N而非两者检索每一显示瓦片的像素值。这导致限制了GPU 14可在显示器上再现像素的速率。
图7是说明当表面以瓦片方式存储时显示瓦片在系统存储器中的存储的图形图。举例来说,图7从显示器的角度说明图6的结果。举例来说,图7说明当表面32B以瓦片方式存储时哪一存储器通道用以存储显示瓦片中的两者的像素值。
如图7中说明,类似于图5,显示器的左半部中的显示瓦片的所有像素值经由通道0存储在系统存储器24的页0和1中,且显示器的右半部中的显示瓦片的所有像素值经由通道1存储在系统存储器24的页0和1中。类似于图5,在此实例中,通道0涉及经由MC 22A将像素值存储在存储器单元26A中,且通道1涉及经由MC 22N将像素值存储在存储器单元26N中。
举例来说,如上文相对于图6描述,左半部中的显示瓦片的所有像素值可经由MC22A存储在存储器单元26A的页0和1中。图7通过针对左半部中的显示瓦片指示所述显示瓦片的像素值经由MC 22A存储在存储器单元26A的页0和1中(即,通道0)来说明此情况。而且,如上文相对于图6描述,右半部中的显示瓦片的所有像素值可经由MC 22N存储在存储器单元26N的页0和1中。图7通过针对右半部中的显示瓦片指示所述显示瓦片的像素值经由MC22N存储在存储器单元26N的页0和1中(即,通道1)来说明此情况。
而且,如上文相对于图6描述,一个显示瓦片可为16个像素宽,其在图7中以延伸经扩展显示瓦片的宽度的值16说明。图7中说明的值8指示一页可存储显示瓦片的八行。举例来说,如上文相对于图6描述,表面32A的八行可存储在页0中,其由图7中的值8指示。
图4到7说明其中MIF 20在检索用于GPU 14的光栅化的像素值时可能未有效利用到系统存储器24的通道的实例。举例来说,在相对于图4到7描述的实例中,当检索一个显示瓦片的像素值时可存在存储器单元26A与存储器单元26N之间的不良通道负载平衡,因为MIF 20可从存储器单元26A或存储器单元26N但不是两者检索一个显示瓦片的像素值。此不良通道负载平衡可导致低存储器利用(例如,MIF 20不能在同时从存储器单元26A和存储器单元26N两者检索显示瓦片的像素值)。
下文概述其中MIF 20可能低效地利用系统存储器24的几个实例性状况:显示器分辨率为512像素宽,每一像素存储为32位数据(例如,4个字节),用于再现的显示瓦片为16x16像素,页大小为4096个字节,存在两个存储器通道(例如,MC 22A和MC 22N),交错粒度为1024个字节,以及表面以线性方式存储在存储器26中。作为其中MIF 20可能低效地利用系统存储器24的另一实例,状况可能是:显示器分辨率为128像素宽,每一像素存储为32位数据(例如,4个字节),用于再现的显示瓦片为16x16像素,页大小为4096个字节,存在两个存储器通道(例如,MC 22A和MC22N),交错粒度为1024个字节,以及表面以瓦片方式存储在存储器26中,其中每一瓦片为4x4像素。
如上文描述,将MIF 20描述为经由MC 22A和MC 22N存取系统存储器24。在其它实例中,IC 12可包含两个以上存储器控制器。甚至在其中IC 12包含两个以上存储器控制器的实例中,也可存在当MIF 20随后检索用于再现的像素值时线性或瓦片存储方案可导致对系统存储器24的低效利用的情况。举例来说,如果显示器分辨率是512像素宽,每一像素存储为32位数据,显示瓦片为16x16,页大小为4096个字节,存在四个存储器通道,交错粒度为1024个字节,且表面以线性方式存储在系统存储器24中,那么MIF 20在检索作为由GPU 14执行的光栅化的部分用于再现的像素值时可能低效地利用系统存储器24。作为另一实例,如果显示器分辨率是128像素宽,每一像素存储为32位数据,显示瓦片为16x16,页大小为4096个字节,存在四个存储器通道,交错粒度为1024个字节,且表面以瓦片方式存储在系统存储器24中,其中每一瓦片为4x4像素,那么MIF 20在检索作为由GPU 14执行的光栅化的部分用于再现的像素值时可能低效地利用系统存储器24。
本发明中描述的实例性技术可修改系统存储器24中MIF 20存储由GPU 14产生的像素值的位置,使得当GPU 14随后接收用于再现的像素值时,MIF 20以较有效方式存取系统存储器24。举例来说,本发明中描述的技术可将位填补到系统存储器24的页中。填补位可意味着在一或多个页内保留无法用以存储像素值的某一数目的位。又为了说明的目的,为了简单而在填补字节的上下文中描述所述技术。举例来说,并非使用页的全部4096个字节来存储像素值,GPU 14可利用其中MIF 20可存储像素值的页的4096个字节的子集,且剩余字节可称为填补字节。
以此方式,GPU 14可利用系统存储器24内存储表面的像素值的更多页。然而,通过字节填补,GPU 14可能够在同时(例如,并行地)从系统存储器24的存储器单元26A和存储器单元26N两者接收像素值以再现显示瓦片。举例来说,通过字节填补,MIF 20可能够在同时从存储器单元26A和存储器单元26N两者检索显示瓦片的像素值,其允许GPU 14在同时从存储器单元26A和存储器单元26N两者接收像素值。此外,系统存储器24可提供大量存储器用于存储。因此,根据本发明中描述的实例性技术,系统存储器24的页的额外使用不会不利地影响装置10的功能性。
返回到图1,对于字节填补,GPU驱动器18可传输致使GPU 14进行以下操作的指令:存储表面(例如,将在装置10的显示器上显示的图像或图形内容)的若干部分的像素值以使得使用交错粒度来存储像素值,如上文描述。举例来说,为了以线性方式存储表面,GPU 14将把表面32A(图3A)的一行的1024个字节以及此数据将存储于的虚拟地址传输到MIF 20。MIF 20可随后将表面32A(图3A)的所述行的1024个字节经由MC 22A存储在系统存储器24的存储器单元26A的页0中。GPU 14还可将表面32A(图3A)的所述行的接下来1024个字节以及此数据将存储于的虚拟地址传输到MIF20。MIF 20可随后将表面32A的所述行的1024个字节经由存储器单元22N存储在系统存储器24的存储器单元26N的页0中。然而接着,并非移动到表面32A的下一行,GPU驱动器18可在页0中保留某一数目的字节用于填补。这些填补字节可能不可用以存储表面32A内的任何像素的像素值。图形驱动器18可随后指示GPU 14将像素值存储在页0的其余部分中。
举例来说,图形驱动器18可将虚拟地址传输到GPU 14,其向GPU 14指示数据将存储于何处。然而,这些虚拟地址不可映射到所保留填补字节的物理地址。以此方式,当MIF20存储从GPU 14接收的数据时,MIF 20可绕过填补字节,且在系统存储器24中将像素值存储于除了填补字节位于系统存储器24中的位置之外的位置。
图8是说明具有字节填补的以线性方式在系统存储器中存储表面的图形图。在图8中说明的实例中,GPU 14可存储表面32A的像素值(图4);然而,GPU驱动器18可在系统存储器24的页中填补字节。图8使用与图4和6中相同的背景颜色和页编号方案。举例来说,图8中的数字值指示系统存储器24的哪一页用以存储表面32A的像素值。而且,在图8中,白色背景指示MIF 20将由GPU 14产生的像素值经由MC 22A存储在存储器单元26A中的页中,且灰色背景指示MIF 20将由GPU 14产生的像素值经由MC 22N存储在存储器单元26N中的页中。
GPU驱动器18可传输致使GPU 14存储表面32A的第一256个像素值的指令,因为256个像素值可包含1024个字节(即,256个像素值*每像素值4个字节等于1024个字节),且1024个字节可为交错粒度。GPU驱动器18还可传输GPU 14将把像素值存储于何处的虚拟地址。GPU 14可随后将像素值和虚拟地址传输到MIF 20。MIF 20可随后经由MC 22A将像素值存储在系统存储器24的存储器单元26A的页0中。
因为交错粒度为1024个字节,所以GPU驱动器18可传输致使GPU 14存储表面32A的接下来256个像素值的指令,且传输GPU 14将把表面32A的接下来256个像素值存储于何处的虚拟地址。MIF 20可随后经由MC 22N将这些256个像素值存储在系统存储器24的存储器单元26N的页0中。又,256个像素值包含1024个字节,其为交错粒度。在此实例中,页0将现在存储表面32A的第一行的像素值,且将已通过存储表面32A的第一行的像素值而使用总共2048个字节。
在图8中说明的实例中,GPU驱动器18可在页0中保留接下来128个字节作为填补字节。举例来说,GPU驱动器18可以GPU驱动器18应当保留的填补字节的数目来配置,其在此实例中将为128个字节。应了解,所述128个填补字节不是表面32A的部分,而是页0中不用以存储表面32A的像素值的保留字节。
大体上,填补字节的实际数字值是什么可为不重要的,因为填补字节不用以存储任何实际像素值。举例来说,GPU驱动器18可致使MIF 20为所述128个填补字节指派数字一或数字零的全部值。替代地,GPU驱动器18可通过不为所述128个填补字节指派任何数字值而允许所述128个填补字节浮动(例如,允许所述128个填补字节浮动到数字一或数字零)。
在图8中,所述128个填补字节在最后两列中说明,且以参考编号37标记,以帮助理解。举例来说,列的宽度是16个像素值,且存在每像素值4个字节;因此,列的以字节计的宽度为64个字节(即,16个像素值*每像素值4个字节等于64个字节)。因此,两列的宽度为128个字节(即,64字节*2等于128个字节)。然而重申,图8中的最后两列不是表面32A的部分。而是,表面32A包含所有行和列,除了最后两列中的字节,其为填补字节。
虽然填补字节的实际值可为不重要的,但GPU驱动器18可跟踪页内的哪些字节保留为填补字节,使得GPU驱动器18可指示GPU 14在再现期间不从填补字节接收值。举例来说,在图8中说明的实例中,GPU驱动器18可在第一2048个字节之后保留128个字节(例如,字节2049到2176)作为填补字节。在此实例中,在再现期间,GPU驱动器18可致使GPU 14接收页0中的第一2048个字节,随后致使GPU 14接收页0中在接下来128个字节之后的字节,所述128个字节为填补字节且因此不表示任何实际像素值。以此方式,GPU驱动器18可传输致使GPU 14指示MIF 20将像素值存储在页的除了填补位之外的位中的指令。经保留填补位可经具体保留,使得GPU 14不会致使MIF 20在页的这些填补位中存储像素值,而是致使MIF 20在除了填补位之外的位中存储像素值。
举例来说,如上所述,GPU驱动器18可将像素值将存储于何处的虚拟地址传输到GPU 14。在一些实例中,GPU驱动器18可将未映射到填补字节的物理地址的虚拟地址传输到GPU 14。以此方式,当GPU 14将虚拟地址传输到MIF 20用于存储时,MIF20避免在填补字节中存储像素值。作为另一实例,GPU驱动器18可向MIF 20指示系统存储器24的哪些字节保留为填补字节。在此实例中,当MIF 20将从GPU 14接收的虚拟地址映射到物理地址时,MIF 20可避免将虚拟地址映射到填补字节位于系统存储器24中的物理地址。可存在GPU驱动器18可确保像素值不存储在填补字节中的其它方式,且本发明的方面不限于GPU驱动器18可确保像素值不存储在填补字节中的任何特定方式。
在GPU驱动器18保留128个填补字节的情况下,所述128个填补字节导致页0的2176个字节被用掉(即,2048加128等于2176),意味着在页0中剩余1920个字节(即,4096减2176等于1920)。GPU驱动器18可随后指示GPU 14存储来自表面32A的第二行的字节,其导致MIF20将来自表面32A的第二行的字节存储到页0的剩余字节中(例如,除了填补字节之外的字节)。举例来说,页0将具有足够的存储空间来存储480个像素的像素值(即,480个像素*每像素4个字节等于1920个字节)。因此,表面32A的第二行中的最后32个像素值存储在页1中,而不是如图4中说明的实例中的情况那样存储在页0中。
在本发明中描述的方面中,所述128个填补字节朝向1024字节交错粒度计数。举例来说,GPU驱动器18将指示GPU 14存储1024个字节,使得MIF 20经由MC 22A将1024个字节存储在存储器单元26A的页0中。由于1024字节交错粒度,GPU驱动器18将还指示GPU 14存储接下来1024个字节,使得MIF 20经由MC 22N将所述1024个字节存储在存储器单元26N的页0中。在此之后,将计数128个填补字节作为MIF 20原本已经由MC 22A存储在存储器单元26A的页0中的接下来1024个字节的部分。举例来说,虽然MIF 20不会在128个填补字节中明确地存储任何值,但假定如果GPU 14请求在保留的128个填补字节中存储值,那么MIF 20可能已经由MC 22A在存储器单元26A中的页0的128个填补字节中存储值。因此,在图8中,以白色背景说明处于第一行的末尾的128个填补字节。
而且,因为128个填补字节朝向1024交错粒度计数,所以GPU 14将随后存储表面32A的像素值的896个字节,使得MIF 20将表面32A的像素值的896个字节经由MC 22A存储在存储器单元26A的页0中(即,896字节加128字节等于1024字节)。在接收到来自GPU 14的指令后,MIF 20将把表面32A的像素值的接下来1024个字节经由MC 22N存储在存储器单元22N的页0中,且页0将为满的。GPU驱动器18将随后指示GPU 14重复以上步骤,使得MIF 20分别经由MC 22A和MC 22N将字节存储在系统存储器24的存储器单元26A和26N的页1中。GPU驱动器18还可以图6中说明的方式在页1中填补字节。
举例来说,在页0为满的之后,在表面32A的第二行中仍存在需要存储的32个像素值(即,在不将经参考为128个填补字节的最后两列计数的情况下表面32A的最后两列)。GPU14可存储所述32个像素值,其包含128个字节(即,32个像素值*每像素值4个字节等于128个字节),使得MIF 20经由MC 22A将所述32个像素值存储在存储器单元26A的页1中。在此实例中,GPU驱动器18保留页1的接下来128个字节作为填补字节。因此,页1的256个字节被用掉,且因为128个填补字节朝向交错粒度计数,所以假定MIF 20经由MC 22A在存储器单元26A中存储256个字节。
在此实例中,GPU 14可能够存储再768个字节,使得MIF 20经由MC 22A将所述再768个字节存储在存储器单元26A的页1中,因为768字节加256字节等于作为交错粒度的1024字节。在图8中说明的实例中,768个字节表示192个像素值(即,768个字节除以每像素值4个字节等于192)。而且,在图8中说明的实例中,列的宽度是16个像素值。因此,12列等于192个像素值(即,192个像素值除以16个像素值等于12)。因此,如图8中说明,第三行的第一12列具有白色背景以指示这些像素值经由MC 22A存储在存储器单元26A的页1中。
一旦GPU 14指示MIF 20存储192个像素值,MIF 20便达到1024个字节的交错粒度。GPU驱动器18随后致使GPU 14存储接下来1024个字节,使得MIF 20经由MC 22N将接下来1024个字节存储在存储器单元26N的页1中。这在图8中以第三行中的接下来16列中的灰色背景说明。在图8中,所述16列共同包含1024个字节(即,16列*每列16个像素值*每像素值4个字节等于1024个字节)。随后,MIF 20达到交错粒度,且GPU驱动器18致使GPU 14存储像素值以使得MIF 20经由MC 22A将像素值存储在存储器单元26A的页1中(例如,从经由MC 22N在系统存储器24的存储器单元26N中存储切换到经由MC 22A在系统存储器24的存储器单元26A中存储)。这些步骤将重复直到GPU 14存储表面32A的所有像素值,使得MIF 20通过每1024个字节交错存储器单元26A和存储器单元26N中的存储而将表面32A的所有像素值存储在系统存储器24的页中。
在存储像素值的结束处,GPU驱动器18完成指示GPU 14存储整个表面32A的像素值。又,表面32A的大小可与装置10的显示器的大小相同。因此,在存储像素值的结束处,GPU14可能已存储装置10的显示器上的所有像素的像素值,且可准备好检索像素值以用于在显示器上再现像素,作为光栅化的部分。
应注意,由于字节填补,如图8的实例中说明的存储表面32A的像素值所需的页的数目为9(即,页0到8)。在无字节填补的情况下(例如,图4的实例),如图4中说明的存储表面32A的像素值所需的页的数目为8(例如,页0到7)。因此,字节填补可利用系统存储器24中的额外存储空间。
然而,通过字节填补,当GPU 14从系统存储器24接收像素值以用于再现显示瓦片时,MIF 20可能够在同时经由MC 22A从存储器单元26A且经由MC 22N从存储器单元26N存取用于所述显示瓦片的像素值。举例来说,类似于图4,图8中的每一列对应于一显示瓦片(例如,16x16像素的显示瓦片)。由于字节填补,显示瓦片内的像素的像素值是从存储器单元26A和存储器单元26N相等地检索。换句话说,在从存储器单元26A和存储器单元26N检索像素值之间存在通道负载平衡。举例来说,GPU 14可通过MIF 20从存储器单元26A检索像素值而接收显示瓦片的像素值的50%,且通过MIF 20从存储器单元26N检索像素值而接收显示瓦片的像素值的50%。
举例来说,在图8中说明的实例中,每一列包含具有白色背景和灰色背景的相等部分。举例来说,假定图8中的第一列中的16x16像素值是第一显示瓦片的像素值。在此实例中,GPU 14可致使MIF 20经由MC 22A从存储器单元26A中的页0到3检索第一显示瓦片的像素值(例如,第一列的具有白色背景的部分),且在同时,致使MIF20经由MC 22N从存储器单元26N中的页4到7检索第一显示瓦片的像素值(例如,第一列的具有灰色背景的部分)。
以此方式,当检索显示瓦片的像素值时利用且潜在地同时利用由MC 22A和MC22N提供的到系统存储器24的通道中的每一者。然而,在图4中说明的实例中,MIF20可能已限于仅经由MC 22A从存储器单元26A检索第一显示瓦片的像素值,同时经由MC 22N对存储器单元26N的存取保持空闲。换句话说,在图4的实例中,在由MC 22A与MC 22N提供的通道之间存在不良通道负载平衡。在图8的实例中,在由MC 22A与MC 22N提供的通道之间存在改善的通道负载平衡。
出于上文描述的原因,GPU 14可能够致使MIF 20在同时使用存储器单元26A和存储器单元26N两者检索显示瓦片的像素值,而不是如图4中说明的实例中的情况仅从存储器单元26A或存储器单元26N中的一者来检索。这可允许GPU 14以与不存在字节填补的实例(例如,图4中说明的实例)相比两倍的速率来接收显示瓦片的像素值。GPU 14以两倍的速率接收显示瓦片的像素值的能力可允许GPU 14以与不存在字节填补的实例相比两倍的速率再现装置10的显示器的所述显示瓦片上的像素。
举例来说,视频游戏可要求GPU 14以每秒30个表面的刷新率在显示器上再现像素。通过以两倍的速率在装置10的显示器上再现像素,GPU 14可能够以每秒60个表面的刷新率在显示器上再现像素,其可为用户提供较丰富的游戏体验。以此方式,本发明中描述的技术可视为牺牲系统存储器24中的有限量的存储空间来得到相当显著地增加再现速率的可能性。
虽然图8的实例中说明128个填补字节,但本发明的方面不受此限制。在一些实例中,填补字节的数目可为2n的任一因数,其中n是任一整数值。举例来说,GPU驱动器18可经配置以保留2、4、8、16、64、128、256、512、1024等等数目的填补字节。对于大于或等于128字节的填补字节,在从存储器单元26A和存储器单元26N检索像素值之间的负载分配可针对显示瓦片中的每一者为50%。在一些实例中,填补字节的数目可为任一整数值,且不一定限于2n的任一因数。
对于小于128字节的填补字节,负载分配可针对所有显示瓦片总体小于50%。甚至在负载分配小于50%的情况下,负载分配也仍可好于图4的实例中的分配(例如,其中针对给定显示瓦片,检索像素值的负载全部落在存储器单元26A或存储器单元26N上)。举例来说,对于小于128字节的填补字节,从一些显示瓦片,GPU 14可从MIF20接收来自存储器单元26A的像素值的少于50%和来自存储器单元26N的像素值的大于50%,或反之亦然。然而,在图4的实例中,对于每个单一显示瓦片,MIF 20可仅从存储器单元26A或存储器单元26N中的一者检索像素值。因为128个填补字节可为在存储器单元26A与存储器单元26N之间实现50%负载分配可需要的填补字节的最小数目,所以GPU驱动器18可经配置以当表面以线性方式存储(例如表面32A)时在页中的每一者中保留128个填补字节。
图9到11是说明具有字节填补的以线性方式在系统存储器中存储表面的额外图形图。图9说明填补字节的数目为256的实例,如参考编号37指示,图10说明填补字节的数目为512的实例,如参考编号37指示,且图11说明填补字节的数目为1024的实例,如参考编号37指示。
类似于图4和8,在图9到11中,白色背景指示经由MC 22A在存储器单元26A中的存储,且灰色背景指示经由MC 22N在存储器单元26N中的存储。如图9到11中说明,每一显示瓦片(即,图9到11中的一个列)的像素值相等地存储在存储器单元26A和存储器单元26N中。类似于图8,在图9到11中,GPU 14可能够并行地经由MC 22A从存储器单元26A且经由MC 22N从存储器单元26N检索显示瓦片的像素值。
此外,虽然相对于图8的实例是在表面以线性方式存储在系统存储器24中的上下文中描述,但本发明的方面不受此限制。本发明的技术可在表面以瓦片方式存储在系统存储器24中的实例中以类似方式起作用。
图12是说明具有字节填补的以瓦片方式在系统存储器中存储表面的图形图。在图12中说明的实例中,GPU 14可存储表面32B的像素值(图6);然而,GPU驱动器18可在系统存储器24的页中填补字节。图12使用与图4、6和8到11中相同的背景颜色和页编号方案。
在图12中说明的实例中,GPU驱动器18可在页0中保留256个字节作为填补字节,如第四行中说明。再次应了解,所述256个填补字节不是表面32B的部分,而是页中不用以存储表面32B的像素值的保留字节。在图12中,所述256个填补字节以参考编号37在最后四列中说明,以帮助理解。举例来说,列的宽度是16个像素值,且存在每像素值4个字节;因此,列的以字节计的宽度为64个字节(即,16个像素值*每像素值4个字节等于64个字节)。因此,四列的宽度为256个字节(即,64字节*4等于256个字节)。
如所说明,GPU驱动器18可指示GPU 14存储表面32B的2048个字节。MIF 20可使用具有1024字节的交错粒度的交错存储技术将2048个字节分别通过MC 22A和22N经由存储器单元26A和26N存储在系统存储器24的页0中。在图12中,GPU驱动器18可保留页0的接下来256个字节作为填补字节(例如,GPU驱动器18可经配置以将填补字节的数目设定为256个填补字节)。举例来说,第四行中的最后四列表示GPU驱动器18在页0中保留的256个字节。而且,白色背景指示这些填补字节经计数为好像MIF 20经由MC 22A在存储器单元26A中存储这些字节,但MIF 20可能实际上未存储这些填补字节。
在图12中,并非所有行都说明为具有填补字节。这是因为以瓦片方式的像素值存储。举例来说,假定表面32B的每一表面瓦片为4x4像素值。因此,每一表面瓦片涵盖装置10的显示器中的四行和四列。举例来说,类似于图6,在图12中,四行和一列表示四个瓦片。因此,图12中的行1到4和列1到4表示16个表面瓦片,总共1024个字节。举例来说,每四行和一列四个瓦片乘以四列等于16个表面瓦片。存在每表面瓦片64个字节(例如,每瓦片16个像素*每像素4字节等于64),且16个表面瓦片乘以每表面瓦片64个字节等于1024个字节。
在此情况下,在GPU 14存储图12中的行1到4和列1到4的像素值之后,MIF20可能已用掉页0的1024个字节。GPU 14可随后存储接下来1024个字节(例如,行5到8和列1到4),使得MIF 20经由存储器单元26N将接下来1024个字节存储在页0中,以用掉页0的2048个字节。在此实例中,GPU驱动器18可保留页0的接下来256个字节,其为图12中的第四行的末尾包含256个填补字节的原因。
GPU驱动器18可指示GPU 14随后将剩余像素值存储在系统存储器24的页中,如图12中说明。在此实例中,GPU 14可利用系统存储器24的三页(例如,页0到2)来存储表面32的像素值,而在图6的实例中,GPU 14可能已利用系统存储器24的两页(例如,页0和1)来存储表面32的像素值。
然而,在图12中说明的实例中,当GPU 14接收像素值以用于在光栅化期间再现16x16显示瓦片时,MIF 20可能够在同时使用存储器单元26A和存储器单元26N两者检索显示瓦片中的至少一些的像素值。举例来说,图12中的第一完整列表示一个显示瓦片。如所说明,图12中的整个第一完整列具有白色背景。因此,当检索第一显示瓦片的像素值时,MIF20可仅利用存储器单元26A且不利用存储器单元26N,因为如上所述,白色背景指示存取是仅通过存储器单元26A。
虽然检索第一显示瓦片的像素值无法提供存储器单元26A与存储器单元26N之间的负载平衡,但检索后续显示瓦片的像素值可带来较好的负载平衡。举例来说,第二完整列的75%具有白色背景,且第二完整列的25%具有灰色背景。因此,对于此第二显示瓦片,GPU14可从存储器单元26A接收像素值的75%,且从存储器单元26N接收像素值的25%。对于第三完整列(例如,第三显示瓦片),第三完整列的50%具有白色背景,且第三完整列的50%具有灰色背景。因此,对于此第三显示瓦片,GPU 14可从存储器单元26A接收像素值的50%,且从存储器单元26N接收像素值的50%。在此情况下,MIF 20可在检索第三显示瓦片的像素值用于再现时实现完全负载分配。
以此方式,图12中说明的实例说明通过256字节填补,MIF 20不可针对每个显示瓦片实现到50%的完全负载分配。然而,通过256字节填补,GPU 14可仍在MIF 20检索显示瓦片的像素值时实现与图6中说明的实例相比较好的负载分配,在图6中说明的实例中每个显示瓦片要求MIF 20仅从存储器单元26A或存储器单元26N但不是从两者检索像素值。
此外,GPU驱动器18可不必经配置以在表面以瓦片方式存储的每个实例中保留256个填补字节。举例来说,GPU驱动器18可经配置以保留2n的任一因数(例如,2、4、8、16、64、128、256、512、1024、2048等等)数目的填补字节。在一些实例中,如果GPU驱动器18保留512或更大数目的填补字节,那么GPU 14可在再现期间针对每个显示瓦片从存储器单元26A接收像素值的50%且从存储器单元26N接收像素值的50%。因为512个填补字节可为在存储器单元26A与存储器单元26N之间实现50%负载分配需要的填补字节的最少数目,所以GPU驱动器18可经配置以在表面以瓦片方式存储且表面瓦片的大小为4x4像素值的实例中填补512个字节。
图13和14是说明具有字节填补的以瓦片方式在系统存储器中存储表面的额外图形图。图13说明填补字节的数目为512的实例,如参考编号37指示,且图14说明填补字节的数目为1024的实例,如参考编号37指示。
类似于以上实例,在图13和14中,白色背景指示经由MC 22A在存储器单元26A中的存储,且灰色背景指示经由MC 22N在存储器单元26N中的存储。如图13和14中说明,每一显示瓦片(即,图13和14中的一个列)的像素值相等地存储在存储器单元26A和存储器单元26N中。在图13和14的实例中,GPU 14可能够并行地经由MC 22A从存储器单元26A且经由MC 22N从存储器单元26N接收显示瓦片的像素值,因为MIF 20可能够并行地经由MC 22A从存储器单元26A且经由MC 22N从存储器单元26N检索显示瓦片的像素值。而且,虽然在图12的实例中,GPU 14可不能够针对所有显示瓦片从存储器单元26A和存储器单元26N中的每一者接收相等数目的像素值,但在图13和14的实例中,GPU 14可能够从存储器单元26A和存储器单元26N中的每一者接收相等数目的像素值。
而且,虽然先前实例是在存在两个存储器单元(例如,存储器单元26A和存储器单元26N)的情况下描述,但本发明的方面不受此限制。本发明的技术可扩展到系统存储器24包含两个以上存储器单元的实例。举例来说,系统存储器24中的存储器单元的数目可为大于或等于2的任一整数值。在这些实例中,图1的集成电路(IC)12可包含用于系统存储器24中的存储器单元中的每一者的对应存储器控制器(MC)。
图15是说明以瓦片方式在系统存储器中存储表面的另一图形图。在图15的实例中,系统存储器24可包含四个存储器单元26,且IC 12可包含用于四个存储器单元26中的每一者的MC 22中的对应一者。在图15的实例中,将显示的表面包含256个像素值乘16个像素值,且此表面是以瓦片方式以1024字节的交错粒度存储。如图15中说明,当GPU 14接收像素值以用于再现显示瓦片时在四个存储器单元26之间可不存在负载分配。举例来说,在图15中,白色背景和灰色背景的阴影指示四个存储器单元26中的哪一者用以存储和检索显示瓦片的像素值。在此实例中,MIF 20可能够从四个存储器单元26中的仅一者检索每一显示瓦片,且因此,GPU 14可能够从四个存储器单元26中的仅一者接收每一显示瓦片的像素值。
图16是说明具有字节填补的以瓦片方式在系统存储器中存储表面的另一图形图。举例来说,图16说明当应用于图15中说明的实例时字节填补的结果。举例来说,如果GPU驱动器18在GPU 14经由MIF 20存储4096个字节之后保留1024个填补字节,如图16中说明,那么GPU 14可针对显示瓦片从四个存储器单元26中的每一者接收相等数目的像素值,如也在图16中说明,因为MIF 20可从四个存储器单元26中的每一者检索相等数目的像素值。举例来说,MIF 20可从四个存储器单元26中的第一者检索显示瓦片的像素值的25%,从四个存储器单元26中的第二者检索显示瓦片的像素值的25%,从四个存储器单元26中的第三者检索显示瓦片的像素值的25%,且从四个存储器单元26中的第四者检索显示瓦片的像素值的25%。这在图16中以白色背景和灰色背景的阴影来说明。
举例来说,每一显示瓦片包含25%白色背景、25%的灰色背景的第一阴影、25%的灰色背景的第二阴影,以及25%的灰色背景的第三阴影。灰色的阴影可从1024个填补字节较清楚地可见。举例来说,在1024个填补字节中,具有值1的框为白色,具有值2的框为灰色的第一阴影,具有值3的框为灰色的第二较暗阴影,且具有值4的框为灰色的第三甚至更暗的阴影。
在上文描述的实例中,处理器16执行GPU驱动器18,其致使GPU 14经由MIF20将像素值存储在系统存储器24中。然而,本发明的方面不受此限制。举例来说,一些GPU可经设计以执行某一量的一般处理,且称为通用GPU(GPGPU)。在此些实例中,GPUGPU可执行驱动器,其致使GPGPU经由MIF 20将像素值存储在系统存储器24中。举例来说,在一些实例中,GPU14可为GPGPU。在此些实例中,并非处理器16执行GPU驱动器18,GPU 14可能够执行GPU驱动器18,或包含执行上述GPU驱动器18的功能的硬件、软件或固件。
举例来说,在本发明中描述的一些方面中,例如处理器16等第一处理单元可在系统存储器24中保留填补字节或位。在这些实例中,例如GPU 14等第二不同处理单元可将多个指令传输到MIF 20,其致使MIF 20以上述交错方式存储像素值。在一些替代方面中,可为GPU 14的处理单元可通过执行GPU驱动器18来保留填补字节,且在这些实例中,MIF 20可从同一处理单元(例如,在此实例中的GPU 14)接收致使MIF 20以上述交错方式存储像素值的指令。为了说明的目的且便于描述,从处理器16执行GPU驱动器18的角度来描述所述技术。然而,本发明中描述的技术不应视为如此限制。
大体上,上述实例可描述MIF 20接收指示MIF 20将表面的像素值存储在系统存储器24中的多个指令的技术。响应于指令,MIF 20可至少在经由MC 22A的系统存储器24的存储器单元26A与经由MC 22N的系统存储器24的存储器单元26N之间以交错方式将表面的像素值存储在系统存储器24的除了系统存储器24中的保留填补位之外的位中,使得显示瓦片的第一像素值集合经由MC 22A存储在存储器单元26A内,且同一显示瓦片的第二像素值集合经由MC 22N存储在存储器单元26N内。在一些实例中,MIF 20可以交错方式存储像素值,使得显示瓦片的第一像素值集合必须经由MC 22A存储在存储器单元26A内,且同一显示瓦片的第二像素值集合必须经由MC22N存储在存储器单元26N内。
如上所述,除了接收存储像素值的指令之外,MIF 20还可接收表面的像素值将存储于的虚拟地址。MIF 20的MMU 21可将虚拟地址映射到系统存储器24的除了系统存储器24中的保留填补位之外的位的物理地址。在此实例中,MIF 20可基于由MMU21映射的物理地址来存储像素值。
因为MMU 21不会将虚拟地址映射到对应于保留填补位的物理地址,所以MIF 20可将像素值存储在除了系统存储器24的填补位之外的位中。作为一个实例,处理器16可向MMU21指示填补位的物理地址,且MMU 21可利用此信息来避免将虚拟地址映射到填补位的物理地址。作为另一实例,处理器16传输到GPU 14的虚拟地址可经选择以使得虚拟地址不映射到填补位的物理地址。在此实例中,GPU 14可将虚拟地址传输到MIF 20,且MMU 21可随后将虚拟地址映射到除了填补位之外的位的物理地址。
如上所述,MIF 20可存储像素值以使得显示瓦片的第一像素值集合是或必须存储在存储器单元26A中,且同一显示瓦片的第二像素值集合是或必须存储在存储器单元26N中。此结果在图8和12中说明。
举例来说,参见图8,第一列可表示一个显示瓦片。在第一列中,第一八行以白色背景说明,意味着其像素值存储在存储器单元26A中,且最后八行以灰色背景说明,意味着其像素值存储在存储器单元26N中。第一列的第一八行可视为表面32A的对应于显示瓦片的第一像素集合(例如,16x16显示瓦片的第一8行中的像素)的第一像素值集合,且第一列的最后八行可视为表面32A的对应于显示瓦片的第二像素集合(例如,16x16显示瓦片的第二8行中的像素)的第二像素值集合。因此,在图8中,来自GPU驱动器18的指示GPU 14致使MIF 20以交错方式存储像素值的指令导致MIF 20将表面32A的对应于显示瓦片的第一像素集合的第一像素值集合存储在存储器单元26A内,且将表面32A的对应于显示瓦片的第二像素集合的第二像素值集合存储在存储器单元26N内。
图12说明类似结果。举例来说,类似于图8,第二列可表示一个显示瓦片。在第二列中,表面32B的具有白色背景的第一12行中的像素值可对应于显示瓦片的第一像素集合(例如,16x16显示瓦片的第一12行)。在第二列中,表面32B的具有灰色背景的最后4行中的像素值可对应于显示瓦片的第二像素集合(例如,16x16显示瓦片的最后4行)。因为第二列的第一12行的像素值(例如,第一像素值集合)可经由MC 22A存储在存储器单元26A中,且第二列的最后4行的像素值(例如,第二像素值集合)可经由MC 22N存储在存储器单元26N中,所以来自GPU驱动器18的指示GPU 14致使MIF 20以交错方式存储像素值的指令导致MIF 20将表面32B的对应于显示瓦片的第一像素集合的第一像素值集合存储在存储器单元26A内,且将表面32B的对应于显示瓦片的第二像素集合的第二像素值集合存储在存储器单元26N内。
应了解,虽然图4到16中说明的实例描述其中系统存储器24包含页的技术,但本发明的方面不受此限制。举例来说,甚至在系统存储器24不包含页的实例中,在无字节填补的情况下,表面32A和32B的一半也仍可经由MC 22A存储在存储器单元26A内,且表面32A和32B的另一半仍可经由MC 22N存储在存储器单元26N内。在这些情况下,字节填补可切换像素值存储在系统存储器24中的方式,使得当检索像素值时,GPU 14可能够并行地接收显示瓦片的像素值。
而且,虽然以上实例描述用于像素值的检索的有效存取,但在一些实例中,本发明中描述的技术也可促进用于像素值的存储的有效存取。举例来说,在无字节填补的情况下,GPU 14可致使MIF 20使用由到存储器单元26A的MC 22A和到存储器单元26N的MC 22N两者产生的通道来存储整个表面(例如,表面32A和32B)的像素值。然而,甚至在这些情形中,对于给定显示瓦片,GPU 14可利用MC 22A或MC 22N中的仅一者。
举例来说,对于图4的表面32A中的第一显示瓦片,MIF 20可仅利用MC 22A来将像素值存储在存储器单元26A中。换句话说,虽然对于整个表面32A,MIF 20可相等地利用MC22A和MC 22N,但对于给定显示瓦片,MIF 20可能不会相等地利用MC22A和MC 22N。这可能不允许MIF 20并行地存储显示瓦片的像素值。通过字节填补,MIF 20可能够并行地存储显示瓦片的像素值。举例来说,相对于图8到11、13、14和16,MIF 20可使用MC 22A存储第一显示瓦片的一半,且并行地(例如,大体上同时)使用MC 22N存储第一显示瓦片的另一半。
如相对于图4到16描述,字节填补可改善当检索像素值以用于再现显示瓦片时的通道负载平衡。通道负载平衡可以显示瓦片通道利用率(u)来测量,其如下界定:u=T/(n*b);其中u是通道利用率,T是显示瓦片的像素的总数,n是到系统存储器24的通道的数目,且b是任一通道的像素的最大数目。
举例来说,假定存在到系统存储器24的四个通道(例如,存在IC 12中的四个MC22以及系统存储器24中的四个存储器单元26)。还假定显示瓦片包含8个像素,且MIF 20从存储器单元中的一者检索显示瓦片的全部8个像素,且从其它三个存储器单元检索零个像素。在此实例中,T等于8,n等于4,且b等于8。因此,通道利用率(u)等于0.25(例如,8/(4*8))。如果MIF 20从四个存储器单元26中的每一者检索到相等数目的像素值(例如,从四个存储器单元中的每一者检索到两个像素值),那么通道利用率将等于1,因为在此情况下T将等于8,n将等于4,且将等于2。大体上,接近或等于一的通道利用率值指示系统存储器24内的存储器单元26之间的适当负载平衡。
如上文论述,在图4到14中说明的实例中,显示瓦片为16x16像素,这意味着T等于256,且存储器通道的数目为二,这意味着n等于2。在图4和6中说明的实例中,针对显示瓦片中的每一者,从存储器通道检索的像素的最大数目为256个像素。因此,在图4和6中,针对显示瓦片中的每一者,b等于256个像素值,且针对显示瓦片中的每一者,在图4和6中说明的实例中的通道利用率(u)为0.5(例如,256/(2*256)等于0.5)。而且,图4说明32个显示瓦片(例如,32个完整列),其各自具有0.5的通道利用率,且图6说明8个显示瓦片,其各自具有0.5的通道利用率。因此,图4和6中说明的显示瓦片的平均通道利用率为0.5。
然而,在图8中说明的实例中,针对32个显示瓦片中的每一者检索的像素值的最大数目为128个像素值。因此,针对显示瓦片中的每一者的b的值为128个像素值。在图8中,32个显示瓦片中的每一者的通道利用率为256/(2*128),其等于1,意味着存储器单元26A与存储器单元26N之间的适当通道负载平衡。
在图12中说明的实例中,针对8个显示瓦片中的每一者检索的像素值的最大数目不相同。举例来说,对于作为图12中的第一完整列的第一显示瓦片,GPU 14从存储器单元24A检索所有像素值且不从存储器单元24N检索像素值,这意味着任一通道的像素值的最大数目(即,b)针对第一显示瓦片为256个像素值,因为列为16个像素值且列的宽度为16个像素值。对于作为图12中的第二完整列的第二显示瓦片,MIF 20从存储器单元26A检索192个像素值(即,0.75*256等于192),且从存储器单元26N检索64个像素值(即,0.25*256等于64)。在此情况下,用于第二显示瓦片的任一通道的像素值的最大数目为来自存储器单元26N的192个像素值,因为192大于64。
利用同一计算,图12中的8个显示瓦片中的每一者的b的值可计算为:对于第一显示瓦片为256,对于第二显示瓦片为192,对于第三显示瓦片为128,对于第四显示瓦片为192,对于第五显示瓦片为256,对于第六显示瓦片为192,对于第七显示瓦片为128,且对于第八显示瓦片为192。通过显示瓦片中的每一者的b的值以及等于256的T和等于2的n的值,显示瓦片中的每一者的通道利用率(u)可计算为:对于第一显示瓦片为1/2,对于第二显示瓦片为2/3,对于第三显示瓦片为1,对于第四显示瓦片为2/3,对于第五显示瓦片为1/2,对于第六显示瓦片为2/3,对于第七显示瓦片为1,且对于第八显示瓦片为2/3。在此实例中,8个显示瓦片中的每一者的通道利用率的平均值为近似0.71(即,1/2+2/3+1+2/3+1/2+2/3+1+2/3)/8等于近似0.71)。因此,虽然图12中说明的实例的通道利用率不等于1,但其仍大于图6中说明的实例的0.5通道利用率。
前述实例利用用于交错粒度、显示瓦片的大小、表面瓦片的大小、显示器的大小、页的大小的特定值以及其它此类值来帮助理解本发明中描述的实例性技术。下文以较一般术语描述实例性技术以指示本发明中描述的技术可扩展到其中交错粒度、显示瓦片的大小、表面瓦片的大小、显示器的大小和其它此类值不一定是本发明中以上使用的实例性值的情形。
举例来说,术语“像素大小”经界定为用以表示每一像素值的字节数目,且术语“瓦片大小”经界定为表面瓦片的字节数目。举例来说,在以上实例中,作为4个字节的32位表示像素值。因此,在以上实例中,像素大小为4个字节。而且,在以上实例中,表面瓦片为4x4像素值。由于每一像素值包含4个字节,且在表面瓦片中存在16个像素值,因此在以上实例中的瓦片大小为64个字节。
假设例如表面32A或表面32B等表面的以像素计的宽度为w个像素,像素大小为z个字节,且表面内的每一表面瓦片的高度为v个像素。在此情况下,术语“表面跨度(surfacestride)”(s)经界定为s=z*w*v。如上文描述,MIF 20可以线性方式存储表面32A的像素值。在此情况下,v的值可等于一个像素,因为表面32A的每一行的高度为一个像素。
举例来说,假定表面32A为32个像素宽且像素大小为4个字节。而且,因为表面32A以线性方式存储,所以每一行的高度为一个像素。则表面32A的表面跨度(s)为128个字节(即,4*32*1等于128)。作为另一实例,假定表面32B为32个像素宽,像素大小为4个字节,且表面瓦片为4x4。在此实例中,表面32B的表面跨度(s)为512个字节(即,4*32*4等于512)。
如果表面跨度是作为一或多个表面瓦片的大小的“N”个字节的倍数,那么表面的表面跨度可称为“搭接跨度(snap stride)”。举例来说,表面瓦片对于线性表面为1x1像素值。N可称为搭接大小。举例来说,128个像素值、256个像素值和2048个像素值是128字节的搭接大小(N)的所有搭接跨度。类似地,512个像素值和1024个像素值是512字节的搭接大小(N)的所有搭接跨度。
搭接跨度的对应宽度可称为搭接宽度。举例来说,64是具有搭接大小128和像素大小4的线性表面的搭接宽度,因为所述线性表面的跨度为256。在此实例中,因为线性表面为128个字节的倍数,且128个字节是一或多个表面瓦片的大小,所以所述线性表面可视为具有128个字节的搭接大小和64个像素值的搭接宽度的搭接跨度。对于4x4表面瓦片,64个像素值可为具有512个字节的搭接大小和4的像素大小的此4x4表面瓦片的搭接宽度,因为1024个字节的跨度是512个字节的倍数。
术语“搭接间隔”可为搭接大小(N)的宽度中的以字节计的像素值。搭接坐标可从搭接间隔确定。举例来说,假设像素坐标在表面中为(x,y)。则搭接坐标可界定为X=floor(x/搭接间隔)。搭接坐标(X,y)为整数。而且,如果交错粒度为搭接大小的倍数,那么搭接间隔的每一像素可经由同一MC 22从同一存储器单元26检索。
以下表1说明线性表面的通道函数,其中表面宽度为160个像素值,表面高度为32个像素值,像素大小为4个字节,交错粒度为1024个字节,存在两个存储器通道(例如,两个MC 22,其各自建立到系统存储器24内的一个存储器单元26的一个通道),不存在字节填补,且搭接间隔为32。表1中的通道函数c(X,y)指示两个通道中的哪一者用以从系统存储器24检索像素值。
举例来说,在表1的实例中,存在到系统存储器24的两个存储器通道(例如,从MC22A到存储器单元26A的一个通道,和从MC 22N到存储器单元26N的一个通道)。在表1中,从MC 22A到存储器单元26A的存储器通道称为通道0,且从MC22N到存储器单元22N的存储器通道称为通道1。
如上所述,搭接坐标(X)=floor(x/搭接间隔)。在表1的实例中,搭接间隔为32,且宽度为160个像素值(例如,具有x坐标0到x坐标159的像素值)。因此,线性表面的从x=0到x=31的x坐标的搭接坐标X将为0,线性表面的从x=32到x=63的x坐标的搭接坐标X将为1,线性表面的从x=64到95的x坐标的搭接坐标X将为2,线性表面的从x=96到127的x坐标的搭接坐标X将为3,且线性表面的从x=128到159的x坐标的搭接坐标X将为4。
而且,如上所述,由搭接间隔涵盖的所有像素值经由MC 22A或MC 22N但并非两者存储在系统存储器24中。表1中说明此存储。举例来说,在表1中的y=1的行中,c(X,y)对于X=0等于0,对于X=1等于0,对于X=2等于0,对于X=3等于1,且对于X=4等于1。这意味着线性表面的位于x=0到31(例如,其中X=0)且y=1的像素值经由MC 22A存储在存储器单元22A中(因此表1中的值0),线性表面的位于x=32到63(例如,其中X=1)且y=1的像素值经由MC 22A存储在存储器单元22A中(因此表1中的值0),且线性表面的位于x=64到95(例如,其中X=2)且y=1的像素值经由MC 22A存储在存储器单元22A中(因此表1中的值0)。对于线性表面的位于x=96到127(例如,其中X=3)且y=1的像素值,这些像素值经由MC 22N存储在存储器单元22N中(因此表1中的值1),且对于线性表面的位于x=128到159(例如,其中X=4)且y=1的像素值,这些像素值经由MC 22N存储在存储器单元22N中(因此表1中的值1)。
表1.
表1指示针对具有160个像素值的宽度的线性表面的搭接坐标(X=0到4)中的每一者的通道函数c(X,y)。在表1中,且如图17A和17B中说明,搭接坐标(X=0到4)中的每一者的通道函数c(X,y)为周期性函数,且除了搭接坐标中的每一者的初始相位可不同之外可为同一函数。
图17A和17B是说明通道函数的实例的图形图。举例来说,图17A是说明作为表1的y的函数的c(0,y)的曲线图,且图17B是说明作为表1的y的函数的c(2,y)的曲线图。在图17A和17B中,x轴对应于表1的y,且y轴针对图17A对应于c(X=0,y),且针对图17B对应于c(X=2,y)。在图17A和17B中,通道函数(即,图17A的c(X=0,y)和图17B的c(X=2,y))重复线性表面的16个像素值。
因为线性表面可为与装置10的显示器相同的大小,所以通道函数可视为沿着装置10的显示器的y轴每16个像素重复。而且,图17A和17B中说明的通道函数可为同一通道函数,但具有不同初始相位。举例来说,如果c(X=2,y)经相移10,那么如图17B中说明的c(X=2,y)等于如图17A中说明的c(X=0,y)。换句话说,c(X=2,y)等于c(X=0,y+10)。表1中的其它通道函数可展现与c(X=0,y)和c(X=2,y)类似的特性,但可相对于c(X=0,y)经相移除了10之外的量。
在一些实例中,如果通道函数具有1的周期,或如果显示瓦片高度大于通道函数周期,那么通道利用率(例如,经由MC 22A和22N对存储器单元26A和26N的存取)可能不是最佳的。举例来说,在图4中说明的针对以线性方式存储的表面32A的实例中,显示瓦片高度为16个像素。而且,如果以类似于表1或表2(如下文描述)的方式针对表面32A计算通道函数,那么通道函数周期将为1。因此,在表4中说明的实例中,为16个像素的显示瓦片高度大于通道函数周期,且填补字节可有助于当检索像素值以用于再现时更好的通道利用率。举例来说,相对于图8描述的保留填补字节在MIF 20经由MC 22A和22N从存储器单元26A和26B检索像素值以用于再现时得到更好的通道利用率。
本发明中描述的涉及保留填补字节的技术可解决其中通道利用率可能不是最佳的状况。举例来说,如果通道函数周期为1,那么填补字节可将通道函数的周期增加到大于1。而且,如果显示瓦片高度大于通道函数周期,那么填补字节可减小通道函数周期。如上所述,填补字节可增加存储待再现的表面的像素值所需要的存储器量(例如,增加表面在系统存储器中的存储器占据面积)。可能希望以实现通道利用率平衡所需要的最少数目的字节进行填补以最小化存储表面所需要的存储器开销。
下文描述选择填补字节的数目的方式的实例。假定存在到系统存储器24的n个通道(例如,MC 22A的数目和存储器单元26的数目等于n)。而且,假定交错粒度为f。术语“交错周期”(d)可界定为d等于n*f。举例来说,如果存在两个通道且交错粒度为1024个字节,那么交错周期为2048个字节。作为另一实例,如果存在四个通道且交错粒度为1024个字节,那么交错周期为4096个字节。
交错周期可能大于页的大小(例如,图2的物理页30)。如果交错周期小于或等于页的大小,那么所有通道可在页内平衡。举例来说,所有通道可用以将像素值存储到页中。
给定表面跨度和交错周期d,通道函数周期p可如下计算:p(w)=(d*m)/s,其中m是使p为整数的最小数字,且w是表面的宽度。以下表2指示具有1kB交错粒度的双通道的通道函数周期。如上文指示,双通道可意味着存在两个通道(例如,从MC 22A到存储器单元26A的一个通道,和从MC 22N到存储器单元26N的另一通道)。
表2.
以像素计的表面宽度 | 以字节计的跨度 | 以字节计的交错周期 | m | 通道函数周期 |
32 | 128 | 2048 | 1 | 16 |
64 | 256 | 2048 | 1 | 8 |
96 | 384 | 2048 | 3 | 16 |
128 | 512 | 2048 | 1 | 4 |
160 | 640 | 2048 | 5 | 16 |
192 | 768 | 2048 | 3 | 8 |
24 | 896 | 2048 | 7 | 16 |
256 | 1024 | 2048 | 1 | 2 |
288 | 1152 | 2048 | 9 | 16 |
320 | 1280 | 2048 | 5 | 8 |
352 | 1408 | 2048 | 11 | 16 |
384 | 1536 | 2048 | 3 | 4 |
416 | 1664 | 2048 | 13 | 16 |
448 | 1792 | 2048 | 7 | 8 |
480 | 1920 | 2048 | 15 | 16 |
512 | 2048 | 2048 | 1 | 1 |
表2是假定存在两个通道,交错粒度为1kB且像素大小为4时如何确定通道函数周期的实例。像素值可在完整交错周期中在所有通道之间均匀分配。当周期大于1时,像素值可在完整通道函数周期中在每一搭接坐标处在所有通道之间均匀分配。
如上文指示,如果通道函数周期为1或通道函数周期大于或等于显示瓦片高度,那么填补字节可有助于更优化的通道利用率。表3说明假定两个通道、1024个字节的交错粒度和4的像素大小时针对不同显示瓦片高度的填补要求。
表3.
以像素计的宽度 | 周期 | 屏幕瓦片高度2 | 屏幕瓦片高度4 | 屏幕瓦片高度8 | 屏幕瓦片高度16 |
32 | 16 | 是 | 是 | 是 | 否 |
64 | 8 | 是 | 是 | 否 | 否 |
96 | 16 | 是 | 是 | 是 | 否 |
128 | 4 | 是 | 否 | 否 | 否 |
160 | 16 | 是 | 是 | 是 | 否 |
192 | 8 | 是 | 是 | 否 | 否 |
224 | 16 | 是 | 是 | 是 | 否 |
256 | 2 | 否 | 否 | 否 | 否 |
288 | 16 | 是 | 是 | 是 | 否 |
320 | 8 | 是 | 是 | 否 | 否 |
352 | 16 | 是 | 是 | 是 | 否 |
384 | 4 | 是 | 否 | 否 | 否 |
416 | 16 | 是 | 是 | 是 | 否 |
448 | 8 | 是 | 是 | 否 | 否 |
480 | 16 | 是 | 是 | 是 | 否 |
512 | 1 | 是 | 是 | 是 | 是 |
在一些情况下,周期函数p(w)可自身为周期性函数。p(w)的周期可为具有1的通道函数周期的最小表面宽度。举例来说,假定具有1的通道函数周期的最小表面宽度为q。对于小于q的w,p(w)等于p(w+kq),其中k为正整数。假设p(w)=(d.ml)/s;那么p(w+kq)等于(dm)/(kd+(d.ml)/(pw))。(dm)/(kd+(d.ml)/(pw))的值等于p(w).m/(p(w).k+ml),其通过设定m=p(w).k+ml而等于p(w)。在一些实例中,可能不必考虑宽度大于其中跨度等于交错周期的宽度的情形。举例来说,对于线性表面(例如,图4和8的表面32A),其中存在两个通道且交错粒度为1024个字节,小于或等于512个像素值的宽度可确定填补要求。
确定应保留的填补字节的数目的以上计算可用以下伪码来概括。此伪码是为了便于理解而提供,且本发明中描述的技术不应视为限于特定伪码。
填补算法:
通道计数n;//实例为2,从MC 22A到存储器单元26A的一个通道,和从MC22N到存储器单元26N的一个通道
交错粒度f;//实例为1024个字节
像素大小b;//实例为每大小4个字节
显示瓦片高度h;//2、4、8、16
表面瓦片高度v;//实例为1、4
屏幕宽度W;//实例为2048个像素
适当屏幕宽度w;
最小屏幕宽度q;
交错周期d;
适当跨度s;
通道函数周期p;
d=n*f;//实例为2048
q=d/(v*b);//实例为512、128
w=W%q;//实例为0
if(w==0)
w=q;//实例为512、128
s=w*v*b;//实例为2048
找到最小整数m以使得p=dm/s为整数;//实例为p=1且m=1
p*=v;//从显示瓦片的数目转换到像素数目
if(p==v或p>h)
{
找到通道函数周期大于1且小于或等于h的下一宽度;
填补=新宽度的跨度-s;
}
表4说明针对一些表面分辨率的填补量,其中存在到系统存储器24的两个存储器通道,交错粒度为1024个字节,像素大小为4个字节,宽度以像素计,填补以字节计,且h是以像素计的显示瓦片高度。
表4.
图18是说明根据本发明中描述的一或多个实例的实例性技术的流程图。仅为了说明的目的,参考图1到16。
存储器接口可接收指示所述存储器接口将表面的像素值存储在系统存储器中的第一多个指令(34)。举例来说,例如GPU 14等处理单元可将指令传输到MIF 20,所述指令指示MIF 20将例如表面32A或32B等表面的像素值存储在系统存储器24中。
存储器接口可至少在经由第一存储器控制器的系统存储器的第一存储器单元与经由第二不同存储器控制器的系统存储器的第二不同存储器单元之间以交错方式将表面的像素值存储在系统存储器的除了系统存储器中的保留填补位之外的位中,使得显示瓦片的第一像素值集合经由第一存储器控制器存储在第一存储器单元内且同一显示瓦片的第二像素值集合经由第二存储器控制器存储在第二存储器单元内(36)。举例来说,MIF 20可将表面32A或32B的像素值存储(例如,逐条线或逐个瓦片)在系统存储器24的除了保留填补位之外的位中(由图8到14和16中的参考标号37说明)。
MIF 20可至少在经由MC 22A的系统存储器24的存储器单元26A与经由MC 22N的系统存储器24的存储器单元26B之间基于交错粒度而以交错方式存储像素值。举例来说,交错粒度可指示MIF 20在经由MC 22N在存储器单元26N中存储位之前经由MC 22A在存储器单元26A中存储的位的数目。如上所述,MIF 20可以此交错方式存储像素值,使得存储器单元26A存储显示瓦片的第一像素值集合,且存储器单元26N存储同一显示瓦片的第二像素值集合。举例来说,显示瓦片可为如图8到14中说明的表面32A或表面32B的列。
在一些实例中,除了接收第一多个指令之外,MIF 20还可从处理单元(例如,GPU14)接收表面的像素值将存储于的虚拟地址。MIF 20的MMU 21可将虚拟地址映射到系统存储器24中除了填补位之外的位的物理地址。在此实例中,MIF 20可基于物理地址将表面的像素值存储在除了填补位之外的位中。
而且,在一些实例中,例如处理器16或GPU 14中的一者等处理单元可保留填补位。举例来说,第一处理单元(例如,处理器16)可保留填补位,且MIF 20可从第二不同处理单元(例如,GPU 14)接收第一多个指令。作为另一实例,处理单元(例如,GPU14)可保留填补位,且MIF 20可从所述处理单元(例如,GPU 14)接收第一多个指令。
在一些实例中,处理单元(例如,处理器16或GPU 14)可确定致使存储显示瓦片的第一像素值集合所需要的位的数目等于存储显示瓦片的第二像素值集合所需要的位的数目的填补位的数目。在此实例中,处理单元可基于所确定填补位的数目来保留填补位。
如图18中说明,存储器接口可接收从系统存储器检索表面的像素值的第二多个指令(38)。举例来说,MIF 20可在GPU 14希望再现显示瓦片时接收此些指令,其中GPU 14产生所述显示瓦片的第一和第二像素值集合。
响应于第二多个指令,存储器接口可经由第一存储器控制器从第一存储器单元检索显示瓦片的第一像素值集合(40)。而且,响应于第二多个指令,在检索第一像素值集合的同时,存储器接口可经由第二存储器控制器从第二存储器单元检索显示瓦片的第二像素值集合(42)。举例来说,MIF 20可经由MC 22A从存储器单元26A检索显示瓦片的第一像素集合的第一像素值集合,且在同时经由MC 22N从存储器单元26N检索同一显示瓦片的第二像素集合的第二像素值集合。
图19是说明可经配置以实施本发明的一或多个方面的装置的另一实例的框图。举例来说,图19更详细说明图1的装置10。为了简洁的目的,仅详细描述装置10的在图19中说明但未在图1中说明的组件。
在图19的实例中,装置10可包含显示器52、处理器16、GPU 14、系统存储器24、显示器处理器46、收发器模块48和用户接口50。如图19中说明的处理器16、GPU 14和系统存储器24可大体上与图1中说明的类似。此外,收发器模块48和显示器处理器46均可为IC 12的部分,均可在IC 12的外部,或一者可为IC 12的部分且另一者在IC 12的外部。
为了清楚的目的,装置10可包含图19中未图示的额外模块或单元。举例来说,装置10可包含图19中均未展示的扬声器和麦克风,以在其中装置10为移动无线电话的实例或其中装置10为媒体播放器的扬声器中实现电话通信。装置10还可包含摄像机。此外,装置10中展示的各种模块和单元可能不是在装置10的每个实例中都是必要的。举例来说,在装置10为桌上型计算机或经装备以与外部用户接口或显示器介接的其它装置的实例中,用户接口50和显示器52可在装置10的外部。
用户接口50的实例包含(但不限于)轨迹球、鼠标、键盘和其它类型的输入装置。用户接口50还可为触摸屏,且可并入作为显示器52的一部分。收发器模块48可包含用以允许装置10与另一装置或网络之间的无线或有线通信的电路。收发器模块48可包含调制器、解调器、放大器和其它此类电路以用于有线或无线通信。
显示器52可为装置10的显示器,其显示由GPU 14产生的图像内容。举例来说,在光栅化过程期间,GPU 14可将显示器52划分为显示瓦片,且将图像再现到显示瓦片中的每一者中。显示器52可为液晶显示器(LCD)、有机发光二极管显示器(OLED)、阴极射线管(CRT)显示器、等离子显示器或另一类型的显示装置。
应认识到,取决于实例,本文描述的技术中的任一者的某些动作或事件可以不同顺序执行,可相加、合并或完全省去(例如,并非所有描述的动作或事件对于所述技术的实践都是必要的)。而且,在某些实例中,动作或事件可例如通过多线程处理、中断处理或多个处理器同时执行,而不是循序地执行。
在一或多个实例中,所描述功能可以硬件、软件、固件或其任一组合实施。如果以软件来实施,那么功能可作为一或多个指令或代码存储于计算机可读媒体上。计算机可读媒体可包含计算机数据存储媒体。数据存储媒体可为可由一或多个计算机或者一或多个处理器存取以检索指令、代码和/或数据结构以用于实施本发明中描述的技术的任何可用媒体。举例来说且并非限制,此计算机可读媒体可包括随机存取存储器(RAM)、只读存储器(ROM)、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用以存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。如本文所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软磁盘和蓝光光盘,其中磁盘通常以磁性方式再生数据,而光盘用激光以光学方式再生数据。以上各项的组合也应包含在计算机可读媒体的范围内。
可通过例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一或多个处理器来执行代码。因此,如本文使用的术语“处理器”可指代前述结构或适于实施本文所述的技术的任何其它结构中的任一者。而且,可将所述技术完全实施于一或多个电路或逻辑元件中。
本发明的技术可在广泛多种装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(即,芯片组)。本发明中描述各种组件、模块或单元以强调经配置以执行所揭示技术的装置的功能方面,但未必需要通过不同硬件单元来实现。而是如上文所述,各种单元可组合于硬件单元中,或通过互操作性硬件单元(包含如上文所述的一或多个处理器)的集合结合合适的软件和/或固件来提供。
已描述各种实例。这些和其它实例在所附权利要求书的范围内。
Claims (36)
1.一种用于存储数据的方法,其包括:
以存储器接口接收指示所述存储器接口将表面的像素值存储在系统存储器中的多个指令;以及
以所述存储器接口基于至少在经由第一存储器控制器的所述系统存储器的第一存储器单元与经由第二不同存储器控制器的所述系统存储器的第二不同存储器单元之间的交错粒度以交错方式将所述表面的所述像素值存储在所述系统存储器的除了所述系统存储器中的保留填补位之外的位中,从而致使显示瓦片的第一像素值集合经由所述第一存储器控制器存储在所述第一存储器单元内且所述同一显示瓦片的第二像素值集合经由所述第二存储器控制器存储在所述第二存储器单元内,其中所述交错粒度指示所述存储器接口在经由所述第二存储器控制器在所述第二存储器单元中存储位之前经由所述第一存储器控制器在所述第一存储器单元中存储的位的数目,且其中所述保留填补位在以所述交错方式存储所述表面的所述像素值中朝向所述交错粒度计数。
2.根据权利要求1所述的方法,其进一步包括:
以所述存储器接口接收所述表面的所述像素值将存储于的虚拟地址;以及
以所述存储器接口的存储器管理单元MMU将所述虚拟地址映射到所述系统存储器的除了所述系统存储器中的所述保留填补位之外的所述位的物理地址,
其中存储所述表面的所述像素值包括基于所述系统存储器的除了所述系统存储器中的所述保留填补位之外的所述位的所述物理地址将所述表面的像素值存储在所述系统存储器的除了所述系统存储器中的所述保留填补位之外的所述位中。
3.根据权利要求1所述的方法,其中存储包括以所述交错方式将所述表面的所述像素值存储在所述系统存储器的页的位中。
4.根据权利要求1所述的方法,其中存储包括以所述交错方式将所述表面的线的所述像素值存储在所述系统存储器的除了所述系统存储器中的保留填补位之外的位中。
5.根据权利要求1所述的方法,其中存储包括以所述交错方式将所述表面的瓦片的所述像素值存储在所述系统存储器的除了所述系统存储器中的保留填补位之外的位中。
6.根据权利要求1所述的方法,其进一步包括:
确定致使存储所述第一像素值集合所需要的位数目等于存储所述第二像素值集合所需要的位数目的所述填补位的数目;以及
基于所述所确定数目保留所述填补位。
7.根据权利要求1所述的方法,其进一步包括:
以第一处理单元保留所述填补位,
其中接收所述多个指令包括从第二不同处理单元接收所述多个指令。
8.根据权利要求7所述的方法,其中所述第一处理单元包括处理器,且其中所述第二处理单元包括图形处理单元。
9.根据权利要求7所述的方法,其中保留所述填补位包括以在所述第一处理单元上执行的驱动器保留所述填补位。
10.根据权利要求1所述的方法,其进一步包括:
以处理单元保留所述填补位,
其中接收所述多个指令包括从所述处理单元接收所述多个指令。
11.根据权利要求10所述的方法,其中所述处理单元包括图形处理单元GPU。
12.根据权利要求1所述的方法,其中所述多个指令包括第一多个指令,所述方法进一步包括:
以所述存储器接口接收从所述系统存储器检索所述表面的所述像素值的第二多个指令;
响应于所述第二多个指令,以所述存储器接口经由所述第一存储器控制器从所述第一存储器单元检索所述显示瓦片的所述第一像素值集合;以及
响应于所述第二多个指令,在检索所述第一像素值集合的同时,以所述存储器接口经由所述第二存储器控制器从所述第二存储器单元检索所述显示瓦片的所述第二像素值集合。
13.根据权利要求12所述的方法,其进一步包括:
基于所述经检索第一像素值集合和所述第二像素值集合在显示器上再现所述显示瓦片。
14.根据权利要求1所述的方法,其进一步包括:
以处理单元产生所述显示瓦片的所述第一像素值集合;以及
以所述处理单元产生所述显示瓦片的所述第二像素值集合。
15.一种集成电路IC,其包括:
第一存储器控制器,其以操作方式耦合到系统存储器的第一存储器单元;
第二不同存储器控制器,其以操作方式耦合到所述系统存储器的第二不同存储器单元;以及
存储器接口,其经配置以:
接收指示所述存储器接口将表面的像素值存储在所述系统存储器中的多个指令;以及
基于至少在经由所述第一存储器控制器的所述系统存储器的所述第一存储器单元与经由所述第二不同存储器控制器的所述系统存储器的所述第二不同存储器单元之间的交错粒度以交错方式将所述表面的所述像素值存储在所述系统存储器的除了所述系统存储器中的保留填补位之外的位中,从而致使显示瓦片的第一像素值集合经由所述第一存储器控制器存储在所述第一存储器单元内且所述同一显示瓦片的第二像素值集合经由所述第二存储器控制器存储在所述第二存储器单元内,其中所述交错粒度指示所述存储器接口在经由所述第二存储器控制器在所述第二存储器单元中存储位之前经由所述第一存储器控制器在所述第一存储器单元中存储的位的数目,且其中所述保留填补位在以所述交错方式存储所述表面的所述像素值中朝向所述交错粒度计数。
16.根据权利要求15所述的IC,其中所述存储器接口包括存储器管理单元MMU,且其中所述存储器接口经配置以:
接收所述表面的所述像素值将存储于的虚拟地址;
以所述MMU将所述虚拟地址映射到所述系统存储器的除了所述系统存储器中的所述保留填补位之外的所述位的物理地址;以及
基于所述系统存储器的除了所述系统存储器中的所述保留填补位之外的所述位的所述物理地址将所述表面的所述像素值存储在所述系统存储器的除了所述系统存储器中的所述保留填补位之外的所述位中。
17.根据权利要求15所述的IC,其中所述存储器接口经配置以用所述交错方式将所述表面的所述像素值存储在所述系统存储器的页的位中。
18.根据权利要求15所述的IC,其中所述存储器接口经配置以用所述交错方式将所述表面的线的所述像素值存储在所述系统存储器的除了所述系统存储器中的保留填补位之外的位中。
19.根据权利要求15所述的IC,其中所述存储器接口经配置以用所述交错方式将所述表面的瓦片的所述像素值存储在所述系统存储器的除了所述系统存储器中的保留填补位之外的位中。
20.根据权利要求15所述的IC,其进一步包括处理单元,所述处理单元经配置以:
确定致使存储所述第一像素值集合所需要的位数目等于存储所述第二像素值集合所需要的位数目的所述填补位的数目;以及
基于所述所确定数目保留所述填补位。
21.根据权利要求15所述的IC,其进一步包括第一处理单元和第二不同处理单元,其中所述第一处理单元经配置以保留所述填补位,且其中所述存储器接口经配置以从所述第二处理单元接收所述多个指令。
22.根据权利要求21所述的IC,其中所述第一处理单元包括处理器,且其中所述第二处理单元包括图形处理单元。
23.根据权利要求21所述的IC,其中所述第一处理单元经配置以执行驱动器,且以所述驱动器保留所述填补位。
24.根据权利要求15所述的IC,其进一步包括经配置以保留所述填补位的处理单元,且其中所述存储器接口从所述处理单元接收所述多个指令。
25.根据权利要求24所述的IC,其中所述处理单元包括图形处理单元。
26.根据权利要求15所述的IC,其中所述多个指令包括第一多个指令,且其中所述存储器接口经配置以:
接收从所述系统存储器检索所述表面的所述像素值的第二多个指令;
响应于所述第二多个指令,经由所述第一存储器控制器从所述第一存储器单元检索所述显示瓦片的所述第一像素值集合;以及
响应于所述第二多个指令,在检索所述第一像素值集合的同时,经由所述第二存储器控制器从所述第二存储器单元检索所述显示瓦片的所述第二像素值集合。
27.根据权利要求26所述的IC,其进一步包括经配置以基于所述经检索第一像素值集合和所述第二像素值集合在显示器上再现所述显示瓦片的处理单元。
28.根据权利要求15所述的IC,其进一步包括处理单元,所述处理单元经配置以:
产生所述显示瓦片的所述第一像素值集合;以及
产生所述显示瓦片的所述第二像素值集合。
29.一种用于存储数据的装置,其包括:
系统存储器,其包括至少第一存储器单元和第二不同存储器单元;以及
集成电路IC,其包括:
第一存储器控制器,其以操作方式耦合到所述系统存储器的所述第一存储器单元;
第二不同存储器控制器,其以操作方式耦合到所述系统存储器的所述第二不同存储器单元;以及
存储器接口,其经配置以:
接收指示所述存储器接口将表面的像素值存储在所述系统存储器中的多个指令;以及
基于至少在经由所述第一存储器控制器的所述系统存储器的所述第一存储器单元与经由所述第二不同存储器控制器的所述系统存储器的所述第二不同存储器单元之间的交错粒度以交错方式将所述表面的所述像素值存储在所述系统存储器的除了所述系统存储器中的保留填补位之外的位中,从而致使显示瓦片的第一像素值集合经由所述第一存储器控制器存储在所述第一存储器单元内且所述同一显示瓦片的第二像素值集合经由所述第二存储器控制器存储在所述第二存储器单元内,其中所述交错粒度指示所述存储器接口在经由所述第二存储器控制器在所述第二存储器单元中存储位之前经由所述第一存储器控制器在所述第一存储器单元中存储的位的数目,且其中所述保留填补位在以所述交错方式存储所述表面的所述像素值中朝向所述交错粒度计数。
30.根据权利要求29所述的装置,其中所述存储器接口包括存储器管理单元MMU,
且其中所述存储器接口经配置以:
接收所述表面的所述像素值将存储于的虚拟地址;
以所述MMU将所述虚拟地址映射到所述系统存储器的除了所述系统存储器中的所述保留填补位之外的所述位的物理地址;以及
基于所述系统存储器的除了所述系统存储器中的所述保留填补位之外的所述位的所述物理地址将所述表面的所述像素值存储在所述系统存储器的除了所述系统存储器中的所述保留填补位之外的所述位中。
31.根据权利要求29所述的装置,其进一步包括处理单元,所述处理单元经配置以:
确定致使存储所述第一像素值集合所需要的位数目等于存储所述第二像素值集合所需要的位数目的所述填补位的数目;以及
基于所述所确定数目保留所述填补位。
32.根据权利要求29所述的装置,其中所述IC包含所述处理单元。
33.根据权利要求29所述的装置,其中所述多个指令包括第一多个指令,且其中所述存储器接口经配置以:
接收从所述系统存储器检索所述表面的所述像素值的第二多个指令;
响应于所述第二多个指令,经由所述第一存储器控制器从所述第一存储器单元检索所述显示瓦片的所述第一像素值集合;以及
响应于所述第二多个指令,在检索所述第一像素值集合的同时,经由所述第二存储器控制器从所述第二存储器单元检索所述显示瓦片的所述第二像素值集合。
34.根据权利要求33所述的装置,其进一步包括:
显示器;以及
处理单元,其经配置以基于所述经检索第一像素值集合和所述第二像素值集合在所述显示器上再现所述显示瓦片。
35.一种用于存储数据的装置,其包括:
系统存储器,其包括至少第一存储器单元和第二不同存储器单元;以及
集成电路IC,其包括:
第一存储器控制器,其以操作方式耦合到所述系统存储器的所述第一存储器单元;
第二不同存储器控制器,其以操作方式耦合到所述系统存储器的所述第二不同存储器单元;以及
用于以存储器接口接收指示所述存储器接口将表面的像素值存储在系统存储器中的多个指令的装置;以及
用于以所述存储器接口基于至少在经由第一存储器控制器的所述系统存储器的第一存储器单元与经由第二不同存储器控制器的所述系统存储器的第二不同存储器单元之间的交错粒度以交错方式将表面的所述像素值存储在所述系统存储器的除了所述系统存储器中的保留填补位之外的位中从而致使显示瓦片的第一像素值集合经由所述第一存储器控制器存储在所述第一存储器单元内且所述同一显示瓦片的第二像素值集合经由所述第二存储器控制器存储在所述第二存储器单元内的装置,其中所述交错粒度指示所述存储器接口在经由所述第二存储器控制器在所述第二存储器单元中存储位之前经由所述第一存储器控制器在所述第一存储器单元中存储的位的数目,且其中所述保留填补位在以所述交错方式存储所述表面的所述像素值中朝向所述交错粒度计数。
36.一种具有存储于其上的指令的计算机可读存储媒体,所述指令在执行后致使一或多个处理器:
指示存储器接口基于至少在经由第一存储器控制器的所述系统存储器的第一存储器单元与经由第二不同存储器控制器的所述系统存储器的第二不同存储器单元之间的交错粒度以交错方式将表面的像素值存储在系统存储器的除了所述系统存储器中的保留填补位之外的位中,从而致使显示瓦片的第一像素值集合经由所述第一存储器控制器存储在所述第一存储器单元内且所述同一显示瓦片的第二像素值集合经由所述第二存储器控制器存储在所述第二存储器单元内,其中所述交错粒度指示所述存储器接口在经由所述第二存储器控制器在所述第二存储器单元中存储位之前经由所述第一存储器控制器在所述第一存储器单元中存储的位的数目,且其中所述保留填补位在以所述交错方式存储所述表面的所述像素值中朝向所述交错粒度计数。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/491,452 US9299124B2 (en) | 2012-06-07 | 2012-06-07 | Padding for multi-channel memory |
US13/491,452 | 2012-06-07 | ||
PCT/US2013/039725 WO2013184268A1 (en) | 2012-06-07 | 2013-05-06 | Padding for multi-channel memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104350523A CN104350523A (zh) | 2015-02-11 |
CN104350523B true CN104350523B (zh) | 2017-09-12 |
Family
ID=48444636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380029728.0A Expired - Fee Related CN104350523B (zh) | 2012-06-07 | 2013-05-06 | 用于多通道存储器的填补 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9299124B2 (zh) |
EP (1) | EP2859527A1 (zh) |
CN (1) | CN104350523B (zh) |
WO (1) | WO2013184268A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9626735B2 (en) * | 2013-06-24 | 2017-04-18 | Intel Corporation | Page management approach to fully utilize hardware caches for tiled rendering |
US9449362B2 (en) * | 2013-09-06 | 2016-09-20 | Intel Corporation | Techniques for reducing accesses for retrieving texture images |
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
GB2543736B (en) * | 2015-09-10 | 2019-03-27 | Advanced Risc Mach Ltd | An interface apparatus and method of operating an interface apparatus |
KR102502569B1 (ko) * | 2015-12-02 | 2023-02-23 | 삼성전자주식회사 | 시스템 리소스 관리를 위한 방법 및 장치 |
US10552319B2 (en) * | 2018-06-01 | 2020-02-04 | Intel Corporation | Interleave set aware object allocation |
FR3128555B1 (fr) * | 2021-10-21 | 2024-04-19 | St Microelectronics Rousset | Systeme informatique pour traiter des donnees de pixels d’une image |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5982384A (en) * | 1995-06-08 | 1999-11-09 | Hewlett-Packard Company | System and method for triangle rasterization with frame buffers interleaved in two dimensions |
US6041393A (en) * | 1996-08-23 | 2000-03-21 | Hewlett-Packard Co. | Array padding for higher memory throughput in the presence of dirty misses |
US7872657B1 (en) * | 2006-06-16 | 2011-01-18 | Nvidia Corporation | Memory addressing scheme using partition strides |
CN102354300A (zh) * | 2010-10-15 | 2012-02-15 | 威盛电子股份有限公司 | 存取方法以及共享存储器系统 |
EP2453360A2 (en) * | 2010-11-16 | 2012-05-16 | Samsung Electronics Co., Ltd. | Method and apparatus for translating memory access address |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6374341B1 (en) | 1998-09-02 | 2002-04-16 | Ati International Srl | Apparatus and a method for variable size pages using fixed size translation lookaside buffer entries |
US6499095B1 (en) | 1999-02-11 | 2002-12-24 | Oracle Corp. | Machine-independent memory management system within a run-time environment |
US6625685B1 (en) | 2000-09-20 | 2003-09-23 | Broadcom Corporation | Memory controller with programmable configuration |
US6850241B2 (en) | 2001-02-15 | 2005-02-01 | Sony Corporation | Swapped pixel pages |
US6842177B2 (en) | 2001-12-14 | 2005-01-11 | University Of Washington | Macroblock padding |
US7681013B1 (en) | 2001-12-31 | 2010-03-16 | Apple Inc. | Method for variable length decoding using multiple configurable look-up tables |
US7558947B1 (en) | 2001-12-31 | 2009-07-07 | Apple Inc. | Method and apparatus for computing vector absolute differences |
US7034849B1 (en) | 2001-12-31 | 2006-04-25 | Apple Computer, Inc. | Method and apparatus for image blending |
US6941438B2 (en) | 2003-01-10 | 2005-09-06 | Intel Corporation | Memory interleaving |
US7570695B2 (en) * | 2003-12-18 | 2009-08-04 | Intel Corporation | Method and adaptive bit interleaver for wideband systems using adaptive bit loading |
US8072463B1 (en) | 2006-10-04 | 2011-12-06 | Nvidia Corporation | Graphics system with virtual memory pages and non-power of two number of memory elements |
US8108648B2 (en) | 2007-06-25 | 2012-01-31 | Sonics, Inc. | Various methods and apparatus for address tiling |
US20100076941A1 (en) | 2008-09-09 | 2010-03-25 | Microsoft Corporation | Matrix-based scans on parallel processors |
KR101543246B1 (ko) | 2009-04-24 | 2015-08-11 | 삼성전자주식회사 | 데이터 저장 장치의 동작 방법 및 이에 따른 데이터 저장 장치 |
KR101734204B1 (ko) | 2010-06-01 | 2017-05-12 | 삼성전자주식회사 | 프로그램 시퀀서를 포함하는 플래시 메모리 장치 및 시스템, 그리고 그것의 프로그램 방법 |
US9009441B2 (en) | 2012-06-04 | 2015-04-14 | Qualcomm Incorporated | Memory channel selection in a multi-channel memory |
-
2012
- 2012-06-07 US US13/491,452 patent/US9299124B2/en not_active Expired - Fee Related
-
2013
- 2013-05-06 EP EP13722957.1A patent/EP2859527A1/en not_active Withdrawn
- 2013-05-06 WO PCT/US2013/039725 patent/WO2013184268A1/en active Application Filing
- 2013-05-06 CN CN201380029728.0A patent/CN104350523B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5982384A (en) * | 1995-06-08 | 1999-11-09 | Hewlett-Packard Company | System and method for triangle rasterization with frame buffers interleaved in two dimensions |
US6041393A (en) * | 1996-08-23 | 2000-03-21 | Hewlett-Packard Co. | Array padding for higher memory throughput in the presence of dirty misses |
US7872657B1 (en) * | 2006-06-16 | 2011-01-18 | Nvidia Corporation | Memory addressing scheme using partition strides |
CN102354300A (zh) * | 2010-10-15 | 2012-02-15 | 威盛电子股份有限公司 | 存取方法以及共享存储器系统 |
EP2453360A2 (en) * | 2010-11-16 | 2012-05-16 | Samsung Electronics Co., Ltd. | Method and apparatus for translating memory access address |
Non-Patent Citations (1)
Title |
---|
Neon:a Single-Chip 3D Workstation Graphics Accelerator;Joel McCormack等;《Proceedings of the ACM SIGGRAPH/EUROGRAPHICS workshop on Graphics hardware.ACM》;19981231;123-132 * |
Also Published As
Publication number | Publication date |
---|---|
CN104350523A (zh) | 2015-02-11 |
US9299124B2 (en) | 2016-03-29 |
EP2859527A1 (en) | 2015-04-15 |
US20130328889A1 (en) | 2013-12-12 |
WO2013184268A1 (en) | 2013-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104350523B (zh) | 用于多通道存储器的填补 | |
JP4477237B2 (ja) | 階層順によるラスタ化方法および装置 | |
CN102750664B (zh) | 基于寄存器的对纹理请求的排队 | |
CN103810669B (zh) | 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块 | |
CN105229696A (zh) | 用于多维数据存取的并行存储器 | |
CN103370728B (zh) | 用于图形处理的数据存储地址指派的方法和设备 | |
CN102890829B (zh) | 一种基于gpu的渲染地形的方法 | |
US20150302629A1 (en) | Start node determination for tree traversal in ray tracing applications | |
CN107533752A (zh) | 用于图形处理的基于表面格式的自适应存储器地址扫描 | |
KR101609079B1 (ko) | 그래픽 프로세싱 유닛에서의 명령 선별 | |
CN105122310A (zh) | 用于基于瓦片的渲染的帧内时戳 | |
CN102915563A (zh) | 三维网格模型透明绘制的方法及其系统 | |
US9009441B2 (en) | Memory channel selection in a multi-channel memory | |
US20230298252A1 (en) | Image rendering method and related apparatus | |
CN106530379A (zh) | 用于执行路径描边的方法和设备 | |
CN107077375A (zh) | 用于多操作系统的显示方法、装置和电子设备 | |
KR102589298B1 (ko) | 그래픽스 프로세싱 장치 및, 그래픽스 프로세싱 장치에서 캐시 바이패스를 제어하는 방법 | |
US10019349B2 (en) | Cache memory and method of managing the same | |
CN105612558B (zh) | 用于处理图像的装置和方法 | |
Okuyan et al. | Direct volume rendering of unstructured tetrahedral meshes using CUDA and OpenMP | |
KR20100068603A (ko) | 밉맵 생성 장치 및 방법 | |
CN102682465A (zh) | 3d格式转换系统和方法 | |
CN115129191B (zh) | 三维对象拾取方法、装置、设备及存储介质 | |
KR102256028B1 (ko) | 전자 장치 및 이의 디스플레이 패널의 소모 전력 분석 방법 | |
CN116883575B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170912 Termination date: 20190506 |
|
CF01 | Termination of patent right due to non-payment of annual fee |