面向SIMT架构统一染色阵列的低复杂度分支处理电路的制作方法

文档序号:12063628阅读:371来源:国知局

本发明属于集成电路技术领域,涉及一种基于SIMT架构统一染色器阵列的低复杂度分支处理电路。



背景技术:

统一染色图形处理器中统一染色器阵列完成顶点、像素的统一染色功能。在统一染色器阵列中,并行处理的实现是以SIMT为基础的,主要的并行执行单元中有16个,在一条指令发射后需要同时在16个执行单元上同时执行。但是在程序设计中,必须要包括条件跳转等流程控制指令,由于16个并行单元上的输入数据不同,所以很可能会出现多个并行单元条件判断不一致,进而导致跳转也不一致的情况。



技术实现要素:

发明目的:

本发明主要提出一种面向SIMT架构统一染色阵列的低复杂度分支处理电路,该电路对于不同数量并行单元,不同数量现场均可满足要求,该机制的实现电路时序性能高、可扩展性好。

技术方案:

一种面向SIMT架构统一染色阵列的低复杂度分支处理电路,包括:

断言寄存器单元(1)、断言堆栈单元(2)、控制单元(3);

断言寄存器单元(1):在指令执行模块(4)执行条件判断指令时,将条件判断的结果以及现场号输出给断言寄存器单元(1),断言寄存器单元(1)按照现场号将该值存入该现场的断言寄存器中;在分支处理电路执行POP指令时,控制单元(3)从断言堆栈单元(2)中读出断言堆栈的数值填写入断言寄存器单元(1)该现场的断言寄存器中;在分支处理电路执行INV指令时,控制单元(3)将原断言寄存器的值取反与断言堆栈顶部的数值按位相“与”,写入断言寄存器单元(1)该现场的断言寄存器中;断言寄存器单元(1)将每个现场的断言寄存器值输出给控制单元(3);

控制单元(3):与任务调度模块(5)、IFID模块(6)、断言寄存器单元(1)、断言堆栈单元(2)相连,控制单元(3)接收IFIF模块(6)下发的分支处理指令,所述分支处理指令包括:POP指令、INV指令、PUSH指令;在执行POP指令时,从断言堆栈单元(2)中按现场读取数值传输给断言寄存器单元(1);控制单元(3)在执行PUSH指令时,将来自于断言寄存器单元(1)当前现场的断言寄存器值写入断言堆栈单元(2)中;控制单元(3)在执行INV指令时,控制单元(3)从断言堆栈单元(2)获取堆栈顶部的数值,将所述数值与断言寄存器值的按位“反”进行按位“与”操作,并将操作结果传输回断言寄存器单元(1);控制单元(3)在IFID模块(6)发射非分支处理指令时,将来自于断言寄存器单元(1)的断言寄存器值、来自于任务调度模块(5)的TaskMask按位相“与”,并将结果传输给指令执行模块(4);

断言堆栈单元(2):接收控制单元(3)发出三种类型操作,包括:POP操作、PUSH操作、INV操作;对于POP操作,断言堆栈单元(2)根据控制单元(3)输入的现场号,从对应现场的堆栈顶部读出数据并返回给控制单元(3);对于PUSH操作,断言堆栈单元(2)根据控制单元(3)输入的现场号,向对应现场的堆栈顶部写入数据;对于INV操作,断言堆栈单元(2)根据控制单元(3)输入的现场号返回对应现场顶部的数据,但并不执行读操作,也就是不影响整个堆栈的内容。

有益效果:

1、对于多个现场,可以根据数据有效与否(data mask)、条件成功与否(predict mask)产生用于指示本线程是否实际执行的指标(excute mask),从而保证SIMT结构的染色阵列时钟能正确的执行发射的指令,并且该机制对并行单元数目的增加,效率不受影响;

2、关于多个现场,本发明以8个warp、每个warp执行4个周期共计32现场为例进行设计,但对于更多的现场在增加data mask寄存器、predict mask寄存器、predict mask堆栈等后也同样支持;

3、本发明的设计结构简单,可扩展性高,电路实现效率高。

附图说明

图1是本发明描述的分支处理机制的功能架构框图。

具体实施方式

下面结合附图和具体实施例,对本发明的技术方案进行清楚、完整地表述。显然,所表述的实施例仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提所获得的所有其它实施例,都属于本发明的保护范围。

一种面向SIMT架构统一染色阵列的低复杂度分支处理电路,如图1所示,包括:

断言寄存器单元(1)、断言堆栈单元(2)、控制单元(3)。

所述断言寄存器单元(1),每一个现场对应有一个断言寄存器,用来存储该现场的断言寄存器值。断言寄存器的位数等于并行单元的个数,断言寄存器的个数等于程序运行的现场数。

所述断言堆栈单元(2),每一个现场对应有一个断言堆栈,该堆栈在执行程序嵌套时使用,用来进行断言寄存器的出栈、入栈操作。断言堆栈的位宽等于并行单元的个数,断言堆栈的深度等于程序嵌套的级数,断言堆栈的个数等于程序运行的现场数。

所述控制单元(3),是用来执行PUSH、POP、INV指令读写断言堆栈,产生新的断言寄存器值,并将PredictMask与TaskMask的值按位相与产生ExcuteMask。

断言寄存器单元(1):在指令执行模块(4)执行条件判断指令时,将条件判断的结果以及现场号输出给断言寄存器单元(1),断言寄存器单元(1)按照现场号将该值存入该现场的断言寄存器中;在分支处理电路执行POP指令时,控制单元(3)从断言堆栈单元(2)中读出断言堆栈的数值填写入断言寄存器单元(1)该现场的断言寄存器中;在分支处理电路执行INV指令时,控制单元(3)将原断言寄存器的值取反与断言堆栈顶部的数值按位相“与”,写入断言寄存器单元(1)该现场的断言寄存器中;断言寄存器单元(1)将每个现场的断言寄存器值输出给控制单元(3);

控制单元(3):与任务调度模块(5)、IFID模块(6)、断言寄存器单元(1)、断言堆栈单元(2)相连,控制单元(3)接收IFIF模块(6)下发的分支处理指令,所述分支处理指令包括:POP指令、INV指令、PUSH指令;在执行POP指令时,从断言堆栈单元(2)中按现场读取数值传输给断言寄存器单元(1);控制单元(3)在执行PUSH指令时,将来自于断言寄存器单元(1)当前现场的断言寄存器值写入断言堆栈单元(2)中;控制单元(3)在执行INV指令时,控制单元(3)从断言堆栈单元(2)获取堆栈顶部的数值,将所述数值与断言寄存器值的按位“反”进行按位“与”操作,并将操作结果传输回断言寄存器单元(1);控制单元(3)在IFID模块(6)发射非分支处理指令时,将来自于断言寄存器单元(1)的断言寄存器值、来自于任务调度模块(5)的TaskMask按位相“与”,并将结果传输给指令执行模块(4);

断言堆栈单元(2):接收控制单元(3)发出三种类型操作,包括:POP操作、PUSH操作、INV操作;对于POP操作,断言堆栈单元(2)根据控制单元(3)输入的现场号,从对应现场的堆栈顶部读出数据并返回给控制单元(3);对于PUSH操作,断言堆栈单元(2)根据控制单元(3)输入的现场号,向对应现场的堆栈顶部写入数据;对于INV操作,断言堆栈单元(2)根据控制单元(3)输入的现场号返回对应现场顶部的数据,但并不执行读操作,也就是不影响整个堆栈的内容。

实施例

1、断言寄存器单元

断言寄存器即Predicate Mask,1个SSC内部,1个周期内,对应20个1位的Predicate Mask。为支持8个warp,每个warp运行4个周期,断言寄存器需要有32套现场;SFU对应的Predicate Mask由同一个SPU内的4个SC的Predicate Mask进行或操作得到。

断言寄存器的值受以下行为影响:SC对条件跳转指令的执行结果,对断言堆栈的POP、INV操作。

2、控制单元

该单元负责Excute Mask的产生,以及断言堆栈的PUSH、POP和INV。

一个SPU内部SC和SFU的DataMask均与该SPU对应的TaskMask相同,而ExcuteMask则是DataMask和PredicateMask的按位与。

PUSH操作过程为,读取断言寄存器的内容(1个周期,共20位),写入断言堆栈;

POP操作过程为,从断言堆栈的顶端读取断言信息,将其写入断言寄存器;

INV操作的过程为,读取当前断言寄存器的内容(假定为m),读取断言堆栈顶端的断言信息(假定为n),对m按位取反后,将结果与n进行按位与,然后将结果((~m)&n)写入断言寄存器。

3、断言堆栈单元

该堆栈用于保存Predicate Mask,为支持8个warp4个周期,该堆栈需要有32套现场。对于每个现场,该堆栈宽度为20b,深度为32(支持32层条件分支嵌套)。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1