Directx11教程(14) D3D11管线(2)

简介: 下面我们来了解一些GPU memory的知识,主要参考资料:http://fgiesen.wordpress.com/0211/07/02/a-trip-through-the-graphics-pipeline-2011-part-2      【注:请参考另一篇日志:2012-11-13:http://www.

下面我们来了解一些GPU memory的知识,主要参考资料:http://fgiesen.wordpress.com/0211/07/02/a-trip-through-the-graphics-pipeline-2011-part-2

     【注:请参考另一篇日志:2012-11-13:http://www.cnblogs.com/mikewolf2002/archive/2012/11/13/2768804.html

   下面我们看下memory 如何与GPU和 host连接,了解video memory的工作flow:

       GPU中一些快速的client,比如Depth block,color block,texture block等都是直接和MC连接,而一些数据量不是很大的block,比如command processor(CP)要经过hub,然后再到传到相应的MC(Memory controller)。

     在hub中,也许有VM L2, 会进行一些page table的查找,之后请求被路由到相应的MC,MC中主要包括client interface, VM L1, arb等模块。Client infterface会和不同的client打交道,然后把它们传递到VM L1,进行page table的查找,最后进过ARB仲裁,进入到相应的GDDR中。GPU的MC通常都是32bit的,而DDR3的MC通常是64位,我们可以通过下面公式计算得到gpu的memory带宽:mclk * datarate* channelwidth*channel number/8/1000, 简化即为:mclk*4*32*channel number/8/1000, 假设显卡有12 个mc channel,则memory带宽为:1375*4*12*32/8/1000=264GB/s

clip_image010

      其它的一些PCIE设备和主机,都是通过PCIE总线,然后进入MMU(内存管理单元),再进入hub,这儿MMU是一个总称,在不同实现中,可能MMU包括很多block。

    GPU和主机以及其它设备的交互都是通过PCIE总线进行的,GPU和主机之间通常使用PCIE2.0 16 lane(最新的显卡使用PCIE3.0), 上行、下行都达到了8GB/s,其它慢速设备,比如display可能只需要4lane就够了。

PCIE的详细介绍见:http://www.cnblogs.com/mikewolf2002/archive/2012/03/20/2408389.html

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
缓存
《OpenGL编程指南(原书第9版)》——2.2 OpenGL的可编程管线
本节书摘来自华章计算机《OpenGL编程指南(原书第9版)》一书中的第2章,第2.2节,作者:(美)约翰·克赛尼希(John Kessenich)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1936 0
Directx11教程38 纹理映射(8)
上篇日志中,我们用纹理和光照颜色调制的方式得到最终颜色,本章我们尝试用纹理采样的颜色,直接做为材质的漫反射系数Kd,并用它来做光照计算,最后再做个gamma校正,如果不做的话,效果会偏亮。      lighttex.
846 0
|
存储 索引
Directx11教程39 纹理映射(9)
在myTutorialD3D11_32中,我们在PlaneModelClass中增加一个纹理TextureClass* m_Texture;读入一个grass的纹理,程序执行后的效果如下: 完整的代码请参考: 工程文件myTutorialD3D11_32 代码下载: http://files.
927 0
|
测试技术
Directx11教程(18) D3D11管线(7)
光栅化阶段(RS)之后,将进入PS/OM阶段。 参考外文资料:http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-7/ 大致的管线流程应该是这样的:       RS光栅化的fragment达到64或者32(一个wave或者warp)后,PS调度模块会产生一个新的wave或者warp,并把它们传给PS shader阶段,PS shader得到调度信息后,会从video memory中取得PS code,执行shader 代码。
989 0
|
C++ 索引 调度
Directx11教程(15) D3D11管线(4)
本章我们首先了解一下D3D11中的逻辑管线,认识一下管线中每个stage的含义。 参考资料:http://fgiesen.wordpress.com/2011/07/01/a-trip-through-the-graphics-pipeline-2011-part-3/ D3D11逻辑管线如下图所示: 首先,我们来学习一下每个stage的名字含义,在后面章节学习它们的细节功能: IA:input assembler,输入装配阶段,主要是从内存中读顶点和索引数据。
1141 0
|
算法 C++
Directx11教程(17) D3D11管线(6)
VS shader输出clip空间的顶点位置及参数信息(比如颜色)到一个FIFO中,之后PA(primitive assembly)会从该FIFO中取得顶点位置信息,并根据IA传来的primitive信息,把单独的顶点装配成点、线或者三角形。
1085 0
Directx教程(25) 简单的光照模型(4)
在本篇日志中,我们尝试用不带衰减的点光源来计算漫反射颜色。     前面的三个工程,我们都用的是方向光源(directional light),它的特点是没有光源位置或者说光源位置位于无穷远处,且光线在各个方向都是平行的,所以在工程myTutorialD3D11_17中,我们看到的程序界面上,cube每个面上的颜色都是一样的[因为diffuse光占颜色的大部分]。
687 0
Directx教程(23) 简单的光照模型(2)
在工程myTutorialD3D11_16中,我在文件light.vs中定义了一个材质光源属性常量缓冲。 //const buffer最好为4 float的倍数,否则创建const buffer会fail cbuffer LightMaterialBuffer ...
807 0
|
存储
Directx教程(29) 简单的光照模型(8)
现在我们新建一个工程myTutorialD3D_23,在这个工程中,对前面一章的代码进行一些整理: 1、我们在顶点属性中增加材质的的漫反射系数和高光系数,前面我们放在一个光照材质结构中,这样我们能够比较灵活的定义不同顶点的材质属性,当然这也增加了顶点缓冲的大小。
794 0