GPU设计大多奉行模块化、可扩展的原则, 也就是说, 把一定数量的基本计算单元形成团簇, 然后再由数量不等的团簇加上某些控制单元来构成整个GPU的运算组件. NVidia和AMD都是这样做的.
N卡的计算单元团簇叫做流式多处理器 (Stream Multiprocessor, SM), 由一定量的CUDA核心组成. 在Kepler架构中, 192个CUDA核心组成一个SM, 而在Maxwell以及除GP100之外的Pascal架构中, 128个CUDA核心组成一个SM. 例如, GT750M (GK107) 有2个SM, GTX965M (GM204) 有8个SM, GTX1070 (GP104) 有15个SM.
A卡的计算单元团簇就叫做计算单元 (Compute Unit, CU), 在GCN架构中提出, 每个CU包含64个流处理器. 例如, R9 M270X (Venus XT) 有10个CU, RX560完全版 (Baffin) 有16个CU, 而R5 2500U/R3 2200G自带的Vega 8核显有8个CU.
Intel从Haswell时代的Gen7.5核显开始, 也采用类似的设计思路. 这是Intel核显性能开始跃进的关键点所在. 它采用两级EU团簇结构设计, 较低一级叫做子分片 (subslice), 较高一级叫做分片(slice).
下图示出子分片的架构, 一个子分片由8个EU组成.

图中仍然有三个需要解释的点:
1. 本地线程分发器 (Local Thread Dispatcher)
顾名思义, 它用于向每个EU中的每个线程来分配任务. 所有的指令先进入它内部的指令缓存, 然后再由它来将这些指令分发给有空闲的EU.
2. 采样器 (Sampler)
采样器是一个只读的访存单元, 用于从其外部的存储单元中获取纹理或图像数据, 并进行采样. 除了采样之外, 它还可以完成图像的坐标转换、过滤等. 采样器内有专用的两级缓存.
3. 数据口 (Data Port)
它是专门管理数据存取的单元, 负责与外部存储单元进行通用的数据交换. 另外, 它还可以进行SIMD操作的聚合, 也就是将多个长度相同, 并且偏移地址落在同一个地址段内的分散的SIMD操作放在一起处理, 这样可以使带宽最大化, 提高效率.
其实到了这里, 就可以看出核显 (以及所有能够运算的SOC) 在架构上的精细性. 每个单元都需要具有指令和数据的处理能力, 并且需要保持与其高层或低层组件的信息交换.