本帖最后由 玉清 于 2009-9-27 14:29 编辑
下面我们先来认识一个GT200 GPU.
作为一种计算设备,GT200是一种多核芯片,设计重点是能够在处理数据并行问题时获得很高的数据吞吐量(compute throughput)。为了能够提高芯片整体的性能,单个线程的性能和执行时间做出了牺牲。
GT200的结构可以被分为两层:第一层是10个TPC(Thread Processing Cluster, 线程处理器群),每个TPC又有三个SM(StreamingMultiprocessors,SM,又称Thread Processor Array, TPA)和一个纹理流水线组成。 纹理流水线为所在TPC内的三个SM提供存储器流水线。每个SM大致相当于一个具有8路SIMD功能的现代处理器,拥有独立的完整前端,包括取指,译码,发射和执行单元等,但存储器流水线是与同一个TPC中的其他SM共享的。
GT200和G80两代产品的主要不同是G80拥有8个TPC,每个TPC中有两个SM;而GT200的TPC数量增加到了10个,每个TPC中的SM数量也增加到了3个。
GPU通过向量机技术增强了计算性能,减少了控制方面的开销。例如,GT200和G80种的每个SM又包含8个线程处理器(Thread Processor,TP)。线程处理器也有其他的名称,比如流处理器(Streaming Processor)或者渲染核(Shader Core)。 SP并不是独立的处理器核,它们有独立的寄存器和指令指针,但没有取指和调度单元来构成完整的前端。因此,SP更加类似于当代的多线程CPU中的一条流水线。
抛开商业上天花乱坠的宣传不说,SM实际上是一种高度线程化的单发射(single-issue) SIMD处理器。 和当代的CPU核一样,SM也拥有独立的取指和调度单元构成的完整前端。大多数情况下,控制开销被8个功能单元分摊,但也有一部分的控制逻辑是直接控制单个线程的,无法共享。
参考文献:NVIDIA's GT200--- Inside a Parallel Processor by DR. David Kanter. |