專利名稱:用于測試圖形處理單元性能的流量產生器和方法
技術領域:
本發(fā)明涉及流量產生器。更特定來說,本發(fā)明涉及用于測試圖形處理單元性能的流 量產生器。
背景技術:
圖形處理單元(GPU)是用于個人計算機、工作站或游戲控制臺的專用圖形渲染裝 置。現(xiàn)代GPU在操縱和顯示計算機圖形方面是非常高效的,而且其高度并行的結構使 得其針對一定范圍的復雜算法來說比通用CPU更高效。通常,GPU可安置在視頻卡頂 部,或者其可直接集成到母板中。
當測試GPU的性能時,布置一流量產生器和流量監(jiān)視器。流量產生器產生將由GPU 處理的數(shù)據(jù),且接著流量監(jiān)視器觀察流量,以便評估GPU的性能。由于現(xiàn)代GPU需要 處理具有不同格式的圖像數(shù)據(jù),因此對GPU的測試變得更復雜。
在高性能GPU的技術領域中,模擬發(fā)送一系列讀取和寫入請求的多個引擎("客戶 端")非常需要流量產生器。因此,必須在多個客戶端下測試GPU的存儲器系統(tǒng)的效率, 以查看設計是否可以滿足性能要求。舉例來說,HD視頻解碼流中的引擎包含SEC、 VLD、 MSPDEC、 MSPPP、顯示器和圖形引擎。然而,在設計階段的一開始,難以實施 如此多的真實客戶端。因此,需要一種能夠模仿多個不同引擎的流量產生器。 ,
發(fā)明內容
本發(fā)明提供一種能夠模仿多個可改變引擎以測試圖形處理單元性能的通用流量產 生器。本發(fā)明還提供用于使用單個裝置模擬多個可改變引擎以測試圖形處理單元性能的 較簡單方法。
根據(jù)本發(fā)明的一實施例,用于測試圖形處理單元性能的流量產生器包括至少一個 模擬引擎模塊,其用于產生至少一個讀取流和/或至少一個寫入流;以及輸出仲裁器, 其用于從包括所述至少一個讀取流和/或所述至少一個寫入流的群組中選擇將輸出的 流;其中所選擇的流經布置以輸出到圖形處理單元的存儲器系統(tǒng)。
根據(jù)本發(fā)明的另一實施例,用于測試圖形處理單元性能的方法包括設置至少一個 模擬引擎模塊和輸出仲裁器的配置;由所述至少一個模擬引擎模塊產生至少一個讀取流 和/或至少一個寫入流;由所述輸出仲裁器從包括所述至少一個讀取流和/或所述至少一個寫入流的群組中選擇將輸出的流;將所選擇的流輸出到所述圖形處理單元的存儲器系 統(tǒng)。
本發(fā)明的用于測試圖形處理單元性能的流量產生器和方法能夠模擬許多可改變客 戶端的流量而不用逐個實際產生這些客戶端。通過修改由配置模塊控制的配置,本發(fā)明 的流量產生器變?yōu)橛糜谠诓煌h(huán)境下測試圖形處理單元性能的較靈活的工具。
為了使本發(fā)明的上述和其它目的、特征和優(yōu)點更容易理解,下文詳細描述帶有圖式 的優(yōu)選實施例。
圖l展示本發(fā)明一優(yōu)選實施例的流量產生器100的框圖。 圖2展示劃分為256 ( 16x16)字節(jié)宏區(qū)塊的表面。
具體實施例方式
參看圖l,流量產生器100包含配置模塊12、多個模擬引擎模塊22、 24和26、讀 取緩沖器32、 36、 42和46、寫入緩沖器34、 38、 44和48、讀取流仲裁器52、寫入流 仲裁器54以及輸出仲裁器56。還如下揭示本發(fā)明中用于測試圖形處理單元性能的方法 的優(yōu)選實施例。模擬引擎模塊22、 24和26模擬多個引擎(或"客戶端"),其中每一引 擎產生讀取流和/或寫入流。產生的讀取流分別被臨時推入讀取緩沖器32、 36和42中, 且所產生的寫入流分別被臨時推入寫入緩沖器34、 38和44中。所有讀取緩沖器32、 36和42均電連接到讀取流仲裁器52,讀取流仲裁器52以循環(huán)(round robin)方式或 隨機地每次選擇存儲在讀取緩沖器32、 36和42中的讀取流中的一者,并接著將選定的 讀取流輸出到讀取緩沖器46。當采用循環(huán)方式時,依次選擇存儲在不同緩沖器中的流。 舉例來說,如果讀取仲裁器52采用循環(huán)方式,那么其循序從讀取緩沖器32、讀取緩沖 器36、讀取緩沖器42中選擇和輸出讀取流,并接著再次回到讀取緩沖器32。如果讀取 仲裁器52采用隨機方式,那么無法預測選定的讀取流。類似地,所有寫入緩沖器34、 38和44均電連接到寫入流仲裁器54,寫入流仲裁器54以循環(huán)方式或隨機地每次選擇 存儲在寫入緩沖器34、 38和44中的寫入流中的一者,并接著將選定的寫入流輸出到寫 入緩沖器48。讀取仲裁器52和寫入仲裁器48所采用的選擇方式取決于配置模塊12所 設置的配置。從讀取仲裁器52輸出的讀取流臨時存儲在讀取緩沖器46中,且從寫入仲 裁器54輸出的寫入流臨時存儲在寫入緩沖器48中。輸出仲裁器56接著選擇讀取流和 寫入流中的一者,并將其輸出到待測試的圖形處理單元。以相同方式,輸出仲裁器56 所采用的選擇方式取決于配置模塊12所設置的配置。根據(jù)本發(fā)明的優(yōu)選實施例,配置模塊12能夠確定流量產生器的特征,例如所模擬 引擎的數(shù)目和類型。也就是說,所模擬引擎模塊的數(shù)目不限于本發(fā)明中的三個。
此外,配置模塊12能夠界定每一所產生流的特征,例如處理量和存取模式。因此, 流量產生器所模擬的引擎可具有不同的行為。舉例來說,配置模塊12可界定每一讀取 或寫入請求的地址和大小。如果確定了開始地址0x1000,那么配置模塊12可進一步界 定存取模式,例如循序的或隨機的。關于循序模式,地址以相等間隔增加。舉例來說, 如果請求大小是32B,那么將存取的循序地址應為0x1000、 0x1020、 0x1040、 0x1060...。 循序模式可用于模擬具有節(jié)曲面(pitch surface)的顯示器流量。對于隨機模式,在每 一表面的范圍內隨機產生每一地址,例如,0x1300、 0x2200、 0xl800…。隨機模式可用 于模擬MSPDEC引擎中的運動補償流。對于某種其它流,可存在許多其它復雜的存取 模式。例如在視頻引擎中,將一種存取模式稱為"半循序的"。
如圖2所說明,將表面劃分為256 (16x16)字節(jié)宏區(qū)塊。對于具有N個宏區(qū)塊(圖 2中N=5)寬度的圖片,循序寫入?yún)^(qū)塊0...N-1的第一個64字節(jié),接著循序寫入?yún)^(qū)塊 0...N-1的第二個64字節(jié),以此類推。請注意,本發(fā)明的配置模塊12可在必要時采用 任何存取模式,以便模擬相關引擎。然而,由于存在許多種類的存取模式,因此在說明 書中將不描述每種存取模式。
在存取模式中,配置模塊12能夠界定每一個流的處理量,其將被確定何時發(fā)送請 求。以顯示器客戶端作為實例,對于最壞情況,每一行將具有2048個像素,每一像素 為4字節(jié),且監(jiān)視器應每7.28微秒掃描一行。因此獲得以下處理量
7.28x1000
如果想要測試高處理量流量是否將超出我們的圖形處理單元能力之外,那么將增加 處理量。請注意,由于每一客戶端將由若干讀取或寫入流組成,因此每一流在配置模塊 12中可能具有不同的存取模式和處理量參數(shù)。
根據(jù)本發(fā)明的優(yōu)選實施例,配置模塊包括用于記錄數(shù)據(jù)流的上述特征和參數(shù)的節(jié)文 件(knobfile)。當圖形處理單元的設計者希望測試圖形處理單元時,設計者可通過編輯 節(jié)文件使用流量產生器來模擬不同種類的多個引擎,以便在預定環(huán)境下測試圖形處理單 元。如果設計者希望在另一環(huán)境(具有不同客戶端)下測試圖形處理單元,那么修改節(jié) 文件即可。節(jié)文件用于模擬復制引擎,例如從源表面到目的地表面復制數(shù)據(jù)的客戶端。節(jié)文件 含有以下針對讀取流的內容
FermiPerfSim::COPYENGINE::readStreamNum 1 FermiPerfSim::COPYENGINE::readStreamName0 srcSurface FermiPerfSim::COPYENGINE::srcSurface::start—virt一address 0x10000 FermiPerfSim::COPYENGINE::srcSurface::surface—size—x 1600 FermiPerfSim::COPYENGINE::srcSurface::surface—size—y 1080 弁pitch, block, 16x16 MacroBlock
FermiPerfSim::COPYENGINE::srcSurface::surfaceJype 0 FermiPerfSim::COPYENGINE::srcSurface::burst_size0 32 弁throughput' MBytesPerSec
FermiPerfSim::COPYENGINE::srcSurface::throughput 200 弁access pattern, seq, ran, semi一seq…,seq for srcSurface FermiPerfSim::COPYENGINE::srcSurface::acc_pattem 0
在節(jié)文件中描述的以上內容中,前兩行界定讀取流數(shù)目和讀取流名稱,接下來的五 行界定開始地址、表面大小和表面類型,且接下來的五行界定突發(fā)(burst)大小、處理 量和存取模式。以相同方式,用于復制引擎的寫入流可如下界定
FermiPerfSim::numTGs 1
FermiPerfSim::Hublmpl::clientNameO COPYENGINE FermiPerfSim::COPYENGINE::readStreamNum 1
# source surfscsrs
FermiPerfSim::COPYENGINE::readStreamName0 srcSurface FermiPerfSim::COPYENGINE::srcSurface::start_virt—address 0x10000 FermiPerfSim::COPYENGINE::srcSurface::surface—size一x 1600 FermiPerfSim::COPYENGINE::srcSurface::surface一size—y 1080#pitch, block, 16x16 MacroBlock
FermiPerfSim::COPYENGINE::srcSurface::surface—type 0FermiPerfSim::COP丫ENGINE::srcSurface::burst—sizeO 32射hroughput, MBytesPerSec
FermiPerfSim::COPYENGINE::srcSurface::throughput 200#access pattern, seq, ran, semi—seq…'seq for srcSurfaceFermiPerfSim::COPYENGINE::srcSurface::acc—pattern 0
在讀取節(jié)文件中描述的以上內容之后,配置模塊12啟用流量產生器100以充當復制引擎。在本發(fā)明的優(yōu)選實施例中,節(jié)文件是外部配置文件。因此,用戶可容易地修改節(jié)文件的內容,以便使用流量產生器模擬不同的引擎。概括來說,為了使用流量產生器產生不同的引擎,用戶必須界定流量產生器具有多少引擎和多少流以及每一流特征為如何。可通過分析客戶端的行為或來自先前產生碼片的結果來獲得對流量產生器的此界定。因此,流量產生器不僅僅模擬已具有的客戶端,還有那些在實施中的客戶端。當用戶希望產生新客戶端時,只是將相關內容添加到描述此客戶端的流特征的節(jié)文件中。
如上所述,本發(fā)明的優(yōu)點是模擬許多客戶端的流量而不用逐個實際地產生這些客戶端。通過編輯節(jié)文件或存儲在配置模塊中的配置,本發(fā)明的流量產生器可模擬不同引擎,且因此變?yōu)橛糜跍y試圖形處理單元性能的較靈活的工具。
所屬領域的技術人員將了解,在不脫離本發(fā)明范圍或精神的情況下可對本發(fā)明的結構做出各種修改和變化。鑒于上述內容,希望本發(fā)明涵蓋對本發(fā)明的修改和變化,只要其處于所附權利要求書及其等效物的范圍內。
權利要求
1.一種用于測試圖形處理單元的存儲器系統(tǒng)的性能的流量產生器,其包括至少一個模擬引擎模塊,其用于產生至少一個讀取流和/或至少一個寫入流;以及輸出仲裁器,其用于從所述至少一個讀取流和所述至少一個寫入流中選擇一流;其中將所選擇的流輸出到所述圖形處理單元。
2. 根據(jù)權利要求1所述的流量產生器,其進一步包括至少一個第一讀取緩沖器,其電連接在所述至少一個模擬引擎模塊與所述讀取 流仲裁器之間,每一第一讀取緩沖器緩沖一個讀取流并將所述經緩沖讀取流傳遞 到所述讀取流仲裁器。
3. 根據(jù)權利要求2所述的流量產生器,其進一步包括至少一個第一寫入緩沖器,其電連接在所述至少一個模擬引擎模塊與所述寫入 流仲裁器之間,每一第一寫入緩沖器緩沖一寫入流并將所述經緩沖寫入流傳遞到 所述寫入流仲裁器。
4. 根據(jù)權利要求3所述的流量產生器,其進一步包括-讀取流仲裁器,其電連接在所述至少一個第一讀取緩沖器與所述輸出仲裁器之 間,用于從所述至少一個讀取流中選擇一讀取流并將所選擇的讀取流傳遞到所述 輸出仲裁器。
5. 根據(jù)權利要求4所述的流量產生器,其進一步包括寫入流仲裁器,其電連接在所述至少一個第一寫入緩沖器與所述輸出仲裁器之 間,用于從所述至少一個寫入流中選擇一寫入流并將所選擇的寫入流傳遞到所述 輸出仲裁器。
6. 根據(jù)權利要求5所述的流量產生器,其進一步包括第二讀取緩沖器,其電連接在所述讀取流仲裁器與所述輸出仲裁器之間,用于緩沖所述選定讀取流并將其傳遞到所述輸出仲裁器;以及第二寫入緩沖器,其電連接在所述寫入流仲裁器與所述輸出仲裁器之間,用于 緩沖所述選擇的寫入流并將其傳遞到所述輸出仲裁器。
7. 根據(jù)權利要求1所述的流量產生器,其進一步包括配置模塊,其用于控制所述至少一個模擬引擎模塊的配置,并控制由所述模擬 引擎模塊產生的所述讀取流和/或寫入流的特征。
8. 根據(jù)權利要求7所述的流量產生器,其中所述配置涉及每一模擬引擎模塊的數(shù)據(jù) 處理量、由每一模擬引擎模塊產生的讀取和/或寫入流的包大小以及存取模式。
9. 根據(jù)權利要求7所述的流量產生器,其中所述配置進一步涉及所述輸出仲裁器、 所述讀取流仲裁器和所述寫入流仲裁器的選擇方式。
10. 根據(jù)權利要求7所述的流量產生器,其中所述配置模塊根據(jù)外部配置文件的內容 來控制所述配置。
11. 一種用于測試圖形處理單元的性能的方法,其包括設置至少一個模擬引擎模塊和輸出仲裁器的配置;由所述至少一個模擬引擎模塊產生至少一個讀取流和/或至少一個寫入流; 由所述輸出仲裁器從包括所述至少一個讀取流和/或所述至少一個寫入流的群組 中選擇將輸出的流;將所選擇的流輸出到所述圖形處理單元。
12. 根據(jù)權利要求11所述的方法,其進一步包括在產生每一讀取流之后,分別緩沖每一讀取流。
13. 根據(jù)權利要求12所述的方法,其進一步包括在產生每一寫入流之后,至少一個第二寫入緩沖器分別緩沖每一寫入流。
14. 根據(jù)權利要求13所述的方法,其進一步包括在緩沖所述至少一個讀取流之后,從所述至少一個讀取流中選擇一讀取流。
15. 根據(jù)權利要求14所述的方法,其進一步包括在緩沖所述至少一個寫入流之后,從所述至少一個寫入流中選擇一寫入流。
16. 根據(jù)權利要求15所述的方法,其進一步包括緩沖所選擇的讀取流并將其傳遞到所述輸出仲裁器。
17. 根據(jù)權利要求16所述的方法,其進一步包括緩沖所選擇的寫入流并將其傳遞到所述輸出仲裁器。
18. 根據(jù)權利要求11所述的方法,其中布置所述至少一個模擬引擎模塊的所述配置以改變由所述至少一個模擬引擎模塊產生的所述讀取流和/或寫入流的特征。
19. 根據(jù)權利要求18所述的方法,其中所述配置涉及每一模擬引擎模塊的數(shù)據(jù)處理量、由每一模擬引擎模塊產生的讀取或寫入流的包大小以及存取模式。
20. 根據(jù)權利要求18所述的方法,其中所述配置進一步涉及選擇用于選擇所述讀取流 和/或寫入流的方式。
全文摘要
本發(fā)明涉及一種流量產生器和一種用于測試圖形處理單元的存儲器系統(tǒng)的性能的方法。所述流量產生器包括至少一個模擬引擎模塊,其每一者用于產生至少一個讀取流和/或至少一個寫入流;以及輸出仲裁器,其用于從包括所述至少一個讀取流和/或所述至少一個寫入流的群組中選擇將輸出的流;其中所選擇的流經布置以輸出到圖形處理單元的所述存儲器系統(tǒng)。
文檔編號G06F11/267GK101676878SQ20081021188
公開日2010年3月24日 申請日期2008年9月18日 優(yōu)先權日2008年9月18日
發(fā)明者克雷格·M·維騰布林克, 卡羅爾·梅內塞斯, 朱春雷, 柯·余, 鈺 白, 蔣正偉 申請人:輝達公司