news 2026/4/23 11:53:30

一、GPU硬件结构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
一、GPU硬件结构

目录

1、冯.诺依曼计算机架构

2、连接机

3、Cell处理器

4、多点计算

5、GPU硬件


1、冯.诺依曼计算机架构

冯·诺依曼架构是现代计算机的基石,它由数学家约翰·冯·诺依曼在1945年提出,核心思想是‌“存储程序”‌,即程序指令和数据以二进制形式存储在同一内存中,由CPU统一处理。

void some_function { int array[100]; int i =0; for (int i=0;i<100;i++) { array[i]=i*10; } }

首先,数组array的地址被装入某个内存访问寄存器,然后参数i被装入到另一个寄存器。循环退出条件为100,这个退出条件既可以装入一个寄存器,也可以以编码的形式,成为指令流中的一个字面值。计算机将重复执行这几条指令,循环100次。对于每一个计算出的值,我们需要取来并执行“控制指令”、“访存指令”和“计算指令”。这是低效的,计算机执行的指令是相同的,只是处理的数据不同。设计者就为几乎所有的处理器设置了容量很小的缓存,并且在更复杂的处理器中,设置多级缓存。

图1.典型的现代CPU缓存组成结构

当需要从内存中取数据或者指令时,处理器首先查询缓存,如果数据或者指令在缓存中,则高速缓存直接将其交给处理器。如果数据不在一级缓存(L1 Cache)中,则 处理器向二级(L2 Cache)或者三级缓存(L3 Cache)发出读取请求,如果缓存中没有,则需要向主存(即内存)中读取。

现代CPU通常采用‌多级缓存体系‌,主要包括L1、L2、L3三级,部分高端处理器还有L4缓存。

  • L1 Cache (一级缓存)‌:速度最快、容量最小,通常分为‌指令缓存‌(存储CPU即将执行的指令)和‌数据缓存‌(存储指令操作的数据),分别服务于指令预取和数据读写单元。
  • L2 Cache (二级缓存)‌:容量和速度介于L1和L3之间,通常为‌统一缓存‌(同时存储指令和数据)。在多核CPU中,L2缓存可能为每个核心私有或多个核心共享。
  • L3 Cache (三级缓存)‌:容量最大,速度相对较慢,通常为‌所有核心共享‌,用于在多个核心之间快速交换数据,减少访问主内存的次数。
  • L4 Cache (四级缓存)‌:并非所有CPU都有,通常集成在CPU封装内,作为L3缓存的补充,进一步降低内存延迟。

2、连接机

连接机(Connection Machine)是上世纪由Thinking Machines公司研发的一系列‌大规模并行计算机‌,核心创新在于用‌物理连接‌来模拟神经元网络,追求极致并行计算。连接机是并行计算史上的里程碑,其理念在现代超级计算机和AI芯片中得以延续。

假如我们要处理一个RGB图像的颜色,每种颜色用单字节表示,每个像素的颜色用3个字节表示。假设将蓝色值降为0.假设内存不是交替的存储各个像素点的颜色值,而是被分成红、绿、蓝三条。我们会使用一个循环体将蓝色内存中的每个像素的颜色值减1。每次操作的数据项都是相同的,即每次迭代,都需要进行取指、译码和执行三个操作。

连接机采用的是单指令多数据的模式(Single Instruction,Multiple Data, SIMD)并行处理。如今,SIMD理念广泛应用于现代CPU的SIMD指令集(如Intel的SSE、AVX)和GPU中,用于加速多媒体和科学计算。

3、Cell处理器

图2.IBM cell处理器芯片布局图(8个SPE版本)

它的思想是用一个常规处理器作为监管处理器,该处理器与大量的高速流处理器相连。在Cell处理器中,常规的PowerPC(PPC)处理器担任与流处理器和外部世界的接口。而SIMD流处理器,IBM称其为SPE(Stream Processing Element),则在常规处理器的管理下,处理数据集。

要想为Cell处理器编程,需要写一个在PowerPC核心处理器上运行的程序。该程序会用一个互不相同的二进制码,在每个流处理器单元SPE上,调用执行一个程序,SPE本身就是一个核,它可以从自己本地的内存中取出一个独立的程序来执行,这个程序与旁边的SPE执行的程序是不同的。通过一个共享的互联网络,SPE之间、SPE与PowerPC核之间可以相互通信。这种混合架构编程是困难的,程序员要从程序和数据两个方面,明确管理8个SPE,以及在PowerPC核上运行串行的程序。

当连接到一个高速的环形网络时,SPE 还可以按顺序排列起来,以执行一个包括多个步骤的流式操作。

图3.Cell 处理器的流处理器连接路径示例

这种流或者流水线处理方法的问题是,系统运行的最快速度等于最慢节点的运行速度。它和工厂里生产线的实际运行情况是完全相同的,整条生产线的运行速度和最慢那个点的运行速度一样。就像装配生产线上的工人一样,每一个 SPB(工人)只执行一小部分任务,所以它可以非常迅速和高效地完成这部分任务。然而,跟其他处理器一样,SPE也存在带宽限制以及数据传递至下一阶段的开销问题。因此,当通过在每个 SPB上执行一个一致的程序来提高效率时,我们也会在处理器间通信上有所损失,并最终受到最慢的那个处理步骤的限制

还有一种效率更高的方法是,将所有待处理的数据放在一个SPE上,然后让其余SPE分别处理一小块数据。这相当于培训所有装配线上的工人去装配一个完整的部件。对于简单的任务,这是很容易的,但是每个SPE受限于可用的程序和数据内存。这时,Power PC核就必须面向8个SPE进行数据的分发和收集,而不是原先的两个,因此主机和 SPE 间的管理开销及通信量就增加了。

4、多点计算

PC集群通常运行Linux操作系统的集群版本。在这个版本中,它的每个节点从中央主控节点上获取引导指令和操作系统(Operating System,OS)。例如,在CudaDeveloper 环境中,我们有一个由低功耗、带嵌入式CUDA GPU 的独立PC机组成的小型集群,很便宜就能买来建立一个集群。有时也可以使用已经被替换掉的旧PC机来组建集群,硬件就几乎不花钱了。
然而,集群计算存在的问题是它的速度受到节点之间通信总量的限制,而这些通信是求解问题所必需的。如果你有32个运算节点,问题正好被划分成32个子任务,并且各个节点之间无须通信,那么你的问题求解是最适合集群计算的。如果每个数据点都要从所有节点上获取数据,那么你就是把一个很糟糕的问题交给了集群。
在现代的CPU 和GPU 中都能看到集群技术。如果我们把图1中的每个CPU核作为一个节点,二级缓存作为内存(Dynamic Random Access Memory,DRAM),三级缓存作为网络开关,将内存作为大容量的辅存,我们就得到一个集群的微缩模型。

图4.典型的集群层次结构

现代GPU的体系结构也完全相同。一个GPU内有许多流处理器(StreamingMaltiprocessor,SM),它们就类似CPU 的核。这些SM 与共享存储(一级缓存)连接在一起,然后又与相当于SM 间互联开关的二级缓存相连。数据先是存储在全局存储中,然后被主机取出并使用。除留一部分自己处理外,主机将剩余的数据通过PCI-E互联开关直接送往另一个GPU的存储空间。PCI-E 互联开关的传输速度比任何一个互联网络快好多倍

图5.类似集群的GPU簇


如图5所示,节点可以在集群中重复设置。通过在一个可控的环境下,重复设置节点就可以构造一个集群。集群设计的一个进步是分布式应用程序。分布式应用程序可以运行在许多节点上,而每个节点又由包含多个 GPU的许多处理单元组成。分布式应用程序可以运行在一个受集中控制的集群平台上,也可以运行在随机连接在一起、自主控制的机器上,来求解一个共同的问题。

5、GPU硬件

图形处理器(Graphics Processing Unit,GPU)是现代PC中常见的设备,又称显示核心、视觉处理器或显示芯片,是专门处理图像渲染和图形计算的微处理器。GPU是一种用于执行大量并行计算任务的硬件平台,其拥有数百个甚至上千个ALU(算术逻辑单元,Arithmetic Logic Unit),基于的SIMT(单指令多线程,Single Instruction Multiple Threads)架构以线程块为单位进行工作,这些计算核心支持线程块中的多个线程在同一周期内执行相同的指令,从而实现高效的并行计算 [8]。GPU还包含DRAM,用于存储数据和指令,如纹理、顶点数据、着色器程序等,以及包含Cache(高速缓存),用于临时存储频繁访问的数据或计算结果,减少访问主内存的次数,提高整体性能。

随着GPU的细分发展,不同厂商、不同型号的GPU具体微观架构存在差异,如NVIDIA的Tesla架构,Fermi架构和Maxwell架构,AMD的GCN架构,RNDA架构等,但核心部件、概念、以及运行机制仍大同小异。

每个GPU由若干个流处理器簇(SM)组成,每个 SM配备8个或更多的流处理器(Stream Processor, SP))。
GPU 卡大致可以看成是一种加速卡或协处理器卡。目前,一个 GPU 卡必须与基于 CPU的主机相连才能工作。在这方面,它完全遵循 Cell 处理器搭配一个常规的串行处理核和N个SIMD SPE 核的方法。每个 GPU设备包括一组SM,每个SM又包含一组SP或者CUDA核。这些SP最高可以实现32个单元并行工作。它们消除了 CPU上为实现高速串行执行而设计的大量复杂的指令级并行处理电路。取而代之的是由程序员指定的显式的并行模型,使得同样大小的硅片可以容纳更强的计算能力。

GPU的性能主要由其所具有的SP的数量、全局内存的带宽和程序员利用 并行架构的充分程度等因素决定。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 13:39:57

OFA视觉问答效果展示:手写笔记图片文字识别+语义问答联动

OFA视觉问答效果展示&#xff1a;手写笔记图片文字识别语义问答联动 1. 这不是普通VQA&#xff0c;是能“读懂”你手写笔记的AI眼睛 你有没有过这样的经历&#xff1a;拍下一页潦草的手写笔记&#xff0c;想快速知道上面写了什么重点&#xff0c;甚至进一步问“这个公式怎么推…

作者头像 李华
网站建设 2026/4/18 22:42:52

GPT-OSS-20B推理速度实测,响应快到1.5秒内

GPT-OSS-20B推理速度实测&#xff0c;响应快到1.5秒内 你有没有试过在本地跑一个20B级别的大模型&#xff0c;敲下回车后——等了3秒、5秒、甚至更久&#xff0c;才看到第一个字缓缓浮现&#xff1f;那种“它到底还活着吗”的焦灼感&#xff0c;几乎成了本地大模型体验的默认背…

作者头像 李华
网站建设 2026/4/17 23:37:18

高精度地图在自动驾驶与智能交通中的作用:全面讲解

以下是对您提供的博文《高精度地图在自动驾驶与智能交通中的作用:技术深度解析》的 全面润色与专业优化版本 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI痕迹,语言自然、有温度、具工程师视角; ✅ 打破模板化结构,以真实技术演进逻辑重构全文脉络; ✅ 强化“人话…

作者头像 李华
网站建设 2026/4/18 15:40:54

Pi0视觉-语言-动作流模型惊艳效果:多模态注意力热力图可视化

Pi0视觉-语言-动作流模型惊艳效果&#xff1a;多模态注意力热力图可视化 1. 这不是普通机器人模型&#xff0c;是能“看懂听懂动起来”的新物种 你有没有想过&#xff0c;一个机器人怎么真正理解“把左边的蓝色杯子放到右边托盘上”这句话&#xff1f;不是靠写死的规则&#…

作者头像 李华
网站建设 2026/4/23 7:37:47

Qwen2.5如何实现高效推理?GPU算力优化部署教程

Qwen2.5如何实现高效推理&#xff1f;GPU算力优化部署教程 1. 为什么0.5B小模型反而更值得部署&#xff1f; 你可能第一眼看到“Qwen2.5-0.5B-Instruct”会下意识划走——毕竟现在动辄7B、14B甚至72B的模型满天飞&#xff0c;0.5B听起来像“玩具级”。但实际用过就知道&#…

作者头像 李华