CN112734897B - 一种图元光栅化触发的图形处理器深度数据预取方法 - Google Patents
一种图元光栅化触发的图形处理器深度数据预取方法 Download PDFInfo
- Publication number
- CN112734897B CN112734897B CN202011397779.7A CN202011397779A CN112734897B CN 112734897 B CN112734897 B CN 112734897B CN 202011397779 A CN202011397779 A CN 202011397779A CN 112734897 B CN112734897 B CN 112734897B
- Authority
- CN
- China
- Prior art keywords
- cache
- depth data
- depth
- data
- prefetching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 15
- 230000001960 triggered effect Effects 0.000 title claims abstract description 12
- 238000012360 testing method Methods 0.000 claims abstract description 32
- 238000009877 rendering Methods 0.000 claims abstract description 9
- 239000012634 fragment Substances 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 21
- 238000004043 dyeing Methods 0.000 claims description 5
- 230000015654 memory Effects 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Abstract
本发明涉及一种图元光栅化触发的图形处理器深度数据预取方法,本发明包括以下步骤:1)在图形渲染流水线的光栅化单元和Z Cache之间设置深度数据预取请求通路;2)光栅化单元每产生一个Tile,就根据Tile在深度帧缓冲区中的地址形成一个深度数据预取请求,并通过深度数据预取请求通路发送到Z Cache;3)由Z Cache通过已有的与DDR的访问接口实现深度数据的提前预取,同时,为每一个Z Cache TAG数据结构域增加一个访问一次标志OTT(Once Touching Tag);4)预取的深度数据进入Z Cache后,未被读取之前置OTT=0;当Z Cache中的深度数据被读取一次后,置OTT=1。本发明可保证深度数据预取有效性,能够提升深度测试时Z Cache访问命中率,降低深度测试延迟,最终达到提升图形绘制三角形通过能力和像素填充能力的目的。
Description
技术领域
本发明涉及计算机硬件技术领域,尤其涉及一种图元光栅化触发的图形处理器深度数据预取方法。
背景技术
3D图形处理与2D图形处理最显著的区别在于引入了深度的概念,使绘制结果产生了有层次的空间立体真实感受。为了最终能够正确显示位置重叠区域图形距离观察者最近的图元像素颜色,每一个像素的深度数据(Z值)都需要进行缓冲,以便进行实时深度测试来分辨当前正在绘制像素的深度值与已经绘制完成的像素深度值之间的前后遮挡关系。深度测试频繁的深度数据读写操作不但需要的存储器数据带宽大,而且还在很大程度上决定了图形处理器(Graphic Processing Unit)的像素填充性能。而深度测试频繁的显存读写操作需要的存储器数据带宽极大。举例来说,假设三维场景复杂度为15、像素Z值精度为32bit、屏幕分辨率为4096×2304、每秒绘制30帧,则仅从外部显存读取深度缓冲区数据需要的带宽达到16.98GB/s。假设70%的像素通过深度测试,则写外部显存中深度缓冲区所需要的数据带宽达到11.89GB/s,深度数据读写共需要28.87GB/s。我国目前还不掌握GDDR、HBM等高性能存储器技术,单路64bit DDR4-3200存储器的最大理论数据带宽也仅能达到25.6GB/S。可见,深度缓冲区访问性能是影响现代图形处理器性能的关键因素。
为了降低深度测试对片内存储资源和显存带宽的需求,研究人员提出Early-Z技术在进行像素染色前就对像素的可见性以一种粗粒度的方式进行提前测试,据ATI的测试结果,采用Early-Z技术进行提前深度测试能够提前捕捉到50%以上最终不会通过深度测试的像素点。即使这样,目前GPU像素填充性能普遍超过30G Pixel/S,所需要的深度测试能力依然对GPU片上Z Cache设计提出了很高的要求。
尤其是图形处理器深度数据预取策略,其涉及到的显存带宽利用率、3D图形绘制三角形通过能力和像素填充能力等多个方面的性能指标,最终影响GPU的整体工作效率,研究优化图形处理器深度数据预取策略对研制高性能GPU具有十分重要的理论意义和应用价值。
发明内容
本发明为解决背景技术中存在的上述技术问题,而提供一种基于图元光栅化触发的图形处理深度数据预取方法,通过图元光栅化过程中实时扫描到的片段块地址来触发ZCache的深度数据预取,同时为了适应不同实现中流水线处理延迟,为Z Cache数据块增加访问一次标志,保证深度数据预取有效性,能够提升深度测试时Z Cache访问命中率,降低深度测试延迟,最终达到提升图形绘制三角形通过能力和像素填充能力的目的。
本发明的技术解决方案是:本发明为一种基于图元光栅化触发的高效GPU深度数据预取方法,其特殊之处在于:该方法包括以下步骤:
1)在图形渲染流水线的光栅化单元和Z Cache之间设置深度数据预取请求通路;
2)光栅化单元每产生一个Tile,就根据Tile在深度帧缓冲区中的地址形成一个深度数据预取请求,并通过深度数据预取请求通路发送到Z Cache;
3)由Z Cache通过已有的与DDR的访问接口实现深度数据的提前预取,同时,为每一个Z Cache TAG数据结构域增加一个访问一次标志OTT(Once Touching Tag);
4)预取的深度数据进入Z Cache后,未被读取之前置OTT=0;当Z Cache中的深度数据被读取一次后,置OTT=1。
优选的,步骤3)的具体步骤如下:Z Cache在收到预取请求后,首先检查预取目标数据是否已经存在于Z Cache Data Array中,如果目标数据已经存在于Z Cache DataArray中,则不再向DDR发出深度数据访问请求;如果目标数据不存在于Z Cache DataArray中,则向DDR发出深度数据访问请求,以便预取的深度数据在其对应的像素片段Tile完成像素染色阶段处理和其它片段处理前进入Z Cache中。
优选的,步骤4)的具体步骤如下:每次需要进行Z Cache替换时,基于PLRU算法优先选择已经被访问的Cache数据块进行替换,保留OTT=0的Cache数据块,保证预取回ZCache中深度数据不会在使用前就被替换出去。
优选的,步骤4)中当OTT=1时,已经完成深度测试需要的深度数据访问。
本发明提供的一种图元光栅化触发的图形处理器深度数据预取方法,在现有图形渲染流水线的基础上,在光栅化单元和Z Cache之间增加专门的深度数据预取请求通路。在深度测试功能开启的情况下,且不考虑Early-Z等类似提前深度测试技术带来的层次化深度测试效果时,所有光栅化产生的像素片段必然都要进行深度测试。根据图形渲染流水线各阶段的先后关系,以及光栅化和深度测试的这种特性,本发明所提出的光栅化触发的图形处理器高效深度数据预取策略能够根据实际光栅化单元扫描到的图元像素片段Tile所覆盖的帧缓冲区像素区域,实时提前发出深度数据预取请求,实现了在片段处理单元进行深度测试前,提前将对应像素片段Tile所对应的深度数据预取到Z Cache中,从而达到隐藏存储器访问延迟、提升深度测试效率的目的。
附图说明
图1是本发明集成光栅化触发的深度数据预取策略的图形渲染流水线结构图;
图2是本发明增加OTT标志的Z Cache TAG数据结构图;
图3是本发明光栅化触发的深度数据预取策略工作流程图。
具体实施方式
无论物理架构是分离染色的还是统一染色的,GPU在逻辑上都遵循一套完整的图形处理流程,在实现时映射为图形处理流水线。对于GPU中深度测试功能来说,像素片段的深度数据由图元光栅化阶段产生,并在片段处理阶段根据不同的深度测试函数将每个像素片段的深度与帧缓冲区中对应位置像素的深度数据进行比较,最终决定该像素片段是否应该被写入帧缓冲区,即光栅化处理在前,深度测试在后。在深度测试功能开启的情况下,所有光栅化产生的像素片段必然都要进行深度测试。
一般地,GPU图形渲染流水线需要依次完成顶点着色、几何处理、光栅化、像素着色,经过片段处理后最终写入帧缓冲区。在此基础上,DPRT深度数据预取的工作机制如图1所示。
图元经过几何阶段处理后,被送入光栅化单元进行从图元到像素片段的转换,输出的像素片段格式可以根据不同设计进行选择,通常选择以像素片段块(Tile)为单位进行扫描输出,这样不但能够提升光栅化效率,而且更加符合Z Cache的数据缓冲特性,访存深度缓冲区效率也高。光栅化每产生一个Tile,就根据Tile在深度帧缓冲区中的地址形成一个深度数据预取请求发送到Z Cache,Z Cache收到预取请求后向DDR发出深度数据访问请求,预取的深度数据通常会在其对应的像素片段Tile完成像素染色阶段处理和其它片段处理前进入Z Cache中,从而实现隐藏像素片段Tile深度数据访问延迟的目的。
下面结合附图和具体实施例对本发明的技术方案做进一步详细描述。
参见图1,本发明的具体实施例的步骤如下:
1)在图形渲染流水线的光栅化单元和Z Cache之间设置深度数据预取请求通路;
2)光栅化单元每产生一个Tile,就根据Tile在深度帧缓冲区中的地址形成一个深度数据预取请求,并通过深度数据预取请求通路发送到Z Cache;
3)由Z Cache通过已有的与DDR的访问接口实现深度数据的提前预取,同时,为每一个Z Cache TAG数据结构域增加一个访问一次标志OTT(Once Touching Tag);
Z Cache在收到预取请求后,首先检查预取目标数据是否已经存在于ZCache DataArray中,如果目标数据已经存在于Z Cache Data Array中,则不再向DDR发出深度数据访问请求;如果目标数据不存在于Z Cache Data Array中,则向DDR发出深度数据访问请求,以便预取的深度数据在其对应的像素片段Tile完成像素染色阶段处理和其它片段处理前进入Z Cache中。
4)预取的深度数据进入Z Cache后,未被读取之前置OTT=0;当Z Cache中的深度数据被读取一次后,置OTT=1。
每次需要进行Z Cache替换时,基于PLRU算法优先选择已经被访问的Cache数据块(OTT=1时,已经完成深度测试需要的深度数据访问)进行替换,保留OTT=0的Cache数据块,保证预取回Z Cache中深度数据不会在使用前就被替换出去。
在不考虑Early-Z技术带来的层次化深度测试效果前提下,所有光栅化单元产生的像素片段Tile都必然要在片段处理单元从Z Cache中取出深度数据进行深度测试。对ZCache TAG数据结构进行了优化,为每一个Cache数据块Tag域增加一个访问一次标志OTT(Once Touching Tag),如图2所示。预取的深度数据进入Z Cache后,未被读取之前置OTT=0;当Z Cache中的深度数据被读取一次后,置OTT=1。每次需要进行Z Cache替换时,基于PLRU算法优先选择已经被访问的Cache数据块(OTT=1,已经完成深度测试需要的深度数据访问)进行替换,保留OTT=0的Cache数据块,从而实现了在访存效率较高的情况下,保证预取回Z Cache中深度数据不会在使用前就被替换出去,降低了Z Cache抖动概率和访问命中率。
参见图3,以4路组相连Z Cache结构的具体实施例来说明本发明的DPRT机制的工作流程。光栅化模块接收图元光栅化任务后,开始扫描并将当前像素Tile的坐标地址发送给Z Cache模块,触发深度预取动作。深度地址和请求产生模块将深度数据预取请求发送给仲裁模块。仲裁模块首先要测试本次预取的深度数据是否已经存在于Z Cache中,如果已经存在则撤销本次预取;否则就在通过第二级仲裁的情况下,基于PLRU替换算法和OTT标志位优先选择最近访问次数最少且OTT=1的Cache数据块进行替换,并将脏块写回DDR,将深度预取请求送给MMU,访问DDR中的深度缓冲区。由于前期已经为不命中数据准备好了空Cache块,当DDR返回预取的深度数据后,依次查找当前组中的空行,直至将该数据写入Z CacheDATA ARRAY中,同时更新Cache TAG。
最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (4)
1.一种图元光栅化触发的图形处理器深度数据预取方法,其特征在于:该方法包括以下步骤:
1)在图形渲染流水线的光栅化单元和Z Cache之间设置深度数据预取请求通路;
2)光栅化单元每产生一个Tile,就根据Tile在深度帧缓冲区中的地址形成一个深度数据预取请求,并通过深度数据预取请求通路发送到Z Cache;
3)由Z Cache通过已有的与DDR的访问接口实现深度数据的提前预取,同时,为每一个ZCache TAG数据结构域增加一个访问一次标志OTT;
4)预取的深度数据进入Z Cache后,未被读取之前置OTT=0;当Z Cache中的深度数据被读取一次后,置OTT=1。
2.根据权利要求1所述的图元光栅化触发的图形处理器深度数据预取方法,其特征在于:所述步骤3)的具体步骤如下:Z Cache在收到预取请求后,首先检查预取目标数据是否已经存在于Z Cache Data Array中,如果目标数据已经存在于Z Cache Data Array中,则不再向DDR发出深度数据访问请求;如果目标数据不存在于Z Cache Data Array中,则向DDR发出深度数据访问请求,以便预取的深度数据在其对应的像素片段Tile完成像素染色阶段处理和其它片段处理前进入Z Cache中。
3.根据权利要求1所述的图元光栅化触发的图形处理器深度数据预取方法,其特征在于:所述步骤4)的具体步骤如下:每次需要进行Z Cache替换时,基于PLRU算法优先选择已经被访问的Cache数据块进行替换,保留OTT=0的Cache数据块,保证预取回Z Cache中深度数据不会在使用前就被替换出去。
4.根据权利要求3所述的图元光栅化触发的图形处理器深度数据预取方法,其特征在于:所述步骤4)中当OTT=1时,已经完成深度测试需要的深度数据访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011397779.7A CN112734897B (zh) | 2020-12-05 | 2020-12-05 | 一种图元光栅化触发的图形处理器深度数据预取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011397779.7A CN112734897B (zh) | 2020-12-05 | 2020-12-05 | 一种图元光栅化触发的图形处理器深度数据预取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112734897A CN112734897A (zh) | 2021-04-30 |
CN112734897B true CN112734897B (zh) | 2024-04-02 |
Family
ID=75598380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011397779.7A Active CN112734897B (zh) | 2020-12-05 | 2020-12-05 | 一种图元光栅化触发的图形处理器深度数据预取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112734897B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023070291A1 (en) * | 2021-10-25 | 2023-05-04 | Shanghaitech University | Systems and methods for image rendering |
CN115035875B (zh) * | 2022-08-10 | 2022-11-15 | 武汉凌久微电子有限公司 | 一种三档优先级的gpu显示控制器预取显存方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101176119A (zh) * | 2005-03-21 | 2008-05-07 | 高通股份有限公司 | 平铺式预取和高速缓冲存储的深度缓冲器 |
US8325203B1 (en) * | 2007-08-15 | 2012-12-04 | Nvidia Corporation | Optimal caching for virtual coverage antialiasing |
CN106683036A (zh) * | 2016-12-12 | 2017-05-17 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向gpu高效绘制的帧缓冲区存储编码方法 |
CN107993184A (zh) * | 2017-11-24 | 2018-05-04 | 中国航空工业集团公司西安航空计算技术研究所 | 一种图形处理器深度值提前测试电路 |
CN108694688A (zh) * | 2017-04-07 | 2018-10-23 | 英特尔公司 | 用于在图形处理架构中管理数据偏置的设备和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8081182B2 (en) * | 2004-03-03 | 2011-12-20 | Qualcomm Incorporated | Depth buffer for rasterization pipeline |
KR20080014402A (ko) * | 2006-08-11 | 2008-02-14 | 삼성전자주식회사 | 컴퓨터 그래픽스 데이터 처리방법과 데이터 처리장치 |
-
2020
- 2020-12-05 CN CN202011397779.7A patent/CN112734897B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101176119A (zh) * | 2005-03-21 | 2008-05-07 | 高通股份有限公司 | 平铺式预取和高速缓冲存储的深度缓冲器 |
US8325203B1 (en) * | 2007-08-15 | 2012-12-04 | Nvidia Corporation | Optimal caching for virtual coverage antialiasing |
CN106683036A (zh) * | 2016-12-12 | 2017-05-17 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向gpu高效绘制的帧缓冲区存储编码方法 |
CN108694688A (zh) * | 2017-04-07 | 2018-10-23 | 英特尔公司 | 用于在图形处理架构中管理数据偏置的设备和方法 |
CN107993184A (zh) * | 2017-11-24 | 2018-05-04 | 中国航空工业集团公司西安航空计算技术研究所 | 一种图形处理器深度值提前测试电路 |
Non-Patent Citations (3)
Title |
---|
ZU1: An Efficient Early Zrange Test Unit;TONG SUN;IEEE;全文 * |
一种适用于嵌入式图形处理器的多端口纹理Cache的设计;许强;陈杰;刘建;王云;胡哲琨;;微电子学与计算机(第11期);全文 * |
应用于DSP中CPU的八级流水线的研究与设计;陈宪;黄嵩人;;电子世界(第24期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112734897A (zh) | 2021-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11954759B2 (en) | Tile-based graphics | |
US8089486B2 (en) | Tiled prefetched and cached depth buffer | |
US8704826B1 (en) | Primitive re-ordering between world-space and screen-space pipelines with buffer limited processing | |
US10650580B2 (en) | Graphics processing | |
US7898551B2 (en) | Systems and methods for performing a bank swizzle operation to reduce bank collisions | |
CN112734897B (zh) | 一种图元光栅化触发的图形处理器深度数据预取方法 | |
US7348988B2 (en) | Texture cache control using an adaptive missing data table in a multiple cache computer graphics environment | |
US9239795B2 (en) | Efficient cache management in a tiled architecture | |
WO2005086096A2 (en) | Embedded system with 3d graphics core and local pixel buffer | |
US6587113B1 (en) | Texture caching with change of update rules at line end | |
US7061500B1 (en) | Direct-mapped texture caching with concise tags | |
US6744438B1 (en) | Texture caching with background preloading | |
US20080276067A1 (en) | Method and Apparatus for Page Table Pre-Fetching in Zero Frame Display Channel | |
US7809904B1 (en) | Page preloading using page characterization data | |
US6778179B2 (en) | External dirty tag bits for 3D-RAM SRAM | |
US10824569B2 (en) | Data processing systems | |
US7050061B1 (en) | Autonomous address translation in graphic subsystem | |
Seiler et al. | Compacted cpu/gpu data compression via modified virtual address translation | |
US8081182B2 (en) | Depth buffer for rasterization pipeline | |
US11294817B2 (en) | Concurrent cache lookups using partial identifiers | |
US8639892B1 (en) | Selectively inhibit page usage bit updates | |
Chung et al. | H-Buffer: An Efficient History-Based and Overflow Sharing Transparent Fragment Storage Method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |