来自片段着色程序的采样掩膜的控制的制作方法_3

文档序号:9565218阅读:来源:国知局
不同组数据。线程组内的所有线程执行相同的指令。在另一个 实施例中,SM 340实现SMT(单指令,多线程)结构,其中,其中线程组中的每个线程配置 为处理基于相同组指令的不同组数据,但是线程组中的个别线程在执行期间允许偏离。换 句话说,当线程组的一个指令从执行中被调离,线程组中的一些线程仍然有效,从而执行指 令,而线程组中的其他线程失去效力,从而表现为未操作(NOP)而不是执行指令。SM 340将 在下面以及图4中更加详细阐述。
[0051] MMU 390提供在GPC 250和分区单元280之间的接口。 MMU 390可以将虚拟地址转换成物理地址、存储保护和内存请求仲裁。在一个实施例 中,MMU 390提供一个或多个转换后备缓冲器(TLBs),用于改进虚拟地址到存储器204中物 理地址的转换。
[0052] 图3B阐述了根据一个实施例的、图2中PPU 200的分区单元280。如图3B所示, 分区单元280包括光栅操作(ROP)单元350、第二级(L2)高速缓存360、存储器接口 370以 及L2交叉开关(XBar) 365。存储器接口 370耦合至存储器204。存储器接口 370可以实现 16、32、64、128位数据总线等,用于高速数据传输。在一个实施例中,PPU 200包括U个存储 器接口 370、每个分区单元280 -个存储器接口 370,其中每个分区但280与相应的存储器 设备204相连。例如,PPU 200可以连接直到U个存储器设备204,例如,同步动态随机存取 存储器,版本5,双数据速率(⑶DR5SDRAM)。在一个实施例中,存储器接口 370实现DRAM接 口并且U等于6。
[0053] 在一个实施例中,PHJ实现了多级存储器层次。存储器204设置在耦合至PPU 200 的SDRAM内的片外。来自存储器204的数据可以被取得并储存在L2高速缓存360,L2高速 缓存360位于片内并且在不同的GPC间共享。可以看到,每个分区单元280包括与对应的 存储器设备204关联的L2高速缓存360的一部分。然后较低级别的高速缓存可以在GPC 250的不同单元内实现。例如,每个SM 340可以实现第一级(LI)高速缓存。Ll高速缓存 是用于特定SM 340的专用存储器。来自L2高速缓存360的数据可以取得并储存在每个Ll 高速缓存中,用于在SM 340的功能性单元中进行处理。L2高速缓存360耦合至存储器接口 370 和 XBar270〇
[0054] ROP单元350包括ROP管理器355、颜色ROP (CROP)单元352以及Z ROP (ZROP)单 元354。CROP单元352执行涉及像素颜色的光栅操作,例如彩色压缩、像素混合等。ZROP单 元354同光栅引擎325 -起实现深度测试。ZROP单元354接收来自光栅引擎325的剔除 引擎的与像素片段关联的采样位置的深度。ZROP单元354针对与片段相关联的采样位置 测试与深度缓冲器中的对应深度相对的深度。如果片段通过针对采样位置的深度测试,则 ZROP单元354更新深度缓冲器并将深度测试结构传送至光栅引擎325。ROP管理器355控 制ROP单元350的操作。应领会到,分区单元280的数目可能与GPC 250的数目不同,因此 每个ROP单元350可以耦合至每个GPC 250。因此,ROP管理器355监测从不同的GPC 250 接收的数据包并且确定其被由ROP单元350生成的结果的传送到哪个GPC 250。CROP单元 352和ZROP单元354通过L2XBar365耦合至L2高速缓存360。
[0055] 图4示出了根据一个实施例的图3A中的流式多处理器340。如图4所示,SM 340 包括指令高速缓存405、一个或多个调度单元410、寄存器文件420、一个或多个处理核450、 一个或多个特殊功能单元(SFU) 452、一个或多个加载/储存单元(LSU) 454、互连网480以 及共用存储器/LI高速缓存470。
[0056] 如上面所描述,工作分配单元225分配在PPU 200的GPC250上执行的任务。任 务被分配给GPC 250内的特定TPC 320,如果任务与着色器程序相关,则任务会分配给SM 340。调度单元410接收来自工作分配单元225的任务并且管理用于一个或多个分配到SM 340的线程组(即warps)的指令调度。调度单元410在并行线程组中调度线程,其中每个 线程组叫做一个warp。在一个实施例中,每个warp包括32个线程。调度单元410可以管 理多个不同的warp,在每个时钟周期内,调度用于执行的warps,然后将来自多个不同warp 的指令分配到不同的功能单元(即核心350、SFU352以及LSU 354)。
[0057] 在一个实施例中,每个调度单元410包括一个或多个指令分派单元415。每个分派 单元415配置为传送指令至一个或多个功能单元。在图4所示的实施例中,调度单元410 包括两个分派单元,其使得在每个时钟周期期间来自相同wrap的两个不同的指令能够被 分派。在替代实施例中,每个调度单元410可以包括单个分派单元415或者附加的分配单 元 415。
[0058] 每个SM 340包括寄存器文件420,为SM 340的功能单元提供一组寄存器。在一个 实施例中,寄存器文件420在每个功能单元之间划分,以便每个功能单元都分配到寄存器 文件420的专用部分。在另一个实施例中,寄存器文件420在由SM 340执行的不同warp 间划分。寄存器文件420向与功能单元的数据通路连接的操作数提供暂存。
[0059] 每个SM 340包括L个处理核450。在一个实施例中,SM 340包括大量(例如,192 等)不同的处理核450。每个处理核450可以包括全管线化、单精度处理单元,该单元包括浮 点算法逻辑单元和整数算法逻辑单元。处理核450也可以包括双精度处理单元,该单元包 括浮点算法逻辑单元。在一个实施例中,浮点算法逻辑单元执行浮点算法的IEEE754-2008 标准。每个SM 340还包括执行特殊功能(例如,像素混合操作等)的M个SFU 452,以及在 共享存储器/LI高速缓存470和寄存器文件420间执行加载和存储操作的N个LSU 454。 在一个实施例中,SM 340包括192个核450、32个SFU 452以及32个LSU 454。
[0060] 每个SM 340包括互连网480,其连接每个功能单元至寄存器文件420和共享存储 器/LI高速缓存470。在一个实施例中,互连网480是可以配置为将任意功能单元连接到寄 存器文件420中的任意寄存表或共享存储器/LI高速缓存470中的存储位置的交叉开关。 [0061 ] 共享存储器/LI高速缓存470是片上存储器阵列,在一个实施例中,可以配置为共 享存储器或Ll高速缓存或二者结合,根据应用需求。例如,共享存储器/LI高速缓存470 可以包括64kB的存储能力。共享存储器/LI高速缓存470可以配置为64kB共享存储器或 者Ll高速缓存或者二者结合,例如,16kB Ll高速缓存以及48kB共享存储器。
[0062] 上面描述的PPU 200可以配置为执行比通常CPU快得多的高度并行计算。并行计 算在图形处理、数据压缩、识别、流处理运算等中具有优势。
[0063] 在一个实施例中,PHJ 200包括图形处理器(GPU)。PPU 200配置为接收指定着色 器程序处理图形数据的指令。图形数据可以限定为一组图元,例如点、线、三角形、四边形、 三角形带等。典型地,图元包括指明图元(例如,在模型-空间坐标系统中)的许多顶点以 及与图元的每个顶点关联的属性的数据。PPU 200可以配置为处理图元生成帧缓冲(即用 于每个显示像素的像素数据)。
[0064] 应用程序将场景(例如,顶点和属性的合集)的模型数据写入存储器,例如系统存 储器或存储器204。模型数据限定了在显示器上可见的每个对象。然后应用程序向驱动核 调用API,请求渲染并显示模型数据。驱动核读取模型数据并向一个或多个流写入指令以执 行处理模型数据的操作。指令可以涉及PPU 200的SM 340上要执行的不同的着色器程序, 包括一个或多个顶点着色器、外壳着色器、区域着色器、几何着色器和像素着色器。例如,一 个或多个SM 340可以配置为执行顶点着色器程序,来处理模型数据限定的大量顶点。在一 个实施例中,不同的SM 340可以配置为同时执行不同的着色器程序。例如,SM 340的第一 子集可以配置为执行顶点着色器程序,而SM 340的第二子集可以配置为执行像素着色器 程序。SM 340的第一子集处理顶点数据生成经过处理的顶点数据并且将经过处理的顶点数 据写入L2高速缓存360和/或存储器204。在经过处理的顶点数据被光栅化(即在场景空 间内将三维数据转换成二维数据)生成片段数据后,SM 340的第二子集执行像素着色,生 成经过处理的片段数据,然后与其他经过处理的片段数据混合,并写入存储器204中的帧 缓冲。顶点着色器程序和像素着色器程序可以同时执行,以管线化的方式处理来自相同场 景的不同数据,直到场景的所有模型数据都被渲染进入帧缓冲。然后,帧缓冲中的内容被传 送到显示控制器,显示在显示设备上。
[0065] PHJ 200可以包含在台式电脑、笔记本电脑、平板电脑、智能手机(例如,无线、手 持设备)、个人数字助理(PDA)、数码相机、手持电子设备等中。在一个实施例中,PPU 200嵌 入单半导体衬底中。在另一个实施例中,PPU 200和一个或多个其他逻辑单元一起包含在片 上系统(SoC)中,其他逻辑单元例如精简指令集计算机(RISC) CPU、存储器管理单元(MMU)、 数模转换器(DAC)等。
[0066] 在一个实施例中,PPU 200可以包含在显卡中,显卡包括一个或多个存储器设备 204,例如⑶DR5SDRAM。显卡可以配置为与台式电脑主板上的具有PCIe槽的接口,包括例如 北桥芯片集和南桥芯片集。然而在另一个实施例中,PPU 200可以是一个包含在主板的芯 片集(即北桥)中的集成图形处理器(iGPU)。
[0067] 图5示出了根据一个实施例的、包括图2中PPU 200的片上系统(SoC) 500。如图 5所示,如上所述,SoC 500包括CPU 550和PPU 200。SoC 500也可以包括系统总线202, 使得能够在SoC 500的不同组件间进行通信。CPU 500以及PPU 200生成的内存请求可以 通过MMU系统590发送,MMU系统590由SoC 500的多个组件共享。SoC 500也可以包括耦 合至一个或多个存储器设备204的存储器接口 595。存储器接口 595可以实现例如DRAM接 □ 〇
[0068] 虽然没有明确示出,但是SoC 500可以包括图5中示出的组件之外的其他组件。例 如,SoC 500可以包括多个PPU 200 (
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1