大批量多线程的机器
在传统的 CPU 架构中,通常一个核心一次只执行一个线程;三管设计则不同,它是一个大批量多线程处理引擎。三管中可能同时运行数百个硬件线程,被着色的每个顶点或片段都创建有一个线程。这么多数量的线程可以隐匿内存延迟;如果有一些线程停下来等待内存也没关系,只要至少有一个线程可以执行,那么我们就能维持高效的执行。
算术管线:矢量核心
算术管线 (A-pipe) 是 SIMD
(单指令多数据)矢量处理引擎,拥有在 128 位四字寄存器上运算的算术单元。寄存器的访问很灵活,可以 2 x FP64、4 x FP32、8 x FP16、2 x int64、4 x int32、8 x int16,或者 16 x int8。因此,一个算术矢量任务可以在一次运算中运算 8 个“mediump”值,而对于 OpenCL 内核,运算 8 位灰度数据,以便每个时钟周期每个 SIMD 单元处理 16 个像素。