●G80/GT200Out-of-Order线程
NVIDIA公司John Nickolls
理解GPU的构造是很麻烦的,根据GPU厂商各个要素的名称也是不同的。根据GPU售卖者各要素的名称是不同。按照NVIDIA公司的说法,称其顶点以及像素单元为线程。而且称管理线程为“Warp(warp)”。在1个Streaming Multiprocessor(SM)中有1个命令单元。一个命令单元和1个warp内的32条线程都会执行同样的指令。而warp内的线程也可以说是共有program counter(PC),并且同时执行一个程序中同样的指令。
不过实际SM内只有8个Streaming Processor(SP),因此无法实现8线程以上的并列。因此SM变成了)4个循环,一个循环执行一个warp中的线程。这样就是8线程×4=32个线程。
根据G80/GT200GPU架构设计师John Nickolls先生(Director of Architecture)的说法,G80以后的命令单元为multi-thread模式,能够执行Out-of-Order指令。而当处理warp命令流时则是In-Order。
Warp的运行结构
到目前为止的通常的GPU,持续执行n-Order个warp指令。如果停止下来的话则与其他的warp指令进行转换。由于一个warp指令需要执行数个隐藏指令,这个是根据warp指令转换的隐藏存储器所需要的等待时间所决定的。比如AMD公司的的R600系列产品以及NVIDIA公司的的G80/GT200系列产品都是如此。
而且对于G80/GT200系列产品来说,warp实行的计划要更加动态。这里实行的是实际运行和内存的双方等待时间。这是一种更加灵活的计划方式。这里可以推定G80/GT200系列产品为了处理器核心的高频率运算单元需要配备更深的管线。而为了隐藏的等待时间,也需要更加积级的架构。而根据架构设计师John Nickolls先生的介绍,实际warp中的线程也能够支持Out-of-Order,不过NVIDIA没有提供支持。
SIMDmulti-thread执行的次序