一种统一染色器阵列多warp取指电路及方法与流程

文档序号:12063321阅读:187来源:国知局

本发明属于集成电路技术领域,涉及一种统一染色器阵列多warp取指电路及方法。



背景技术:

统一染色器阵列完成顶点、像素的统一染色功能。在统一染色器阵列中,指令存在访存指令,后面的指令需要该访存指令访问存储器返回的结果,因存储器访问需要经过较长时间才能返回,运算部件不得不停顿等待。存储器返回结果后,后面的指令才能继续运行。

因此,这种情况下,运算部件很长一段时间处于空闲。为充分利用运算部件这段空闲的时间,采用多warp切换的方式,在该warp的这类指令之间插入多个其他warp的指令,隐藏其存储器访问延迟,以充分利用运算部件,提高统一染色器阵列的吞吐量。



技术实现要素:

本发明的目的是提供一种统一染色器阵列多warp取指电路及方法,从而能够实现多个warp取指令的过程,有效的隐藏存储器延迟,以提高统一染色器阵列的吞吐量。

本发明的技术解决方案是:

一种统一染色器阵列多warp指令取指电路,包括warp调度单元(1)、取指信息fifo(2)、外部的icache(3)及至少2个warp的pc地址计算单元(4);每个pc地址计算单元对应1个warp,

pc地址计算单元(4)与warp调度单元(1)连接,进行warp pc地址的计算并产生warp可调度请求,将所述warp可调度请求发送给warp调度单元(1);

warp调度单元(1)与取指信息fifo(2)及至少2个pc地址计算单元(4)连接,根据所述warp可调度请求进行多个warp的调度,选取一个warp产生对应的warp取指信息发送给取指信息fifo(2);

取指信息fifo(2)与warp调度单元(1)及外部的icache(3)连接,存储调度出的warp取指信息并产生外部的icache(3)的取指接口信号;

外部的icache(3)与取指信息fifo(2)连接,根据所述取指接口信号产生取指令。

具体的,pc地址计算单元(4)内部包含一个warp pc栈,warp pc栈用于实现函数嵌套时pc地址的保存与恢复。

具体的,pc地址计算单元(4)中warp可调度请求的产生条件如下:

1)每个warp的指令有2行的buffer缓存,该warp只要有一个空闲即可调度;

2)该warp数据准备好;

3)该warp的取指pc准备好;

a)初始的取指pc准备好是在该warp数据准备好的时刻;

b)之后的取指pc准备好是根据取回的指令进行判断,取回的指令中有跳转指令时,等该跳转指令执行完该warp取指pc即准备好;反之,取回指令后该warp取指pc就准备好。

4)该warp的指令取到后,才能进行该warp的下一次调度。

进一步的,pc地址计算单元(4)中warp pc地址计算的方法如下:

1)在warp数据准备好时,warp pc地址值的初值为某个具体的数值;

2)根据warp pc地址值取回的指令确定下一次该warp pc地址的值;

a)取回的m条指令中不含跳转指令,则warp pc地址每次顺序加m;

b)取回的m条指令中含有跳转指令,则warp pc地址需要根据跳转指令的类型和跳转指令的执行结果进行计算得到warp pc值,warp pc值的更新时间根据跳转指令的执行情况确定。

更进一步的,warp pc地址根据跳转指令的类型和执行结果进行计算的具体过程为:

1)对于绝对跳转指令,warp pc的值取指令中的立即数;

2)对于条件跳转指令,如果条件判断为成立,则进行跳转,warp pc的值取指令中的立即数;如果条件判断不成立,则不进行跳转,warp pc保持原值。

一种统一染色器阵列的多warp指令取指方法,包括以下步骤:

步骤1、多个warp pc地址计算单元同时进行warp pc地址的计算,并向warp调度单元发出可调度的warp请求和warp pc地址;

步骤2、warp调度单元接收来自多个warp pc地址计算单元的warp可调度请求和warp pc地址,监控取指信息fifo的满状态;在取指信息fifo不满的情况下根据多个warp的可调度请求进行公平轮询调度,输出当前调度的warp号;并通过该warp号进行warp pc地址选择,向取指信息fifo发送写fifo信号和包括调度出的warp号和warp pc地址的写fifo数据;

步骤3、取指信息fifo存储调度的warp号和pc地址,在icache空闲且fifo不空的情况下产生读fifo信号,接着根据icache空闲和读fifo信号产生取指请求,然后将读出的包括warp号和取指pc地址的fifo数据、取指请求作为warp取指信息输出给外部icache单元进行取指;

步骤4、外部icache接收取指信息fifo的warp取指请求、warp号和取指pc地址,进而返回该warp要取的指令。

本发明的技术效果是:

1、warp pc的初始地址灵活,可以任意指定程序指令执行的入口地址;

2、warp可调度请求在发出后,只有请求被响应后,才可再发送,否则不会再次发送,保证发出调度请求的有效性;

3、取指信息fifo保证了在icache从不空闲到空闲后,warp取指的顺序是按照warp可调度请求的次序来的;

4、每个warp pc地址计算方法相同,逻辑实现独立可复用,实现多个warp指令的取指电路及方法简单。

附图说明

图1是本发明的取指电路图。

具体实施方式

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

一种统一染色器阵列多warp指令取指电路,包括warp调度单元(1)、取指信息fifo(2)、外部的icache(3)及至少2个warp的pc地址计算单元(4);每个pc地址计算单元对应1个warp,

pc地址计算单元(4)与warp调度单元(1)连接,进行warp pc地址的计算并产生warp可调度请求,将所述warp可调度请求发送给warp调度单元(1);

warp调度单元(1)与取指信息fifo(2)及至少2个pc地址计算单元(4)连接,根据所述warp可调度请求进行多个warp的调度,选取一个warp产生对应的warp取指信息发送给取指信息fifo(2);

取指信息fifo(2)与warp调度单元(1)及外部的icache(3)连接,存储调度出的warp取指信息并产生外部的icache(3)的取指接口信号;

外部的icache(3)与取指信息fifo(2)连接,根据所述取指接口信号产生取指令。

具体的,pc地址计算单元(4)内部包含一个warp pc栈,warp pc栈用于实现函数嵌套时pc地址的保存与恢复。

具体的,pc地址计算单元(4)中warp可调度请求的产生条件如下:

5)每个warp的指令有2行的buffer缓存,该warp只要有一个空闲即可调度;

6)该warp数据准备好;

7)该warp的取指pc准备好;

c)初始的取指pc准备好是在该warp数据准备好的时刻;

d)之后的取指pc准备好是根据取回的指令进行判断,取回的指令中有跳转指令时,等该跳转指令执行完该warp取指pc即准备好;反之,取回指令后该warp取指pc就准备好。

8)该warp的指令取到后,才能进行该warp的下一次调度。

进一步的,pc地址计算单元(4)中warp pc地址计算的方法如下:

3)在warp数据准备好时,warp pc地址值的初值为某个具体的数值;

4)根据warp pc地址值取回的指令确定下一次该warp pc地址的值;

c)取回的m条指令中不含跳转指令,则warp pc地址每次顺序加m;

d)取回的m条指令中含有跳转指令,则warp pc地址需要根据跳转指令的类型和跳转指令的执行结果进行计算得到warp pc值,warp pc值的更新时间根据跳转指令的执行情况确定。

更进一步的,warp pc地址根据跳转指令的类型和执行结果进行计算的具体过程为:

3)对于绝对跳转指令,warp pc的值取指令中的立即数;

4)对于条件跳转指令,如果条件判断为成立,则进行跳转,warp pc的值取指令中的立即数;如果条件判断不成立,则不进行跳转,warp pc保持原值。

一种统一染色器阵列的多warp指令取指方法,包括以下步骤:

步骤1、多个warp pc地址计算单元同时进行warp pc地址的计算,并向warp调度单元发出可调度的warp请求和warp pc地址;

步骤2、warp调度单元接收来自多个warp pc地址计算单元的warp可调度请求和warp pc地址,监控取指信息fifo的满状态;在取指信息fifo不满的情况下根据多个warp的可调度请求进行公平轮询调度,输出当前调度的warp号;并通过该warp号进行warp pc地址选择,向取指信息fifo发送写fifo信号和包括调度出的warp号和warp pc地址的写fifo数据;

步骤3、取指信息fifo存储调度的warp号和pc地址,在icache空闲且fifo不空的情况下产生读fifo信号,接着根据icache空闲和读fifo信号产生取指请求,然后将读出的包括warp号和取指pc地址的fifo数据、取指请求作为warp取指信息输出给外部icache单元进行取指;

步骤4、外部icache接收取指信息fifo的warp取指请求、warp号和取指pc地址,进而返回该warp要取的指令。

实施例

如图1所示,一种统一染色器阵列多warp取指电路及方法,包括8个warp的pc地址计算单元、warp调度单元、取指信息fifo及外部icache。

下面分别详细介绍各模块的具体结构及功能:

取指电路中包括8个warp,每个warp对应1个pc地址计算单元,每个warp都有1个独立的取指pc地址和1个warp pc栈(其用来实现函数嵌套时pc地址的保存与恢复),每次请求取指的大小为8条指令,每个warp有1个2行的buffer缓存;

pc地址计算单元用于warp pc地址的计算,并向warp调度单元产生可调度的warp请求和warp pc地址;

其中,可调度的warp请求产生条件如下:

1)该warp缓存只要有一个空闲即可调度;

2)该warp数据准备好,即对大批量数据按照数据和数据类型进行分批加工处理好;

3)该warp的取指pc准备好;

a)初始的取指pc准备好是在该warp数据准备好的时刻;

b)之后的取指pc准备好需要根据取回的指令进行判断,取回的指令中有跳转指令时,等该跳转指令执行完该warp取指pc即准备好;反之,取回指令后该warp取指pc就准备好。

4)该warp的指令取到后,才能进行该warp的下一次调度。

warp pc地址计算的方法如下:

1)在warp数据准备好时,warp pc的初值为某个具体的数值;

2)根据warp pc地址值取回的指令确定下一次该warp pc地址的值;

a)取回的8条指令中不含跳转指令,则warp pc地址每次顺序加8;

b)取回的8条指令中含有跳转指令,则warp pc地址需要根据跳转指令的类型和跳转指令在8条指令中的位置进行warp pc地址的计算,warp pc值的更新时间根据跳转指令的执行情况确定,如表1所示。

表1含跳转指令的pc值计算

warp调度单元接收来自pc地址计算单元的warp的可调度请求和warp pc地址,监控取指信息fifo的满状态;在取指信息fifo不满的情况下根据warp的可调度请求进行轮询调度,输出当前调度的warp号;并通过该warp号进行warp pc选择,向取指信息fifo发送写fifo信号和写fifo数据;

取指信息fifo存储调度的warp号和pc地址,监控icache的空闲和fifo空状态,在icache空闲且fifo不空的情况下产生读fifo信号,接着根据icache空闲和读fifo信号产生取指请求,然后将读出的fifo数据(即warp号和取指pc地址)、取指请求输出给外部icache单元进行取指;

外部icache接收取指信息fifo的warp取指请求、warp号和取指pc地址,进而返回该warp要取的指令。

最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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