如上图,这是一张主板,密密麻麻布满了线和元器件,看的人头皮发麻,没关系,了解过DDD领域驱动设计的朋友,都知道,领域驱动的第一步就是抽象模型,划分领域,那么,
我们对其进行抽象之后,一块复杂的主板就变成下图几个关键模块了,这下就完全清晰了,根据领域驱动设计,再领域划分完之后,各团队就只负责自己的子域了,而我们今天分到的子域就是显卡
如果对CPU、内存、GPU感兴趣的朋友,可以看往期文章:
CPU的结构与工作原理
GPU的工作原理
内存的构成原理
CPU总线结构的基本原理

一、显卡的基本组成

显卡是计算机中负责处理图像和视频的关键组件。无论是玩高画质游戏、进行视频剪辑、运行3D建模软件,还是进行人工智能计算,显卡都扮演着至关重要的角色。
显卡就像一座高效的“计算工厂”,它拥有自己的“心脏”和“仓库”,专门负责图形渲染和并行计算
其实显卡不仅只有处理图像和图形的工作,它还要负责将主机(包括 CPU 和GPU )已经处理好的信息做一次信号转换,传输到显示器上,让显示器能够显示出对应的画面。

显卡通常由以下几个核心模块组成

显卡最核心的部分就是GPU,如下图,是英伟达(NVIDIA) Turing架构单个流式多处理器(SM)结构示意图

而 CPU 和 GPU 最大的不同就在于,GPU 负责的工作大多是重复简单的 3D 建模或者 3D 渲染,而流处理器(运算单元,简称 SP)

就是负责顶点运算或者像素运算,这样,在不同的场景下,显卡就能动态的分配进行顶点运算和像素运算的流处理器数量,达到资源的高效利用。

二、显卡工作流程


如图所示,图像或者视频数据一旦离开CPU,必须通过4个步骤,才会到达显示器

1、从总线进入GPU:将CPU送来的数据总线,再从总线送到GPU里面进行处理。

2、从GPU进入帧缓冲存储器(或称显存):将GPU芯片处理完的数据送到显存。

3、从显存进入视频控制器:视频控制器有可能是DAC(Digital Analog Converter,随机读写存储数—模转换器),从显存读取出数据再送到RAM DAC进行

数据转换的工作(数字信号转模拟信号);但是如果是DVI接口类型的显卡,则不需要经过数字信号转模拟信号。而直接输出数字信号。

4、从视频控制器进入显示器:将转换完的模拟信号送到显示屏。

三、显卡的类型

1、集成显卡

集成的显卡一般不带有显存,而是使用系统的一部分主内存作为显存,具体的数量一般是系统根据需要自动动态调整的。显然如果使用集成显卡运行需要大量占用内存的空间,

对整个系统的影响会比较明显,此外系统内存的频率通常比独立显卡的显存低很多,因此集成显卡的性能比独立显卡要逊色一些。

2、独立显卡

独立显卡,简称独显,港澳台地区称独立显示卡,是指成独立的板卡,需要插在主板的相应接口上的显卡。独立显卡分为内置独立显卡和外置显卡。独立显卡是指以独立板卡形式存在,

可在具备显卡接口的主板上自由插拔的显卡。独立显卡具备单独的显存,不占用系统内存,而且技术上领先于集成显卡,能够提供更好的显示效果和运行性能。

3、核心显卡

英文原名Core graphics card,核心图形卡,意思是集成在核心中的显卡。核心显卡是新一代的智能图形核心,它整合在智能处理器当中,

依托处理器强大的运算能力和智能能效调节设计,在更低功耗下实现同样出色的图形处理性能和流畅的应用体验。需要注意的是,

核心显卡虽然与传统意义上的集成显卡并不相同,工作方式的不同决定了它的性能比早期的集成显卡有所提升,但是它仍然是一种集成显卡,集成在核心中的显卡。

四、显存

用来存储屏幕上像素的颜色值,简称帧缓冲器,俗称显存。帧缓冲器中的单元数目与显示器上的像素数目相同,单元与像素一一对应,

各单元的数值决定了其对应的像素的颜色。如下图,0和1就是2中像素值,如果懵的话,想象RGB是不是256*256*256种颜色,每种颜色就是一个数值

五、GPU
GPU(graphics processing unit,图形处理器),又称显示核心、视觉处理器、显示芯片或绘图芯片,是一种专门在个人计算机、
工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上运行绘图运算工作的微处理器。换句话说,就是把CPU的数据翻译成显示器能读懂的数据。
CPU与GPU的结构对比如下图:
图片
CPU是一个有多种功能的优秀领导者。它的优点在于调度、管理、协调能力强,计算能力则位于其次。而GPU相当于一个接受CPU调度的“拥有大量计算能力”的员工。
换言之,CPU擅长统领全局等复杂操作,GPU擅长对大数据进行简单重复操作。CPU是从事复杂脑力劳动的教授,而GPU是进行大量并行计算的体力劳动者。
关于GPU更详细的原理讲解,请看往期文章:
GPU的工作原理


六、GPU加速
GPU加速计算是指同时利用图形处理器(GPU)和CPU,加快科学、分析、工程、消费和企业应用程序的运行速度。
GPU加速计算可以提供非凡的应用程序性能,能将应用程序计算密集部分的工作负载转移到GPU,同时仍由CPU运行其余程序代码。从用户的角度来看,应用程序的运行速度明显加快。
理解GPU和CPU之间区别的一种简单方式是比较它们如何处理任务。CPU由专为顺序串行处理而优化的几个核心组成而GPU则拥有一个由数以千计的更小、
更高效的核心(专为同时处理多重任务而设计)组成的大规模并行计算架构
七、视频渲染器
百度百科的解释是:视频渲染器,Video Renderer是接收CPU的RGB/YUV裸数据,然后在显示器上显示的Filter。
个人理解,是运行在显卡上的一个驱动程序。完成将CPU发送视频数据显示到显示器的一个软件。使用potplay可以查看系统支持的选择渲染器种类。(没有理解透彻,需要继续研究)
SDL是一个封装库,对opengl/directD3D的封装。SDL使用统一的接口,在编译的时候,系统自动匹配最优的渲染方案。
opengl/directD3D是3D规范,各个GPU厂商需要按照这个3D规范实现接口调用,便于业务层使用。
八、散热系统

显卡散热本身是为了散出显卡核心的温度,让显卡能保证正常工作温度,常见有开放式风扇和公版多采用的涡轮风扇

开放式风扇是直接吹显卡(鳍片)来提供散热,使用场景比较广泛,有无风道都能用,而且相较而言更静音。涡轮风扇散热则是靠吸入风量横吹核心(鳍片),

与开放式相比,对整机内部其它硬件影响不大,比较适合有平行风道,而且工作温度不高的显卡。但估计以后公版也会多采用开放式而放弃涡轮。

后来随着 DIY 个性的潮流奔涌而来,各 OEM 厂商开始追求散热器外观设计、配色、RGB灯甚至是 OLED 显示屏。

九、图形渲染流水线

当GPU执行图形渲染任务时,会经过一条图形渲染流水线,如下图所示:

渲染流程包括:

  1. 顶点处理

    • 顶点坐标变换(如模型空间→屏幕空间)。

    • 光照、材质预处理等。

  2. 几何处理与裁剪

    • 将顶点组成三角形图元。

    • 剔除超出屏幕范围的图形。

  3. 光栅化

    • 确定图元影响的像素区域。

    • 将三角形映射为具体像素。

  4. 片元着色

    • 处理每个像素颜色,包括纹理采样、光照计算等。

  5. 深度测试与混合

    • 判断遮挡关系。

    • 合成最终图像并输出到屏幕。

渲染流水线就像一条像素工厂的自动化流水线,每个阶段并行处理不同的数据,效率极高。