CN105550979A - 一种高数据通量纹理Cache层次结构 - Google Patents
一种高数据通量纹理Cache层次结构 Download PDFInfo
- Publication number
- CN105550979A CN105550979A CN201510927073.XA CN201510927073A CN105550979A CN 105550979 A CN105550979 A CN 105550979A CN 201510927073 A CN201510927073 A CN 201510927073A CN 105550979 A CN105550979 A CN 105550979A
- Authority
- CN
- China
- Prior art keywords
- texture
- cache
- level cache
- decompression unit
- data
- 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.)
- Pending
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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明涉及一种高数据通量纹理Cache层次结构,该结构包括两组多端口、非阻塞、流水线的纹理一级Cache、纹理滤波单元、纹理解压缩单元和流水线纹理二级Cache;纹理一级Cache与纹理滤波单元相连,用于提供纹素给纹理滤波单元进行纹理滤波;纹理一级Cache还有一端与纹理解压缩单元相连,用于当一级Cache发生缺失时通过纹理二级Cache和纹理解压缩单元获取更新数据;纹理解压缩单元一端与纹理一级Cache相连,另一端与纹理二级Cache相连,用于解压缩纹理二级Cache的数据;所述纹理二级Cache与纹理解压缩单元相连。本发明的纹理Cache数据吞吐率高,延迟小,并发性强,适用于多纹理流水线的处理。
Description
技术领域
本发明涉及计算机硬件技术领域,尤其涉及一种高数据通量纹理Cache结构。
背景技术
3D图形绘制的纹理映射功能存在大量需要被贴图的片段,每个片段的纹理过滤时会发出多个纹理存储器访问请求,纹理存储器需要为纹理过滤单元提供“高带宽、低延迟”的纹理数据,而3D图形绘制中大量的纹理数据需要存储在片外的DDR存储器上,因此需要使用高数据通量的cache完成数据的获取。
发明内容
本发明提供了一种高数据通量纹理Cache层次结构,解决了图形处理器内部存储带宽瓶颈问题。
本发明的技术解决方案是:本发明为一种高数据通量纹理Cache层次结构,其特殊之处在于:该结构包括两组多端口、非阻塞、流水线的纹理一级Cache、纹理滤波单元、纹理解压缩单元和流水线纹理二级Cache;所述纹理一级Cache与纹理滤波单元相连,用于提供纹素给纹理滤波单元进行纹理滤波;纹理一级Cache还有一端与纹理解压缩单元相连,用于当一级Cache发生缺失时通过纹理二级Cache和纹理解压缩单元获取更新数据;所述纹理解压缩单元一端与纹理一级Cache相连,另一端与纹理二级Cache相连,用于解压缩纹理二级Cache的数据;所述纹理二级Cache与纹理解压缩单元相连。
上述纹理一级Cache为多Bank多端口Cache,可同时处理纹理地址产生器并发的多组纹理请求;
上述纹理一级Cache为非阻塞Cache,纹理地址产生器的某个纹理请求发生缺失后,纹理一级Cache可以继续取后续纹理地址产生器的纹理请求;
上述纹理一级Cache为流水线Cache,发生命中时能够每时钟周期完成一组纹理访问请求的访问。
上述的纹理二级Cache为流水线Cache,发生命中时每个时钟周期可以完成一次纹理请求的处理;所述纹理二级Cache内部存储压缩格式的纹理,根据纹理一级Cache的更新请求将压缩纹理通过解压缩模块解压缩后更新纹理一级Cache。
纹理存储访问是3D图形处理中对于DDR带宽需求巨大的访问。采用两级纹理Cache可以有效地降低3D图形处理对于DDR带宽的需求。图形处理器中设置多个并行的纹理单元可以极大地提高纹理贴图速度,多个纹理单元需要并行读取多个纹理数据,对应的纹理Cache系统应该可以一次提供多个数据访问,多端口多Bank的Cache设计能够满足多个纹理请求同时访问的需求。纹理贴图时多个纹理贴图之间没有相关性,某个纹理访问纹理Cache时发生缺失的更新等待期间纹理处理单元可以处理后续的纹理,将Cache数据的更新和纹理的请求并行起来,所以Cache应该是非阻塞的。
本发明为了进一步减少存储带宽需求,纹理数据可以采用压缩格式存储在DDR中。由于纹理映射过程对于每个三角形仅执行一次,所以可以使用有损压缩。S3TC压缩算法将纹理图像划分为4*4的Tiles,压缩算法针对每个Tile进行。将一个Tile的16个颜色值用4个参考值(其中两个需要存储,另外两个通过插值获得)和16个2位的索引值标志。因此本发明的具有以下优点:
1、本发明内部集成一级Cache和二级Cache,一级Cache又根据纹理需求划分为多个子Cache。一级Cache采用多Bank、多端口、非阻塞、流水线设计,能够同时为多个并发的纹理流水线提供多组纹理数据。
2、本发明的二级Cache采用流水线设计,内部采用压缩存储,提高总体带宽。
3、本发明的层次结构的纹理Cache数据吞吐率高,延迟小,并发性强,适用于多纹理流水线的处理。
附图说明:
图1是本发明的结构框图;
图2是本发明中纹理一级Cache的结构框图;
图3是本发明中纹理二级Cache的结构框图;
图4是本发明中纹理解压缩的结构框图。
具体实施方式:
下面结合附图和具体实施例,对本发明的技术方案进行清楚、完整地表述。显然,所表述的实施例仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提所获得的所有其他实施例,都属于本发明的保护范围。
参见图1,本发明的具体实施例中,该结构包括两组多端口、非阻塞、流水线的纹理一级Cache2、纹理滤波单元3、纹理解压缩单元4和流水线纹理二级Cache5,其外部分别与纹理地址处理器1和外部纹理DDR缓冲区6连接;其中:
纹理一级Cache2一端与纹理地址处理器1相连,用于接收纹理地址处理器产生的并行的多个纹理访问请求,另一端与纹理滤波单元3相连,用于提供纹素给纹理滤波单元进行纹理滤波;纹理一级Cache还有一端与纹理解压缩单元4相连,用于当一级Cache发生缺失时通过纹理二级Cache和纹理解压缩单元4获取更新数据;
纹理解压缩单元4一端与纹理一级Cache1相连,另一端与纹理二级Cache5相连,用于解压缩纹理二级Cache的数据;
纹理二级Cache5一端与纹理解压缩单元4相连,另一端与外部纹理DDR缓冲区6相连,用于当纹理一级Cache发生缺失时从外部DDR中更新纹理图像到一级Cache。
参见图2,纹理一级Cache设计为多端口、多Bank、非阻塞、流水线的Cache。分为三个部分:输入请求冲突检测及请求合并划分2.1、多端口多Bank的纹理一级Cache核2.2、非阻塞单元2.3。其中输入请求冲突检测及合并划分模块负责将纹理地址计算单元送来的纹理请求进行合并,并检测纹素地址的Bank冲突,一次将不冲突的最多9个纹素请求送到多Bank的纹理一级Cache核进行访问。纹理一级Cache核是标准的多端口、多Bank、流水线Cache,最多可以同时接收9个请求并输出9组数据。非阻塞单元用于非阻塞请求及数据缓冲、更新请求合并、缺失更新以及输出数据按照纹理访问特性进行组装,并将结果送到纹理过滤单元。
请求合并冲突检测单元接收来自纹理地址产生器的多个请求,根据纹理过滤模式和地址冲突检测结果将一组请求分成多组不冲突的请求发送给纹理一级Cache核。纹理一级Cache接收请求合并前的16个请求地址及相关信息送到非阻塞单元存储起来,然后将通过请求合并和冲突检测处理过的多个纹素访问请求送到CacheCore的9组Tag中进行命中比较,9端口Cache复制9份Tag存储器,在进行命中判断时分别独立进行,当存在某个端口的纹素命中时,取出相应命中数据送非阻塞单元的相应纹素位置,当某个端口的纹素缺失时,通知非阻塞单元该纹素缺失,由非阻塞单元启动更新逻辑。
纹理一级Cache的非阻塞通过MSHR(缺失信息状态保持寄存器)实现,由于纹理一级Cache为多端口多Bank设计,所以为每个请求保存一个MSHR寄存器,不仅保存其请求编号、请求地址也保存请求对应的返回纹素数据及数据有效信号等用于数据组装。在MSHR更新期间,只要还有空闲的MSHR则纹理一级Cache可以继续接收纹理地址生成单元纹理请求,如果后续请求的地址全部命中,则从纹理一级Cache取出并送纹理流水线单元进行处理;否则,如果后续的纹理请求也发生缺失,则缺失地址与MSHR中已经发生缺失的地址合并进行更新,并将当后续请求请求送入另外空闲的MSHR等候处理。当MSHR满后,再发生缺失时纹理流水线必须暂停,等待有纹理缺失更新完成。
参见图3,纹理二级Cache为标准的流水线只读Cache,为两个纹理一级Cache所共享。当纹理一级Cache发生缺失进行更新时读取纹理二级Cache进行命中判断,如果命中则返回纹理一级Cache所需数据,否则进行纹理二级Cache的更新。纹理二级Cache内部包含请求寄存器5.1、标志存储器5.2、数据存储器5.3、命中判断逻辑5.4和缺失更新逻辑5.5。纹理二级Cache为单端口、单Bank4路相联设计,当两个纹理一级Cache同时存在更新请求时,先处理纹理一级Cache0的请求,之后再处理纹理一级Cache1的请求。
为了进一步减少纹理方寸对DDR存储带宽的需求,纹理可以采用压缩格式存储在DDR中。由于纹理映射过程对于每个三角形仅执行一次,所以可以使用有损压缩。S3TC的标准压缩算法将4*4的Tile纹理数据从512bits压缩至96bits,纹理压缩过程是在图形处理器外执行的,图形处理器只需要在使用纹理时进行解压缩即可。
参见图4,DDR来的96bit数据,可以分为3个部分,前32bit为一个参考数据、第二个32bits为第二个参考数据,最后一个32bits存储了4*4的Tile中各个像素对于参考数据的索引值。解码时,先将前两个32bits数据送入解码参考值寄存器4.1,将第三个32bits存入索引值列表寄存器4.2中,然后通过参考值插值器4.3和4.4插值出第三个和第四个参考值并存储到参考值寄存器中。最后使用索引值列表寄存器的索引通过多路选择器4.5选择合适的参考值作为当前像素值送到输出缓存器4.6中完成解码。
最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (5)
1.一种高数据通量纹理Cache层次结构,其特征在于:该结构包括两组多端口、非阻塞、流水线的纹理一级Cache、纹理滤波单元、纹理解压缩单元和流水线纹理二级Cache;所述纹理一级Cache与纹理滤波单元相连,用于提供纹素给纹理滤波单元进行纹理滤波;纹理一级Cache还有一端与纹理解压缩单元相连,用于当一级Cache发生缺失时通过纹理二级Cache和纹理解压缩单元获取更新数据;所述纹理解压缩单元一端与纹理一级Cache相连,另一端与纹理二级Cache相连,用于解压缩纹理二级Cache的数据;所述纹理二级Cache与纹理解压缩单元相连。
2.根据权利要求1所述的高数据通量纹理Cache层次结构,其特征在于:所述纹理一级Cache为多Bank多端口Cache,可同时处理纹理地址产生器并发的多组纹理请求。
3.根据权利要求1所述的高数据通量纹理Cache层次结构,其特征在于:所述纹理一级Cache为非阻塞Cache,纹理地址产生器的某个纹理请求发生缺失后,纹理一级Cache可以继续取后续纹理地址产生器的纹理请求。
4.根据权利要求1所述的高数据通量纹理Cache层次结构,其特征在于:所述纹理一级Cache为流水线Cache,发生命中时能够每时钟周期完成一组纹理访问请求的访问。
5.根据权利要求1所述的高数据通量纹理Cache层次结构,其特征在于:所述的纹理二级Cache为流水线Cache,发生命中时每个时钟周期可以完成一次纹理请求的处理;所述纹理二级Cache内部存储压缩格式的纹理,根据纹理一级Cache的更新请求将压缩纹理通过解压缩模块解压缩后更新纹理一级Cache。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510927073.XA CN105550979A (zh) | 2015-12-11 | 2015-12-11 | 一种高数据通量纹理Cache层次结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510927073.XA CN105550979A (zh) | 2015-12-11 | 2015-12-11 | 一种高数据通量纹理Cache层次结构 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105550979A true CN105550979A (zh) | 2016-05-04 |
Family
ID=55830155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510927073.XA Pending CN105550979A (zh) | 2015-12-11 | 2015-12-11 | 一种高数据通量纹理Cache层次结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105550979A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106651743A (zh) * | 2016-12-12 | 2017-05-10 | 中国航空工业集团公司西安航空计算技术研究所 | 一种支持聚散功能的统一染色阵列lsu结构 |
CN106683158A (zh) * | 2016-12-12 | 2017-05-17 | 中国航空工业集团公司西安航空计算技术研究所 | 一种GPU纹理映射非阻塞存储Cache的建模结构 |
CN108022269A (zh) * | 2017-11-24 | 2018-05-11 | 中国航空工业集团公司西安航空计算技术研究所 | 一种GPU压缩纹理存储Cache的建模结构 |
CN110930493A (zh) * | 2019-11-21 | 2020-03-27 | 中国航空工业集团公司西安航空计算技术研究所 | 一种gpu纹素并行获取方法 |
CN114637609A (zh) * | 2022-05-20 | 2022-06-17 | 沐曦集成电路(上海)有限公司 | 基于冲突检测的gpu的数据获取系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100027686A1 (en) * | 2006-12-18 | 2010-02-04 | Koninklijke Philips Electronics N.V. | Image compression and decompression |
CN101784994A (zh) * | 2007-08-16 | 2010-07-21 | 国际商业机器公司 | 高速缓存分区分配 |
CN103077130A (zh) * | 2012-12-31 | 2013-05-01 | 上海算芯微电子有限公司 | 信息处理方法及装置 |
CN103077129A (zh) * | 2012-12-31 | 2013-05-01 | 上海算芯微电子有限公司 | 信息处理方法与装置 |
CN103399824A (zh) * | 2013-07-17 | 2013-11-20 | 北京航空航天大学 | 一种计算机处理器中高速缓存中缓存不命中的状态保持方法与装置 |
-
2015
- 2015-12-11 CN CN201510927073.XA patent/CN105550979A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100027686A1 (en) * | 2006-12-18 | 2010-02-04 | Koninklijke Philips Electronics N.V. | Image compression and decompression |
CN101784994A (zh) * | 2007-08-16 | 2010-07-21 | 国际商业机器公司 | 高速缓存分区分配 |
CN103077130A (zh) * | 2012-12-31 | 2013-05-01 | 上海算芯微电子有限公司 | 信息处理方法及装置 |
CN103077129A (zh) * | 2012-12-31 | 2013-05-01 | 上海算芯微电子有限公司 | 信息处理方法与装置 |
CN103399824A (zh) * | 2013-07-17 | 2013-11-20 | 北京航空航天大学 | 一种计算机处理器中高速缓存中缓存不命中的状态保持方法与装置 |
Non-Patent Citations (2)
Title |
---|
孟锐: "处理器中非阻塞 cache 技术的研究", 《电子设计工程》 * |
程龙等: "一种纹理映射算法的FPGA实现", 《小型微型计算机系统》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106651743A (zh) * | 2016-12-12 | 2017-05-10 | 中国航空工业集团公司西安航空计算技术研究所 | 一种支持聚散功能的统一染色阵列lsu结构 |
CN106683158A (zh) * | 2016-12-12 | 2017-05-17 | 中国航空工业集团公司西安航空计算技术研究所 | 一种GPU纹理映射非阻塞存储Cache的建模结构 |
CN106651743B (zh) * | 2016-12-12 | 2020-01-10 | 中国航空工业集团公司西安航空计算技术研究所 | 一种支持聚散功能的统一染色阵列lsu结构 |
CN106683158B (zh) * | 2016-12-12 | 2020-06-09 | 中国航空工业集团公司西安航空计算技术研究所 | 一种GPU纹理映射非阻塞存储Cache的建模系统 |
CN108022269A (zh) * | 2017-11-24 | 2018-05-11 | 中国航空工业集团公司西安航空计算技术研究所 | 一种GPU压缩纹理存储Cache的建模结构 |
CN110930493A (zh) * | 2019-11-21 | 2020-03-27 | 中国航空工业集团公司西安航空计算技术研究所 | 一种gpu纹素并行获取方法 |
CN114637609A (zh) * | 2022-05-20 | 2022-06-17 | 沐曦集成电路(上海)有限公司 | 基于冲突检测的gpu的数据获取系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10706101B2 (en) | Bucketized hash tables with remap entries | |
CN106683158B (zh) | 一种GPU纹理映射非阻塞存储Cache的建模系统 | |
CN107154012B (zh) | 图形处理器及其操作方法 | |
US8244984B1 (en) | System and method for cleaning dirty data in an intermediate cache using a data class dependent eviction policy | |
US8700862B2 (en) | Compression status bit cache and backing store | |
CN105550979A (zh) | 一种高数据通量纹理Cache层次结构 | |
US8949541B2 (en) | Techniques for evicting dirty data from a cache using a notification sorter and count thresholds | |
US8060700B1 (en) | System, method and frame buffer logic for evicting dirty data from a cache using counters and data types | |
US9304933B2 (en) | Techniques to request stored data from a memory | |
US10032246B2 (en) | Approach to caching decoded texture data with variable dimensions | |
US9798543B2 (en) | Fast mapping table register file allocation algorithm for SIMT processors | |
US20090300293A1 (en) | Dynamically Partitionable Cache | |
US8341358B1 (en) | System and method for cleaning dirty data in a cache via frame buffer logic | |
CN115809028B (zh) | 一种缓存数据替换方法、装置、图形处理系统及电子设备 | |
US9934145B2 (en) | Organizing memory to optimize memory accesses of compressed data | |
CN115794673A (zh) | 系统级芯片non-Cacheable数据的访问方法、装置及电子设备 | |
US10402323B2 (en) | Organizing memory to optimize memory accesses of compressed data | |
US20140244939A1 (en) | Texture cache memory system of non-blocking for texture mapping pipeline and operation method of texture cache memory | |
CN115794675B (zh) | 写数据方法、装置、图形处理系统、电子组件及电子设备 | |
US20140013054A1 (en) | Storing data structures in cache | |
US8307165B1 (en) | Sorting requests to the DRAM for high page locality | |
WO2020237409A1 (en) | Technologies for memory-efficient key-value lookup | |
US8375163B1 (en) | Supporting late DRAM bank hits | |
CN109388584A (zh) | 一种透过不同映址空间实现弹性且快速存取硬件内存队列方法 | |
CN115809207B (zh) | Cache中地址标记方法、装置、图形处理系统及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160504 |
|
RJ01 | Rejection of invention patent application after publication |