本发明涉及计算机硬件技术领域,尤其涉及GPU统一染色处理阵列的调试结构。
背景技术:
随着图形化应用的不断增加,早期单靠CPU进行图形绘制的解决方案已经难以满足成绩和技术增长的图形处理需求,图形处理器(Graphic Processing Unit,GPU)应运而生。从1999年Nvidia发布第一款GPU产品至今,GPU技术的发展主要经历了固定功能流水线阶段、分离染色器架构阶段、统一染色器架构阶段,其图形处理能力不断提升,应用领域也从最初的图形绘制逐步扩展到通用计算领域。GPU流水线高速、并行的特征和灵活的可编程能力,为图形处理和通用并行计算提供了良好的运行平台。
目前,我国尚无基于统一染色架构的GPU,各领域显示控制系统中大量采用国外进口的商用GPU芯片。尤其是在军用领域中,国外进口商用GPU芯片存在温度和环境适应性差、无法保证电路本身或配套软件没有“后门”、包含大量军用领域不需要的冗余功能单元,功耗指标无法满足要求、商用GPU芯片更新换代快,随时面临停产、断档,难以满足武器装备持续保障等缺陷,在安全性、可靠性、保障性等方面的存在重大隐患。而且,出于政治、军事、经济等原因,国外对我国实行技术“封锁”和产品“垄断”,难以获得GPU芯片的底层技术资料,如寄存器资料、详细内部微架构、核心软件源码等,导致GPU功能、性能无法充分发挥,且移植性较差;上述问题严重制约了我国显示系统的独立研制和自主发展。
尤其是GPU统一染色阵列调试机制,是GPU图形处理流水线微架构的核心设计与验证技术,突破GPU统一染色阵列调试关键技术,研制高性能图形处理器芯片迫在眉睫。
技术实现要素:
本发明公开了一种GPU统一染色处理阵列的调试结构,能够实现在设计验证和使用过程中,主机对GPU统一染色阵列中所有染色任务属性数据的简便、高效访问。
本发明的技术解决方案是:
一种GPU统一染色处理阵列的调试结构,包括:
包含GPU与主机之间的总线接口单元(1)(PCIe EP)、染色任务调度单元(2)、多个统一染色阵列中的控制和状态寄存器(3)(CSR,Control and Status Register)、多个染色器簇程序入口寄存器(4)(SPE,Shader Program Entry),以及对统一染色阵列内部局部存储器进行访问的窗口访问控制逻辑(5);
主机通过总线接口单元(1)配置染色任务调度单元(2),确定染色任务的调度模式,即每个染色任务中多个独立顶点和像素的MASK标识和染色任务在SSC中的位置信息;
主机通过总线接口单元(1)配置控制和状态寄存器(3),确定统一染色阵列中多个SSC的工作模式;
主机通过总线接口单元(1)配置染色器簇程序入口寄存器(4),确定统一染色阵列中多个SSC执行染色程序时的入口地址;
主机通过总线接口单元(1)配置窗口访问控制逻辑(5),确定窗口控制逻辑的工作模式;
主机通过总线接口单元(1)根据染色任务调度单元(2)中的调度模式信息,通过访问窗口访问控制逻辑(5)中的地址窗口寄存器和数据窗口寄存器将要调试的染色任务数据送入统一染色阵列中不同的SSC中,调试准备工作结束;
统一染色阵列根据控制和状态寄存器(3)和染色器簇程序入口寄存器(4)并行执行染色程序,并将执行结果写入染色器内核的存储器中;
主机通过总线接口单元(1)通过访问窗口访问控制逻辑(5)中的地址窗口寄存器和数据窗口寄存器将调试的染色任务的执行结果从染色器内核的存储器中读回主机,调试工作结束。
所述GPU与主机之间的总线接口单元(1)能够对染色任务调度单元(2)、窗口访问控制逻辑(5),以及多个染色器簇程序入口寄存器(4)进行配置访问.
所述染色任务调度单元(2)进行顶点和像素染色任务的调度,至少包括对顶点和像素染色任务属性数据的传输,以及对染色任务类型、任务掩码和数据准备好标识的设置。
所述统一染色阵列中的控制和状态寄存器(3)包含一组寄存器,用来存储统一染色阵列中某个染色器簇的控制和状态信息,至少包括在当前染色器簇上运行的所有染色任务的类型、所有染色任务的掩码、数据准备好标识,以及染色任务执行完成标志。
所述染色器簇程序入口寄存器(4)用来存储统一染色阵列中某个染色器簇上,用来进行顶点和像素染色任务处理的顶点染色程序和像素染色程序在显示存储器中的入口地址;染色器簇程序入口寄存器(4)可以根据用户指定的顶点染色程序和像素染色程序在显示存储器中的实际起始地址随意指定。
所述窗口访问控制逻辑(5)包括多个专用的窗口寄存器;通过多个专用的窗口寄存器可以实现对统一染色阵列所有染色器簇中用来存储染色任务属性数据的局部存储器(LocalSRAM)进行访问;
所述窗口访问控制逻辑中的多个专用窗口寄存器至少包括地址窗口寄存器、数据窗口寄存器,以及窗口访问模式寄存器;其中,地址窗口寄存器用来存储需要访问的某个染色器簇中局部存储器的地址,以及本次访问的读写控制信号;数据窗口寄存器用来存储要写入某个染色器簇中局部存储器的数据,或者从某个染色器簇中局部存储器读出的数据,根据不同的图形状态参数访问数据通路宽度,包含一个或多个32b寄存器;窗口访问模式寄存器中的标志位用来在正常图形处理模式和调试模式间进行选择。
主机可以对窗口访问控制逻辑(5)中的窗口访问模式寄存器进行配置,使窗口工作于正常图形处理模式或者调试模式。
统一染色阵列中所有染色器簇中的局部存储器统一编址,不同染色任务的属性数据位于不同的局部存储器的不同地址段中。
总线接口单元的寄存器访问通路连接到染色任务调度单元、窗口访问控制逻辑,以及多个染色器簇程序入口寄存器中;染色任务调度单元的染色任务信息设置通路连接到统一染色阵列中的多个控制和状态寄存器单元(CSR)中;窗口寄存器中的地址窗口寄存器、数据窗口寄存器连接到所有统一染色阵列中所有染色器簇中。
在调试模式下,只有主机可以通过对多个窗口寄存器对统一染色阵列所有染色器簇中所有局部存储器进行访问,染色任务类型、状态等信息仍由染色任务调度单元负责设置;在正常图形处理模式下,染色任务调度单元可以对统一染色阵列所有染色器簇中所有局部存储器进行访问,并负责对染色任务类型、状态等信息进行设置。
本发明的技术效果是:
1、典型的GPU统一染色阵列中的染色任务的属性数据属于GPU内部状态,主机端无法获得。因此,在设计过程中如何在FPGA平台上验证大量染色任务并行执行时统一染色阵列计算结果的正确性是极为困难的工作。本发明中所述窗口访问机制提供了一种手段,可以通过窗口控制逻辑内部有限的几个专用寄存器,就能实现主机对数量众多的统一染色阵列中染色任务属性数据进行访问的目的,降低了FPGA验证过程难度。
2、典型的GPU统一染色阵列中包含2000000个以上的32b寄存器用来存储染色任务的属性数据,直接将如此数量众多的染色任务属性数据暴露给主机处理器会占用大量主机总线地址空间,而采用窗口访问机制可以将主机访问染色任务属性数据时需要占用的总线地址空间降低到不超过10个32b字,大幅降低主机需要访问的存储空间范围,为总线上其它设备留出了更大空间。
附图说明
图1是本发明基于窗口的GPU统一染色阵列调试结构框图。
具体实施方式
下面结合附图和具体实施例,对本发明的技术方案进行清楚、完整地表述。显然,所表述的实施例仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提所获得的所有其它实施例,都属于本发明的保护范围。
本发明提供一种GPU统一染色处理阵列的调试结构,包括:
包含GPU与主机之间的总线接口单元1(PCIe EP)、染色任务调度单元2、多个统一染色阵列中的控制和状态寄存器3(CSR,Control and Status Register)、多个染色器簇程序入口寄存器4(SPE,Shader Program Entry),以及对统一染色阵列内部局部存储器进行访问的窗口访问控制逻辑5;
主机通过总线接口单元1配置染色任务调度单元2,确定染色任务的调度模式,即每个染色任务中多个独立顶点和像素的MASK标识和染色任务在SSC中的位置信息;
主机通过总线接口单元1配置控制和状态寄存器3,确定统一染色阵列中多个SSC的工作模式;
主机通过总线接口单元1配置染色器簇程序入口寄存器4,确定统一染色阵列中多个SSC执行染色程序时的入口地址;
主机通过总线接口单元1配置窗口访问控制逻辑5,确定窗口控制逻辑的工作模式;
主机通过总线接口单元1根据染色任务调度单元2中的调度模式信息,通过访问窗口访问控制逻辑5中的地址窗口寄存器和数据窗口寄存器将要调试的染色任务数据送入统一染色阵列中不同的SSC中,调试准备工作结束;
统一染色阵列根据控制和状态寄存器3和染色器簇程序入口寄存器4并行执行染色程序,并将执行结果写入染色器内核的存储器中;
主机通过总线接口单元1通过访问窗口访问控制逻辑5中的地址窗口寄存器和数据窗口寄存器将调试的染色任务的执行结果从染色器内核的存储器中读回主机,调试工作结束。
所述GPU与主机之间的总线接口单元1能够对染色任务调度单元2、窗口访问控制逻辑5,以及多个染色器簇程序入口寄存器4进行配置访问.
所述染色任务调度单元2进行顶点和像素染色任务的调度,至少包括对顶点和像素染色任务属性数据的传输,以及对染色任务类型、任务掩码和数据准备好标识的设置。
所述统一染色阵列中的控制和状态寄存器3包含一组寄存器,用来存储统一染色阵列中某个染色器簇的控制和状态信息,至少包括在当前染色器簇上运行的所有染色任务的类型、所有染色任务的掩码、数据准备好标识,以及染色任务执行完成标志。
所述染色器簇程序入口寄存器4用来存储统一染色阵列中某个染色器簇上,用来进行顶点和像素染色任务处理的顶点染色程序和像素染色程序在显示存储器中的入口地址;染色器簇程序入口寄存器4可以根据用户指定的顶点染色程序和像素染色程序在显示存储器中的实际起始地址随意指定。
所述窗口访问控制逻辑5包括多个专用的窗口寄存器;通过多个专用的窗口寄存器可以实现对统一染色阵列所有染色器簇中用来存储染色任务属性数据的局部存储器(LocalSRAM)进行访问;
所述窗口访问控制逻辑中的多个专用窗口寄存器至少包括地址窗口寄存器、数据窗口寄存器,以及窗口访问模式寄存器;其中,地址窗口寄存器用来存储需要访问的某个染色器簇中局部存储器的地址,以及本次访问的读写控制信号;数据窗口寄存器用来存储要写入某个染色器簇中局部存储器的数据,或者从某个染色器簇中局部存储器读出的数据,根据不同的图形状态参数访问数据通路宽度,包含一个或多个32b寄存器;窗口访问模式寄存器中的标志位用来在正常图形处理模式和调试模式间进行选择。
主机可以对窗口访问控制逻辑5中的窗口访问模式寄存器进行配置,使窗口工作于正常图形处理模式或者调试模式。
统一染色阵列中所有染色器簇中的局部存储器统一编址,不同染色任务的属性数据位于不同的局部存储器的不同地址段中。
总线接口单元的寄存器访问通路连接到染色任务调度单元、窗口访问控制逻辑,以及多个染色器簇程序入口寄存器中;染色任务调度单元的染色任务信息设置通路连接到统一染色阵列中的多个控制和状态寄存器单元(CSR)中;窗口寄存器中的地址窗口寄存器、数据窗口寄存器连接到所有统一染色阵列中所有染色器簇中。
在调试模式下,只有主机可以通过对多个窗口寄存器对统一染色阵列所有染色器簇中所有局部存储器进行访问,染色任务类型、状态等信息仍由染色任务调度单元负责设置;在正常图形处理模式下,染色任务调度单元可以对统一染色阵列所有染色器簇中所有局部存储器进行访问,并负责对染色任务类型、状态等信息进行设置。
实施例
如图1所示,主机通过PCIe模块中的寄存器通道,可以配置窗口控制逻辑中的窗口访问模式寄存器,从而选择工作在正常工作模式或是调试工作模式。
在调试工作模式下,不同实现方案的访问流程可能存在差异,但并不使相应实现方案的本质脱离本发明方案的精神和范围。主机对统一染色阵列调试访问的典型流程如下:
第一步,主机通过总线接口单元的寄存器通道依次访问窗口控制逻辑中的地址和数据窗口寄存器,写入要写的染色器簇局部存储器地址和写标志,以及要写的数据。窗口控制逻辑会向统一染色阵列某一个染色簇局部存储器中写入任意指定的染色任务属性数据。这一步骤可以重复多次,从而最多向统一染色阵列中注入不超过最大染色任务数量的任意多个染色任务;
第二步,主机通过总线接口单元的寄存器通道访问多个染色器簇程序入口寄存器,写入不同染色器簇上不同类型染色任务的软件处理程序在显示存储器中的入口地址。染色器簇程序入口寄存器的数量与统一染色阵列中染色器簇的数量相同,从而使得每个染色器簇可以从任意的染色程序入口开始处理。但需要设置的染色器簇程序入口寄存器的数量应该与第一步中已经通过主机写入的染色任务的染色器簇的数量一致;
第三步,主机通过总线接口单元的寄存器通道访问染色任务调度单元上的统一染色阵列调试控制寄存器,然后,染色任务调度单元根据统一染色阵列调试控制寄存器的内容访问统一染色阵列中多个控制和状态寄存器单元(CSR),完成不同染色器簇上染色任务的类型和掩码信息,以及数据准备好标志的设置。需要设置的控制和状态寄存器单元的数量与第一步中已经通过主机写入的染色任务的染色器簇的数量一致;
第四步,统一染色阵列中的染色器簇在与其对应的控制和状态寄存器中数据准备好标志有效的情况下开始进行一个或多个染色任务的处理,每个染色器簇中的染色任务处理程序从其对应的局部存储器中取出顶点或像素染色任务的属性数据进行计算。计算完成后将染色任务属性数据的计算结果仍然写回到对应的局部存储器中;
第五步,主机通过总线接口单元的寄存器通道访问窗口控制逻辑中的地址窗口寄存器,写入要读的局部存储器地址和读标志;然后窗口控制逻辑会根据地址窗口寄存器中的内容将对应染色器簇中局部存储器的数据读回,并写入到数据窗口寄存器中。最后窗口控制逻辑会将数据窗口寄存器中的内容通过总线接口单元的寄存器通道返回到主机。
这样,主机就可以根据需要向统一染色阵列中的任意染色器簇中注入不超过最大染色任务数量的任意多个染色任务;并能够随意指定所注入染色任务的类型;还能够通过设定染色处理程序入口地址的方式随意指定不同染色器簇上不同类型染色任务的处理方式;还能够获得任意以及处理完成的染色任务的执行结果。从而,完整、方便的实现了对统一染色阵列的调试,为GPU芯片的FPGA验证,以及芯片流片后测试过程提供了重要手段。
在正常工作模式下,向统一染色阵列中注入染色任务属性数据的过程由染色任务调度单元完成,而不是主机。但对多个染色器簇程序入口寄存器的设置仍然由主机完成,统一染色阵列中多个控制和状态寄存器单元(CSR)中染色任务类型、掩码,以及属性数据准备好标志仍然由染色任务调度单元完成设置。
最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。