本發明涉及計算機硬件技術領域,尤其涉及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)中染色任務類型、掩碼,以及屬性數據準備好標志仍然由染色任務調度單元完成設置。
最后應說明的是,以上實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解;其依然可以對前述各實施例記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的精神和范圍。