TWI706380B - 具有額外情境的圖形系統 - Google Patents

具有額外情境的圖形系統 Download PDF

Info

Publication number
TWI706380B
TWI706380B TW108129308A TW108129308A TWI706380B TW I706380 B TWI706380 B TW I706380B TW 108129308 A TW108129308 A TW 108129308A TW 108129308 A TW108129308 A TW 108129308A TW I706380 B TWI706380 B TW I706380B
Authority
TW
Taiwan
Prior art keywords
graphics
processing unit
graphics processing
memory
processing
Prior art date
Application number
TW108129308A
Other languages
English (en)
Other versions
TW201946031A (zh
Inventor
亞奇雪克 亞布
安庫 沙
安奴普立 卡爾拉
拉達克南 文卡塔拉
慕拉里 拉馬多斯
普拉庫馬 瑟提
喬伊迪普 雷
布蘭特 因斯科
錢拉卡蘭 薩克帝佛
迪帕克 凡博
艾蒙斯特阿法 歐德亞麥德維爾
雨果 拉韋
桑原敦男
Original Assignee
美商英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW201946031A publication Critical patent/TW201946031A/zh
Application granted granted Critical
Publication of TWI706380B publication Critical patent/TWI706380B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2215/00Indexing scheme for image rendering
    • G06T2215/16Using real world measurements to influence rendering
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Indexing, Searching, Synchronizing, And The Amount Of Synchronization Travel Of Record Carriers (AREA)

Abstract

電子處理系統的實施例可以包括應用處理器、通訊地耦合到應用處理器的永久儲存媒體以及通訊地耦合到應用處理器的圖形子系統。圖形子系統可以包括用以處理圖形工作量的第一圖形引擎及用以從第一圖形引擎卸載至少一部分圖形工作量的第二圖形引擎。第二圖形引擎可以包括低精度計算引擎。該系統還可以包括容置第二圖形引擎的穿戴式顯示器。其他實施例被揭示並主張。

Description

具有額外情境的圖形系統
實施例一般有關資料處理及經由圖形處理單元的圖形處理。更具體而言,實施例有關具有額外情境的圖形系統。
目前的平行圖形資料處理包括被發展來對圖形資料執行特定操作的系統及方法,例如像是線性內插、曲面細分、光柵化、紋理映射、深度測試等。傳統上,圖形處理器使用固定功能計算單元處理圖形資料;然而,最近,圖形處理器的部分已經被製成為可編程的,使得這些處理器能夠支援更廣類別的操作來處理頂點及片段資料。各種圖形操作可以分成工作量。
100‧‧‧計算系統
101‧‧‧處理子系統
102‧‧‧處理器
104‧‧‧系統記憶體
105‧‧‧記憶體集線器
106‧‧‧通訊鏈路
107‧‧‧I/O集線器
108‧‧‧輸入裝置
110A‧‧‧顯示裝置
111‧‧‧I/O子系統
112‧‧‧平行處理器
113‧‧‧通訊鏈路
114‧‧‧系統儲存單元
116‧‧‧I/O開關
118‧‧‧網路轉接器
119‧‧‧無線網路轉接器
120‧‧‧附加裝置
200‧‧‧平行處理器
202‧‧‧平行處理單元
204‧‧‧I/O單元
206‧‧‧主機介面
208‧‧‧前端
210‧‧‧排程器
212‧‧‧處理叢集陣列
214A‧‧‧叢集
214B‧‧‧叢集
214N‧‧‧叢集
216‧‧‧記憶體交叉開關
218‧‧‧記憶體介面
220A‧‧‧分區單元
220B‧‧‧分區單元
220N‧‧‧分區單元
224A‧‧‧記憶體單元
224B‧‧‧記憶體單元
224C‧‧‧記憶體單元
222‧‧‧平行處理器記憶體
220‧‧‧分區單元
221‧‧‧L2快取
225‧‧‧訊框緩衝介面
226‧‧‧ROP
214‧‧‧處理叢集
232‧‧‧管線管理器
234‧‧‧圖形多處理器
236‧‧‧紋理單元
240‧‧‧資料交叉開關
242‧‧‧preROP
245‧‧‧MMU
254‧‧‧指令單元
256‧‧‧位址映射單元
258‧‧‧暫存器檔案
262‧‧‧GPGPU核心
266‧‧‧載入/儲存單元
268‧‧‧記憶體及快取互連
270‧‧‧共享記憶體
272‧‧‧快取記憶體
325‧‧‧圖形多處理器
327‧‧‧互連結構
330‧‧‧指令快取
332A‧‧‧指令單元
332B‧‧‧指令單元
334A‧‧‧暫存器檔案
334B‧‧‧暫存器檔案
336A‧‧‧GPGPU核心
336B‧‧‧GPGPU核心
337A‧‧‧GPGPU核心
337B‧‧‧GPGPU核心
338A‧‧‧GPGPU核心
338B‧‧‧GPGPU核心
340A‧‧‧載入/儲存單元
340B‧‧‧載入/儲存單元
342‧‧‧快取記憶體
344A‧‧‧紋理單元
344B‧‧‧紋理單元
346‧‧‧共享記憶體
350‧‧‧圖形多處理器
352‧‧‧互連結構
354‧‧‧指令快取
356A‧‧‧執行資源
356B‧‧‧執行資源
356C‧‧‧執行資源
356D‧‧‧執行資源
358A‧‧‧快取記憶體
358B‧‧‧快取記憶體
360A‧‧‧紋理單元
360B‧‧‧紋理單元
360C‧‧‧紋理單元
360D‧‧‧紋理單元
362‧‧‧共享記憶體
401‧‧‧處理器記憶體
402‧‧‧處理器記憶體
405‧‧‧主機處理器/多核心處理器
406‧‧‧多核心處理器
407‧‧‧處理器
410‧‧‧GPU
411‧‧‧GPU
412‧‧‧GPU
413‧‧‧GPU
420‧‧‧GPU記憶體
421‧‧‧GPU記憶體
422‧‧‧GPU記憶體
423‧‧‧GPU記憶體
425‧‧‧代理電路
426A‧‧‧快取
426B‧‧‧快取
426C‧‧‧快取
430‧‧‧記憶體互連
431‧‧‧記憶體互連/圖形處理引擎
432‧‧‧圖形處理引擎
433‧‧‧高速鏈路
434‧‧‧圖形記憶體
435‧‧‧介面
436‧‧‧加速器整合電路
437‧‧‧介面
438‧‧‧快取
439‧‧‧記憶體管理單元(MMU)
439A‧‧‧記憶體管理單元(MMU)
439B‧‧‧記憶體管理單元(MMU)
439C‧‧‧記憶體管理單元(MMU)
439D‧‧‧記憶體管理單元(MMU)
439E‧‧‧記憶體管理單元(MMU)
440‧‧‧高速鏈路
441‧‧‧高速鏈路/系統記憶體
442‧‧‧高速鏈路
443‧‧‧高速鏈路
444‧‧‧高速鏈路/獲取
445‧‧‧高速鏈路/暫存器
446‧‧‧圖形加速模組
447‧‧‧中斷管理電路
448‧‧‧情境管理電路
450‧‧‧GPU記憶體互連
451‧‧‧GPU記憶體互連
452‧‧‧GPU記憶體互連
453‧‧‧GPU記憶體互連
456‧‧‧共享快取
460A‧‧‧核心
460B‧‧‧核心
460C‧‧‧核心
460D‧‧‧核心
461A‧‧‧轉換後備緩衝區(TLB)
461B‧‧‧轉換後備緩衝區(TLB)
461C‧‧‧轉換後備緩衝區(TLB)
461D‧‧‧轉換後備緩衝區(TLB)
462A‧‧‧快取
462B‧‧‧快取
462C‧‧‧快取
462D‧‧‧快取
464‧‧‧一致性匯流排
482‧‧‧應用有效位址空間
483‧‧‧處理元件
484‧‧‧工作描述符(WD)
485‧‧‧OS虛擬位址空間
486‧‧‧段/頁表
490‧‧‧加速器整合片
491‧‧‧WD獲取單元
492‧‧‧IINT
493‧‧‧有效位址
492‧‧‧中斷事件
495‧‧‧作業系統(OS)
494A‧‧‧偏差/一致性管理電路
494B‧‧‧偏差/一致性管理電路
494C‧‧‧偏差/一致性管理電路
494D‧‧‧偏差/一致性管理電路
494E‧‧‧偏差/一致性管理電路
496‧‧‧超管理器
498‧‧‧超管理器實位址空間
500‧‧‧圖形處理管線
502‧‧‧資料組合器
504‧‧‧頂點處理單元
506‧‧‧基元組合器
508‧‧‧曲面細分控制處理單元
510‧‧‧曲面細分單元
512‧‧‧曲面細分評估處理單元
514‧‧‧基元組合器
516‧‧‧幾何處理單元
518‧‧‧基元組合器
520‧‧‧視埠縮放、剔除及裁切單元
522‧‧‧光柵化器
524‧‧‧片段/像素處理單元
526‧‧‧光柵操作單元
528‧‧‧記憶體介面
611‧‧‧應用處理器
612‧‧‧永久儲存媒體
613‧‧‧圖形子系統
600‧‧‧電子處理系統
614‧‧‧第一圖形引擎
615‧‧‧第二圖形引擎
700‧‧‧圖形設備
721‧‧‧第一圖形引擎
722‧‧‧第二圖形引擎
723‧‧‧低精度計算引擎
800‧‧‧方法
831‧‧‧步驟方塊
832‧‧‧步驟方塊
833‧‧‧步驟方塊
834‧‧‧步驟方塊
835‧‧‧步驟方塊
836‧‧‧步驟方塊
837‧‧‧步驟方塊
838‧‧‧步驟方塊
839‧‧‧步驟方塊
900‧‧‧圖形系統
901‧‧‧3D管線
903‧‧‧時間扭曲
905‧‧‧低精度計算引擎
907‧‧‧記憶體介面
909‧‧‧選擇器
1000‧‧‧圖形系統
1013‧‧‧注視點渲染呈現任務
1011‧‧‧主機側
1012‧‧‧HMD側
1100‧‧‧HMD系統
1102‧‧‧框架
1104‧‧‧左眼顯示器
1106‧‧‧右眼顯示器
1108‧‧‧左下視相機
1110‧‧‧右下視相機
1112‧‧‧左前視相機
1114‧‧‧右前視相機
1116‧‧‧左側視相機
1118‧‧‧右側視相機
1120‧‧‧帶
1102‧‧‧框架
1104‧‧‧左眼顯示器
1106‧‧‧右眼顯示器
1108‧‧‧左下視相機
1110‧‧‧右下視相機
1112‧‧‧左前視相機
1114‧‧‧右前視相機
1116‧‧‧左側視相機
1118‧‧‧右側視相機
1200‧‧‧電力單元
1202‧‧‧輸入相機
1204‧‧‧處理器系統
1206‧‧‧I/O橋接器
1207‧‧‧顯示裝置
1208‧‧‧音頻輸出模組
1210‧‧‧音頻輸入模組
1212‧‧‧左音頻輸出
1214‧‧‧右音頻輸出
1216‧‧‧左音頻輸入
1218‧‧‧右音頻輸入
1220‧‧‧運動追蹤模組
1222‧‧‧無線模組
1224‧‧‧網路轉接器
1300‧‧‧一般處理叢集(GPC)
1304‧‧‧多處理器(SM)
1302‧‧‧管線管理器
1306‧‧‧L1.5快取
1308‧‧‧工作分配交叉開關
1310‧‧‧記憶體管理單元(MMU)
1312‧‧‧紋理單元
1314‧‧‧預光柵操作(preROP)單元
1402‧‧‧基元分配器(PD)
1404‧‧‧頂點屬性提取單元(VAF)
1406‧‧‧頂點、曲面細分、幾何處理單元(VTG)
1408‧‧‧視埠縮放、剔除及裁切單元(VPC)
1410‧‧‧拼貼單元
1412‧‧‧設定單元
1414‧‧‧光柵化器
1416‧‧‧像素著色單元(PS)
1418‧‧‧光柵操作單元(ROP)
1420‧‧‧世界空間管線
1500‧‧‧串流多處理器(SM)
1502‧‧‧指令快取
1504‧‧‧排程器單元
1506‧‧‧暫存器檔案
1508‧‧‧核心
1510‧‧‧雙倍精度單元(DPU)
1512‧‧‧特殊功能單元(SFU)
1514‧‧‧載入/儲存單元(LSU)
1516‧‧‧互連網路
1518‧‧‧共享記憶體
1520‧‧‧紋理單元/L1快取
1522‧‧‧指令排程單元
1600‧‧‧處理系統
1602‧‧‧處理器
1604‧‧‧快取記憶體
1606‧‧‧暫存器檔案
1607‧‧‧處理器核心
1608‧‧‧圖形處理器
1609‧‧‧指令集
1610‧‧‧處理器匯流排
1612‧‧‧外部圖形處理器
1616‧‧‧記憶體控制器集線器
1620‧‧‧記憶體
1621‧‧‧指令
1622‧‧‧資料
1624‧‧‧資料儲存裝置
1626‧‧‧無線收發器
1628‧‧‧韌體介面
1630‧‧‧I/O控制器集線器(ICH)
1634‧‧‧網路控制器
1640‧‧‧傳統I/O控制器
1642‧‧‧USB控制器
1644‧‧‧鍵盤/滑鼠
1646‧‧‧音頻控制器
1700‧‧‧處理器
1702A‧‧‧核心
1702N‧‧‧核心
1704A‧‧‧快取單元
1704N‧‧‧快取單元
1706‧‧‧共享快取單元
1708‧‧‧圖形處理器
1710‧‧‧系統代理核心
1711‧‧‧顯示控制器
1712‧‧‧環狀互連/互連環
1713‧‧‧I/O鏈路
1716‧‧‧匯流排控制器單元
1718‧‧‧嵌入式記憶體模組
1800‧‧‧圖形處理器
1802‧‧‧顯示控制器
1804‧‧‧塊影像傳送(BLIT)引擎
1810‧‧‧圖形處理引擎(GPE)
1812‧‧‧3D管線
1815‧‧‧3D/媒體子系統
1816‧‧‧媒體管線
1806‧‧‧視頻編解碼器引擎
1814‧‧‧記憶體介面
1820‧‧‧顯示裝置
1903‧‧‧命令串流器
1910‧‧‧圖形處理引擎(GPE)
1912‧‧‧3D管線
1914‧‧‧執行單元陣列
1916‧‧‧媒體管線
1930‧‧‧取樣引擎
1932‧‧‧去雜訊/去交錯模組
1934‧‧‧運動估計模組
1936‧‧‧影像縮放及濾波模組
2000‧‧‧圖形處理器
2002‧‧‧環狀互連
2003‧‧‧命令串流器
2004‧‧‧管線前端
2030‧‧‧視頻品質引擎(VQE)
2033‧‧‧多格式編碼/解碼(MFX)
2034‧‧‧視頻前端
2036‧‧‧幾何管線
2037‧‧‧媒體引擎
2050A‧‧‧子核心
2050N‧‧‧子核心
2052A‧‧‧執行單元(EU)
2052N‧‧‧執行單元(EU)
2054A‧‧‧取樣器
2054N‧‧‧取樣器
2060A‧‧‧子核心
2060N‧‧‧子核心
2062A‧‧‧執行單元(EU)
2062N‧‧‧執行單元(EU)
2064A‧‧‧取樣器
2064N‧‧‧取樣器
2070A‧‧‧共享資源
2070N‧‧‧共享資源
2080A‧‧‧圖形核心
2080N‧‧‧圖形核心
2100‧‧‧執行緒執行邏輯
2102‧‧‧像素著色器
2104‧‧‧執行緒分派器
2106‧‧‧指令快取
2108A‧‧‧執行單元(EU)
2108B‧‧‧執行單元(EU)
2108C‧‧‧執行單元(EU)
2108D‧‧‧執行單元(EU)
2108N-1‧‧‧執行單元(EU)
2108N‧‧‧執行單元(EU)
2110‧‧‧取樣器
2112‧‧‧資料快取
2114‧‧‧資料埠
2200‧‧‧圖形處理器指令格式
2210‧‧‧128位元指令
2212‧‧‧運算碼
2213‧‧‧索引欄位
2214‧‧‧指令控制欄位
2216‧‧‧執行大小欄位
2214‧‧‧控制
2218‧‧‧目的地
2220‧‧‧SRC0
2222‧‧‧SRC1
2224‧‧‧SRC2
2226‧‧‧存取/位址模式資訊
2212‧‧‧運算碼
2213‧‧‧索引
2214‧‧‧控制
2218‧‧‧目的地
2240‧‧‧運算碼解碼
2242‧‧‧移動/邏輯
2244‧‧‧流控制
2246‧‧‧雜項
2248‧‧‧平行數學
2250‧‧‧向量數學
2300‧‧‧圖形處理器
2302‧‧‧環狀互連
2303‧‧‧命令串流器
2305‧‧‧頂點獲取器
2307‧‧‧頂點著色器
2311‧‧‧外殼著色器
2313‧‧‧曲面細分器
2317‧‧‧域著色器
2319‧‧‧幾何著色器
2323‧‧‧流出單元
2329‧‧‧裁切器
2330‧‧‧媒體管線
2331‧‧‧執行緒排程器
2334‧‧‧視頻前端
2337‧‧‧媒體引擎
2340‧‧‧顯示引擎
2341‧‧‧2D引擎
2343‧‧‧顯示控制器
2351‧‧‧L1快取
2352A‧‧‧執行單元
2352B‧‧‧執行單元
2354‧‧‧取樣器
2356‧‧‧資料埠
2358‧‧‧紋理快取
2370‧‧‧渲染呈現輸出管線/渲染呈現引擎
2373‧‧‧光柵化器
2375‧‧‧L3快取
2379‧‧‧深度快取
2377‧‧‧像素操作組件
2378‧‧‧渲染呈現快取
2400‧‧‧圖形處理器命令格式
2402‧‧‧客戶端
2404‧‧‧運算碼
2405‧‧‧子運算碼
2406‧‧‧資料
2408‧‧‧命令大小
2410‧‧‧圖形處理器命令序列
2412‧‧‧管線清除命令
2413‧‧‧管線選擇命令
2414‧‧‧管線控制命令
2416‧‧‧返回緩衝器狀態命令
2420‧‧‧管線確定
2422‧‧‧3D
2424‧‧‧媒體管線
2430‧‧‧3D管線狀態
2432‧‧‧3D基元
2434‧‧‧執行
2440‧‧‧媒體管線狀態命令
2442‧‧‧媒體物件命令
2444‧‧‧執行命令
2500‧‧‧資料處理系統
2522‧‧‧圖形處理應用程式編程介面(圖形API)
2510‧‧‧3D圖形應用
2520‧‧‧作業系統
2522‧‧‧圖形API(例如,直接3D/開放圖形庫)
2524‧‧‧著色編譯器
2526‧‧‧使用者模式圖形驅動程式
2527‧‧‧著色編譯器
2528‧‧‧作業系統核心模式功能
2529‧‧‧核心模式圖形驅動程式
2530‧‧‧處理器
2532‧‧‧圖形處理器
2534‧‧‧通用處理器核心
2550‧‧‧記憶體
2600‧‧‧IP核心發展系統
2610‧‧‧軟體模擬
2615‧‧‧RTL設計
2620‧‧‧硬體模型(硬體描述語言或實體設計資料)
2630‧‧‧設計工具
2640‧‧‧非揮發性記憶體
2650‧‧‧有線連接
2660‧‧‧無線連接
2665‧‧‧製造設施
2705‧‧‧應用處理器
2710‧‧‧圖形處理器
2715‧‧‧影像處理器
2720‧‧‧視頻處理器
2700‧‧‧單晶片積體電路
2725‧‧‧USB控制器
2730‧‧‧UART
2735‧‧‧SPI/SDIO控制器
2740‧‧‧I2S/I2C控制器
2745‧‧‧顯示裝置
2750‧‧‧高解析度多媒體介面(HDMI)控制器
2755‧‧‧行動工業處理器介面(MIPI)顯示介面
2760‧‧‧快閃記憶體子系統
2765‧‧‧記憶體控制器/記憶體
2770‧‧‧安全引擎
透過閱讀以下說明書及所附申請專利範圍,且透過參照以下圖式,實施例的各種優點對於熟於此技者 將變得明顯,其中:圖1是顯示被配置用以實作本文描述的實施例的一或多個態樣的電腦系統的方塊圖;圖2A-2D繪示根據一實施例的平行處理器組件;圖3A-3B是根據實施例的圖形多處理器的方塊圖;圖4A-4F顯示其中多個GPU通訊地耦合到多個多核心處理器的示例性架構;圖5繪示根據一實施例的圖形處理管線;圖6是根據實施例之電子處理系統的示例的方塊圖;圖7是根據一實施例的圖形設備的示例的方塊圖;圖8A至8C是根據實施例之處理圖形工作量的方法的示例的流程圖;圖9是根據一實施例之圖形系統的示例的方塊圖;圖10是根據實施例的圖形系統的另一示例的方塊圖;圖11是根據一實施例的頭戴式顯示器(HMD)系統的示例的圖示;圖12是根據一實施例之包括於圖11之HMD系統中的功能組件的示例的方塊圖; 圖13是根據一實施例之包括於平行處理單元中之通用處理叢集的示例的方塊圖;圖14是根據一實施例之可以在平行處理單元內實作的圖形處理管線的示例的概念圖;圖15是根據一實施例之串流多處理器的示例的方塊圖;圖16-18是根據一實施例的資料處理系統的概觀的示例的方塊圖;圖19是根據一實施例之圖形處理引擎的示例的方塊圖;圖20-22是根據一實施例之執行單元的示例的方塊圖;圖23是根據一實施例之圖形管線的示例的方塊圖;圖24A-24B是根據一實施例之圖形管線編程的示例的方塊圖;圖25是根據一實施例之圖形軟體體系架構的示例的方塊圖;圖26是根據一實施例之智慧財產權(IP)核心發展系統的示例的方塊圖;以及圖27是根據一實施例之系統單晶片積體電路的示例的方塊圖。
【發明內容】及【實施方式】
在以下說明中,敘述許多特定細節以提供對本發明更透徹的理解。然而,對於熟於此技者來說明顯的是,可以在沒有此等特定細節中的一或多個的情況下實施本發明。在其他情況下,為避免模糊本發明,未予以描述眾所周知的特徵。
系統概述
圖1是繪示經配置用以實施本文中所描述的實施例的一或多個態樣的計算系統100的方塊圖。計算系統100包括具有經由互連路徑通訊的一或多個處理器102及系統記憶體104的處理子系統101,該互連路徑可包括記憶體集線器105。記憶體集線器105可以是晶片組組件內的獨立組件,或者可以被整合於一或多個處理器102內。記憶體集線器105經由通訊鏈路106與I/O子系統111耦合。I/O子系統111包括I/O集線器107,其可使計算系統100接收來自一或多個輸入裝置108的輸入。此外,I/O集線器107能使可包括在一或多個處理器102中的顯示控制器提供輸出給一或更多顯示裝置110A。在一實施例中,與I/O集線器107耦合的一或多個顯示裝置110A可以包括本地、內部或嵌入式顯示裝置。
在一實施例中,處理子系統101包括經由匯流排或其他通訊鏈路113耦合到記憶體集線器105的一或多個平行處理器112。通訊鏈路113可為任何數量之基於標準的通訊鏈路技術或協定,例如但不侷限於PCI Express,或 者可為供應商特定的通訊介面或通訊架構。在一實施例中,一或多個平行處理器112形成計算集中式平行或向量處理系統,其能包括大量的處理核心及/或處理叢集,諸如許多整合核心(MIC)處理器。在一實施例中,一或多個平行處理器112形成圖形處理子系統,其能輸出像素到經由I/O集線器107耦合的一或多個顯示裝置110A中之一者。一或多個平行處理器112亦能包括顯示控制器及顯示介面(未顯示)以實作與一或多個顯示裝置110B的直接連接。
在I/O子系統111內,系統儲存單元114可連接到I/O集線器107以提供計算系統100的儲存機構。I/O開關116可用於提供介面機構以實作I/O集線器107與其他組件之間的連接,其他組件諸如可被整合到平台中之網路轉接器118及/或無線網路轉接器119、以及可經由一或多個附加裝置120加入的各種其他裝置。網路轉接器118可以是乙太網路轉接器或另一有線網路轉接器。無線網路轉接器119可包括Wi-Fi、藍芽、近場通訊(NFC)或包括一或多個無線無線電的其他網路裝置中的一或多者。
計算系統100能包括未被明確顯示的其他組件,包括USB或其他埠連接、光儲存驅動器、視頻擷取裝置等等,也可以連接到I/O集線器107。互連圖1中的各種組件的通訊路徑可以使用任何適合的協定加以實作,諸如基於PCI(周邊組件互連)的協定(例如,PCI-Express)、或任何其他匯流排或點對點通訊介面及/或協定(諸如NV-Link高速互連或本領域中已知的互連協定)。
在一實施例中,一或多個平行處理器112包含針對圖形及視頻處理而最佳化的電路,包括例如視頻輸出電路,並且構成圖形處理單元(GPU)。在另一實施例中,一或多個平行處理器112包含針對通用處理而最佳化的電路,同時保留在此更詳細描述的基本計算架構。在又一實施例中,計算系統100的組件可以與單一積體電路上的一或多個其他系統元件整合。例如,一或多個平行處理器112、記憶體集線器105、處理器102及I/O集線器107可以整合到系統單晶片(SoC)積體電路中。或者,計算系統100的組件可以被整合到單一封裝中以形成系統封裝(SIP)配置。在一實施例中,計算系統100的組件的至少一部分可以被整合到多晶片模組(MCM)中,其可以與其他多晶片模組互連成模組化計算系統。
應該理解,這裡顯示的計算系統100是說明性的,並且變化及修改是可能的。包括橋接器的數量及佈置,處理器102的數量以及平行處理器112的數量的連接拓撲可以根據需要進行修改。例如,在一些實施例中,系統記憶體104直接連接到處理器102而不是透過橋接器,而其他裝置經由記憶體集線器105及處理器102與系統記憶體104通訊。在其他替代方案中,平行處理器112連接到I/O集線器107或直接連接到一或多個處理器102中的一者,而不連接到記憶體集線器105。在其他實施例中,I/O集線器107及記憶體集線器105可被整合到單晶片中。一些實施例可包括經由多個插座附接的二或更多組處理器102,其可 以與平行處理器112的二或更多實例耦合。
此處顯示的一些特定組件是可選的且可以不包括在計算系統100的所有實作中。舉例來說,可以支援任何數量的擴充卡(add-in card)或周邊設備,或者可以排除一些組件。此外,一些架構可以針對與圖1中所示的那些組件類似的組件使用不同的術語。例如,在一些架構中,記憶體集線器105可被稱為北橋(Northbridge),而I/O集線器107可被稱為南橋(Southbridge)。
圖2A顯示根據一實施例的平行處理器200。平行處理器200的各種組件可以使用諸如可程式處理器、專用積體電路(ASIC)或現場可程式閘陣列(FPGA)的一或多個積體電路設備來實作。繪示的平行處理器200是圖1所示之根據一實施例的一或多個平行處理器112的變體。
在一實施例中,平行處理器200包括平行處理單元202。平行處理單元包括I/O單元204,其能夠與包括平行處理單元202的其他實例的其他裝置進行通訊。I/O單元204可以直接連接到其他裝置。在一實施例中,I/O單元204透過使用諸如記憶體集線器105的集線器或交換機介面與其他裝置連接。記憶體集線器105與I/O單元204之間的連接形成通訊鏈路113。在平行處理單元202以內,I/O單元204與主機介面206及記憶體交叉開關(crossbar)216連接,其中主機介面206接收針對執行處理操作的命令,且記憶體交叉開關216接收針對執行記憶體操作的命令。
當主機介面206經由I/O單元204接收到命令 緩衝器時,主機介面206可以引導工作操作以執行那些到前端208的命令。在一實施例中,前端208與排程器210耦合,排程器210被配置用以將命令或其他工作項目分配到處理叢集陣列212。在一實施例中,排程器210確保處理叢集陣列212被正確配置且在任務被分配到處理叢集陣列212的處理叢集之前處於有效狀態。在一實施例中,排程器210經由在微控制器上執行的韌體邏輯來實作。微控制器實作的排程器210可配置用以以粗粒度及細粒度執行複雜的排程及工作分配操作,從而實作在處理陣列212上執行的執行緒的快速先佔(preemption)及情境切換。在一實施例中,主機軟體可以證明用於透過多個圖形處理門鈴中一者來排程處理陣列212的工作。工作量接著可以藉由排程器微控制器內的排程器210邏輯在處理陣列212上自動分配。
處理叢集陣列212可以包括多達「N」個處理叢集(例如,從叢集214A、叢集214B到叢集214N)。處理叢集陣列212的每個叢集214A-214N可以執行大量的併發執行緒。排程器210可以使用各種排程及/或工作分配演算法將工作分配給處理叢集陣列212的叢集214A-214N,這些演算法可以根據針對每種類型的程式或計算產生的工作量而變化。排程可由排程器210動態地處理,或者可在被配置供由處理叢集陣列212執行的程式邏輯的編譯期間由編譯器邏輯部分地協助。在一實施例中,處理叢集陣列212的不同叢集214A-214N可以針對處理不同類型的程式 或針對執行不同類型的計算而被分配。
處理叢集陣列212可被配置用以執行各種類型的平行處理操作。在一實施例中,處理叢集陣列212被配置用以執行通用平行計算操作。舉例來說,處理叢集陣列212可以包括用以執行處理任務的邏輯,該處理任務包括視頻及/或音頻資料的過濾、執行包括實體操作的模型化操作、以及執行資料轉換。
在一實施例中,處理叢集陣列212被配置用以執行平行圖形處理操作。在其中平行處理器200被配置用以執行圖形處理操作的實施例中,處理叢集陣列212可包括用以支援此種圖形處理操作之執行的附加邏輯,其包括但不侷限於用以執行紋理操作的紋理取樣邏輯,以及曲面細分(tessellation)邏輯及其他頂點處理邏輯。此外,處理叢集陣列212可被配置用以執行與圖形處理有關的著色器程式,例如但不侷限於頂點著色器(vertex shader)、曲面細分著色器(tessellation shader)、幾何著色器(geometry shader)及像素著色器(pixel shader)。平行處理單元202可以經由I/O單元204從系統記憶體傳輸資料供處理之用。在處理期間,被傳輸的資料能在處理期間被儲存到晶載記憶體(on-chip memory)(例如,平行處理器記憶體222),接著被寫回到系統記憶體。
在一實施例中,當平行處理單元202被用以執行圖形處理時,排程器210能被配置用以將處理工作量分成大致相等大小的任務,以較佳地使圖形處理操作分佈 到處理叢集陣列212的多個叢集214A-214N。在一些實施例中,處理叢集陣列212的部分可以被配置用以執行不同類型的處理。舉例來說,第一部分可以被配置用以執行頂點著色及拓撲產生,第二部分可以被配置用以執行曲面細分及幾何著色,第三部分可以被配置用以執行像素著色或其他螢幕空間操作,以產生用於顯示之渲染呈現影像。由一或多個叢集214A-214N產生的中間資料可被儲存在緩衝器中以允許中間資料在叢集214A-214N之間傳輸以供進一步處理之用。
在操作期間,處理叢集陣列212可接收要經由排程器210執行的處理任務,排程器210從前端208接收定義處理任務的命令。對於圖形處理操作而言,處理任務可以包括要處理的資料的索引,例如表面(補片(patch))資料、基元資料、頂點資料及/或像素資料以及定義如何處理資料(例如,將要執行什麼程式)的狀態參數及命令。排程器210可以被配置用以獲取與任務對應的索引,或者可以從前端208接收索引。前端208可以被配置用以確保處理叢集陣列212在由傳入的命令緩衝區(例如,批緩衝區、推緩衝區等)所指定的工作量被啟動之前被配置為有效狀態。
平行處理單元202的一或多個實例中的每一者可以與平行處理器記憶體222耦合。可以經由記憶體交叉開關216存取平行處理器記憶體222,其可以從處理叢集陣列212以及I/O單元204接收記憶體請求。記憶體交叉開 關216可以經由記憶體介面218存取平行處理器記憶體222。記憶體介面218可以包括多個分區單元(例如分區單元220A、分區單元220B到分區單元220N),每一者可以耦合到平行處理器記憶體222的一部分(例如,記憶體單元)。在一個實作中,分區單元220A-220N的數量被配置成等於記憶體單元的數量,使得第一分區單元220A具有對應的第一記憶體單元224A,第二分區單元220B具有對應的記憶體單元224B,且第N分區單元220N具有對應的第N記憶體單元224N。在其他實施例中,分區單元220A-220N的數量可能不等於儲存裝置的數量。
在各種實施例中,記憶體單元224A-224N可包括各種類型的記憶體設備,包括動態隨機存取記憶體(DRAM)或圖形隨機存取記憶體,諸如同步圖形隨機存取記憶體(synchronous graphics random access memory,SGRAM),其包括圖形雙倍資料速率(graphics double data rate,GDDR)記憶體。在一實施例中,記憶體單元224A-224N還可以包括3D堆疊記憶體,包括但不侷限於高頻寬記憶體(HBM)。熟於此技藝之人士將會理解,記憶體單元224A-224N的具體實施方式可以變化,且可以從各種習用設計之其中一者選擇。諸如訊框緩衝器或紋理映射等渲染呈現目標可跨記憶體單元224A-224N儲存,允許分區單元220A-220N平行地寫入每個渲染呈現目標的部分以有效率地使用平行處理器記憶體222的可用頻寬。在一些實施例中,可以排除平行處理器記憶體222的本地實例,以利於 與本地快取記憶體結合使用系統記憶體的統一記憶體設計。
在一實施例中,處理叢集陣列212的叢集214A-214N中的任何一者可以處理將被寫入平行處理器記憶體222內的任何記憶體單元224A-224N的資料。記憶體交叉開關216可被配置以將叢集214A-214N之每一者的輸出傳輸到任何分區單元220A-220N或另一叢集214A-214N,其可對輸出執行附加的處理操作。每一叢集214A-214N可以透過記憶體交叉開關216與記憶體介面218通訊,以從各種外部記憶體裝置讀取或寫入各種外部記憶體設備。在一實施例中,記憶體交叉開關216具有到記憶體介面218的連接以與I/O單元204通訊,以及到平行處理器記憶體222的本地實例的連接,能使不同處理叢集214A-214N內的處理單元與對於平行處理單元202不是本地的系統記憶體或其他記憶體進行通訊。在一實施例中,記憶體交叉開關216可使用虛擬通道來分離叢集214A-214N與分區單元220A-220N之間的流量。
雖然在平行處理器200內繪示是平行處理單元202的單一實例,但是可以包括平行處理單元202的任何數量的實例。例如,可以在單一擴充卡上設置平行處理單元202的多個實例,或者可以互連多個擴充卡。即使不同實例具有不同數量的處理核心、不同數量的本地平行處理器記憶體、及/或其他配置差異,平行處理單元202的不同實例可以被配置用以相互操作。例如且在一實施例中,平 行處理單元202的一些實例可包括相對於其他實例更高精度的浮點單元。包含平行處理單元202或平行處理器200的一或多個實例的系統可以以各種配置及形狀因數來實作,包括但不侷限於桌上型電腦、膝上型電腦或手持式個人電腦、伺服器、工作站,遊戲控制台、及/或嵌入式系統。
圖2B是根據一實施例的分區單元220的方塊圖。在一實施例中,分區單元220是圖2A的分區單元220A-220N之一的實例。如圖所示,分區單元220包括L2快取221、訊框緩衝區介面225及ROP 226(光柵操作單元)。L2快取221是被配置用以執行從記憶體交叉開關216及ROP 226接收的載入及儲存操作的讀取/寫入快取。讀取未命中及緊急回寫請求由L2快取221輸出到訊框緩衝介面225以供處理。更新亦可經由訊框緩衝器介面225發送到訊框緩衝器以供處理。在一實施例中,訊框緩衝器介面225與平行處理器記憶體中諸如圖2的記憶體單元224A-224N的一個記憶體單元介接(例如,在平行處理器記憶體222內)。
在圖形應用中,ROP 226是執行諸如模板、z測試、混合等等的光柵操作的處理單元。ROP 226接著輸出儲存在圖形記憶體中之經處理的圖形資料。在一些實施例中,ROP 226包括壓縮邏輯以壓縮被寫入記憶體的深度或顏色資料,並解壓縮從記憶體讀取的深度或顏色資料。壓縮邏輯可以是利用多種壓縮演算法中之一或多種的無損壓縮(lossless copression)邏輯。由ROP 226所執行的壓縮 類型可以基於要被壓縮的資料的統計特性而變化。例如,在一實施例中,以每圖塊(per-tile)為基礎對深度及顏色資料執行色差壓縮(delta color compression)。
在一些實施例中,ROP 226被包括在每個處理叢集(例如,圖2的叢集214A-214N)內而不是分區單元220內。在此種實施例中,對像素資料的讀取及寫入請求透過記憶體交叉開關216而非像素片段資料來傳送。經處理的圖形資料可顯示於諸如圖1之一或多個顯示裝置110之一的顯示裝置上,針對被處理器102的進一步處理而被路由,或針對被圖2A之平行處理器200內的處理實體之一者的進一步處理而被路由。
圖2C是根據一實施例之平行處理單元內的處理叢集214的方塊圖。在一實施例中,處理叢集是圖2之處理叢集214A-214N中的一個實例。處理叢集214可被配置用以平行執行許多執行緒,其中術語「執行緒」是指在特定輸入資料集上執行的特定程式的實例。在一些實施例中,單指令多資料(SIMD)指令發布技術被用於支援大量執行緒的平行執行而不提供多個獨立的指令單元。在其它實施例中,使用單指令多執行緒(SIMT)技術來支援大量通常同步的執行緒的平行執行,使用被配置用以對每一處理叢集內的一組處理引擎發布指令的共用指令單元。與所有處理引擎典型上執行相同指令的SIMD執行機制(regime)不同,SIMT執行允許不同執行緒更容易地透過給定執行緒程式遵循不同執行路徑。熟於此技藝之人士將會理解, SIMD處理機制代表SIMT處理機制的功能子集。
處理叢集214的操作可以經由將處理任務分配給SIMT平行處理器的管線管理器232來控制。管線管理器232接收來自圖2之排程器210的指令並經由圖形多處理器234及/或紋理單元236來管理那些指令的執行。所繪示的圖形多處理器234是SIMT平行處理器的示例性實例。然而,不同架構的各種類型的SIMT平行處理器可被包括在處理叢集214內。圖形多處理器234的一或多個實例可以被包括在處理叢集214內。圖形多處理器234可以處理資料且資料交叉開關240可用於將經處理之資料分配到多個可能的目的地之一,包括其他著色單元。管線管理器232可藉由指定要經由資料交叉開關240分配的經處理之資料的目的地來促進經處理之資料的分配。
處理叢集214內的每一圖形多處理器234可包括一組相同的功能執行邏輯(例如,算術邏輯單元、載入儲存單元等)。功能執行邏輯可以以管線方式進行配置,其中,在先前的指令完成之前可以發布新的指令。功能執行邏輯支援種種操作,包括整數及浮點運算、比較運算、布林運算、位元移位及種種代數函數的計算。在一實施例中,可以利用相同的功能單元硬體來執行不同的操作,並且可以存在功能單元的任何組合。
傳送到處理叢集214的指令構成執行緒。在一組平行處理引擎上執行的一組執行緒為一個執行緒群組。一個執行緒群組在不同的輸入資料上執行相同的程 式。執行緒群組內的每一執行緒可以被分配給圖形多處理器234內的不同處理引擎。執行緒群組可包括比圖形多處理器234內的處理引擎的數量更少的執行緒。當執行緒群組包括比處理引擎的數量更少的執行緒時,一或多個處理引擎可在處理該執行緒群組的循環期間閒置。執行緒群組亦可包括比圖形多處理器234內的處理引擎的數量更多的執行緒。當執行緒群組包括比圖形多處理器234內的處理引擎的數量更多的執行緒時,可以在連續的時脈週期期間執行處理。在一實施例中,可以在圖形多處理器234上同時執行多個執行緒群組。
在一實施例中,圖形多處理器234包括內部快取記憶體以執行載入及儲存操作。在一實施例中,圖形多處理器234可放棄內部快取並使用處理叢集214內的快取記憶體(例如,L1快取308)。每個圖形多處理器234亦可存取分區單元(例如,分區單元圖2的220A-220N)內的L2快取,其在所有處理叢集214之間共享並且可用於在執行緒之間傳輸資料。圖形多處理器234還可以存取晶片外(off-chip)總體記憶體(global memory),其可以包括本地平行處理器記憶體及/或系統記憶體中的一或多者。平行處理單元202外部的任何記憶體可以用作為總體記憶體。其中處理叢集214包括圖形多處理器234的多個實例的實施例可共享可儲存在L1快取308中的共用指令及資料。
每個處理叢集214可包括被配置用以將虛擬位址映射到實體位址的MMU 245(記憶體管理單元)。在其 他實施例中、MMU 245的一或多個實例可以駐留在圖2的記憶體介面218內。MMU 245包括用於將虛擬位址映射到圖塊(tile)的實體位址(更多關於拼貼(tiling)的討論)及可選地快取列索引(cache line index)的一組頁表項(page table entries,PTE)。MMU 245可包括可以駐留在圖形多處理器234或L1快取或處理叢集214內的位址轉換後備緩衝區(translation lookaside buffers,TLB)或快取。實體位址被處理以分佈表面資料存取局布性以允許有效率的請求交插於分區單元之間。快取列索引可用於確定對快取列的請求是命中還是未命中。
在圖形及計算應用中,處理叢集214可被配置用以使得每個圖形多處理器234耦合到紋理單元236以執行紋理映射操作,例如,確定紋理樣本位置,讀取紋理資料以及過濾紋理資料。紋理資料從內部紋理L1快取(未顯示)中讀取,或者在一些實施例中從圖形多處理器234內的L1快取讀取,並且依需要從L2快取、本地平行處理器記憶體、或系統記憶體中提取。每個圖形多處理器234將經處理之任務輸出到資料交叉開關240以將經處理之任務提供給另一處理叢集214以用於進一步處理,或經由記憶體交叉開關216將經處理之任務儲存在L2快取、本地平行處理器記憶體、或系統記憶體中。preROP 242(前光柵操作單元)被配置用以接收來自圖形多處理器234的資料,將資料引導至ROP單元,ROP單元可以如本文所述般以分區單元(例如,圖2的分區單元220A-220N)定位。preROP 242單元 可以對顏色混合進行最佳化、組織像素顏色資料並執行位址轉換(address translation)。
應該理解,本文所描述的核心架構是說明性的,且變化及修改是可能的。任何數量的處理單元,例如圖形多處理器234、紋理單元236、preROP 242等可以被包括在處理叢集214內。此外,雖然僅顯示一個處理叢集214,但是如本文所述的平行處理單元可以包括處理叢集214的任何數量的實例。在一實施例中,每個處理叢集214可以被配置用以使用獨立且不同的處理單元、L1快取等以獨立於其他處理叢集214的方式來操作。
圖2D顯示根據一實施例之圖形多處理器234。在此種實施例中,圖形多處理器234與處理叢集214的管線管理器232耦合。圖形多處理器234具有執行管線,其包括但不侷限於指令快取252、指令單元254、位址映射單元256、暫存器檔案258、一或多個通用圖形處理單元(GPGPU)核心262以及一或多個載入/儲存單元266。GPGPU核心262及載入/儲存單元266經由記憶體及快取互連268與快取記憶體272及共享記憶體270耦合。
在一實施例中,指令快取252從管線管理器232接收要執行的指令流。指令被快取於指令快取252中,並被指令單元254調度以供執行之用。指令單元254可調度指令作為執行緒群組(例如,束(warp)),執行緒群組的每個執行緒被分配給GPGPU核心262內的不同執行單元。指令可以藉由指定統一位址內的位址來存取本地、共享或全 域位址空間中的任一者。位址映射單元256可用於將統一位址空間中的位址轉換成可由載入/儲存單元266存取的不同記憶體位址。
暫存器檔案258為圖形多處理器324的功能單元提供一組暫存器。暫存器檔案258為連接到圖形多處理器234之功能單元(例如,GPGPU核心262、載入/儲存單元266)的資料路徑的運算元提供臨時儲存。在一實施例中,暫存器檔案258被劃分於每個功能單元之間,使得每個功能單元被分配暫存器檔案258的專用部分。在一實施例中,暫存器檔案258被劃分於由圖形多處理器234所執行的不同的束之間。
GPGPU核心262可以各自包括用於執行圖形多處理器234的指令的浮點單元(FPU)及/或整數算術邏輯單元(ALU)。根據實施例,GPGPU核心262可在架構上類似或可在架構上不同。例如且在一實施例中,GPGPU核心262的第一部分包括單精度(single precision)FPU及整數ALU,而GPGPU核心的第二部分包括雙倍精度(double precision)FPU。在一實施例中,FPU可以實施用於浮點運算的IEEE 754-2008標準或啟用可變精度浮點運算。圖形多處理器234可以另外包括一或多個固定功能或特殊功能單元以執行諸如複製矩形或像素混合操作的特定功能。在一實施例中,一或多個GPGPU核心亦能包括固定的或特殊的功能邏輯。
在一實施例中,GPGPU核心262包括能夠對 多組資料執行單一指令的SIMD邏輯。在一實施例中,GPGPU核心262可以實體地執行SIMD4、SIMD8及SIMD16指令,且邏輯地執行SIMD1、SIMD2及SIMD32指令。用於GPGPU核心的SIMD指令可在編譯時由著色編譯器產生,或者在執行針對單程式多資料(SPMD)或SIMT架構而被寫入及編譯的程式時自動產生。為SIMT執行模型配置的程式的多執行緒可透過單一SIMD指令執行。例如且在一實施例中,執行相同或類似操作的八個SIMT執行緒可以經由單一SIMD8邏輯單元被平行地執行。
記憶體及快取互連268是將圖形多處理器234的每個功能單元連接到暫存器檔案258及共享記憶體270的互連網路。在一實施例中,記憶體及快取互連268是交叉開關互連(crossbar interconnect),其允許載入/儲存單元266在共享記憶體270與暫存器檔案258之間實作載入及儲存操作。暫存器檔案258可以以與GPGPU核心262相同的頻率操作,因此GPGPU核心262與暫存器檔案258之間的資料傳輸的延遲非常低。共享記憶體270可以用於啟用在圖形多處理器234內的功能單元上執行的執行緒之間的通訊。例如,快取記憶體272可以用作為資料快取,以便快取在功能單元與紋理單元236之間傳遞的紋理。共享記憶體270亦可以用作管理快取的程式。除了儲存在快取記憶體272內的自動快取的資料以外,在GPGPU核心262上執行的執行緒還能以編程方式儲存資料於共享記憶體內。
圖3A-3B繪示根據實施例之附加圖形多處理 器。所繪示之圖形多處理器325、350是圖2C的圖形多處理器234的變體。所繪示的圖形多處理器325、350可以被配置成能夠同時執行大量執行執行緒的串流多處理器(SM)。
圖3A顯示根據另一實施例之圖形多處理器325。圖形多處理器325包括相對於圖2D之圖形多處理器234的執行資源單元的多個額外實例。例如,圖形多處理器325能包括指令單元332A-332B、暫存器檔案334A-334B及紋理單元344A-344B的多個實例。圖形多處理器325亦包括多組圖形或計算執行單元(例如,GPGPU核心336A-336B、GPGPU核心337A-337B、GPGPU核心338A-338B)及多組載入/儲存單元340A-340B。在一實施例中,執行資源單元具有共用指令快取330、紋理及/或資料快取記憶體342以及共享記憶體346。
各種組件可以經由互連結構(interconnect fabric)327進行通訊。在一實施例中,互連結構327包括一或多個交叉開關交換機以啟用圖形多處理器325的各種組件之間的通訊。在一實施例中,互連結構327是獨立的,圖形多處理器325的每個組件堆疊在其上的高速網路結構層。圖形多處理器325的組件透過互連結構327與遠端組件通訊。例如,GPGPU核心336A-336B、337A-337B及3378A-338B的每一者可以經由互連結構327與共享記憶體346通訊。互連結構327可以仲裁圖形多處理器325內的通訊以確保組件之間的公平頻寬分配。
圖3B顯示根據另一實施例的圖形多處理器 350。圖形處理器包括多組執行資源356A-356D,其中每組執行資源包括多指令單元、暫存器檔案、GPGPU核心及載入儲存單元,如圖2D及圖3A所示。在共享指令快取354及共享記憶體362的同時,執行資源356A-356D可以與紋理操作的紋理單元360A-360D一起工作。在一實施例中,執行資源356A-356D可共享指令快取354及共享記憶體362、以及紋理及/或資料快取記憶體358A-358B的多個實例。各種組件可透過類似於圖3A之互連結構327的互連結構352通訊。
熟於此技藝之人士將會理解,圖1、2A-2D及3A-3B是描述性的,並且不侷限於本實施例的範圍。因此,本文描述的技術可在任何適當配置的處理單元上實作,包括但不侷限於一或多個行動應用處理器、包括多核心CPU的一或多個桌上型或伺服器中央處理單元(CPU)、諸如圖2的平行處理單元202的一或多個平行處理單元、以及一或多個圖形處理器或專用處理單元,而不偏離本文描述的實施例的範圍。
在一些實施例中,如本文所述的平行處理器或GPGPU可通訊地耦合到主機/處理器核心以加速圖形操作、機器學習操作、模式分析操作、及各種通用GPU(GPGPU)功能。GPU可以透過匯流排或其他互連(例如,諸如PCIe或NVLink的高速互連)通訊地耦合到主機處理器/核心。在其他實施例中,GPU可以如核心般整合在相同的封裝或晶片上,並透過內部處理器匯流排/互連 (即,在封裝或晶片內部)通訊地耦合到核心。不管GPU附接的方式如何,處理器核心都可以以包含在工作描述符(work descriptor)中的命令/指令序列的形式將工作分配給GPU。GPU接著使用專用電路/邏輯來有效地處理此等命令/指令。
GPU承載處理器互連的技術
圖4A繪示其中多個GPU 410-413透過高速鏈路440-443(例如匯流排、點對點互連等)通訊地耦合到多個多核心處理器405-406的示例性架構)。在一實施例中,取決於實作,高速鏈路440-443支援4GB/s、30GB/s、80GB/s或更高的通訊通量。可以使用各種互連協定,包括但不侷限於PCIe 4.0或5.0及NVLink 2.0。然而,本發明的基本原理不侷限於任何特定的通訊協定或通量。
此外,在一實施例中,二或更多個GPU 410-413透過高速鏈路444-445互連,其可使用與用於高速鏈路440-443的協定/鏈路相同或不同的協定/鏈路來實作。類似地,二或多個多核心處理器405-406可透過高速鏈路433連接,高速鏈路433可以是以20GB/s、30GB/s、120GB/s或更高的速度操作的對稱多處理器(SMP)匯流排。或者,圖4A中所示的各種系統組件之間的所有通訊可使用相同的協定/鏈接(例如,透過共用互連結構)來完成。然而,如所述,本發明的基本原理不侷限於任何特定類型的互連技術。
在一實施例中,每個多核心處理器405-406 分別經由記憶體互連430-431通訊地耦合到處理器記憶體401-402,並且每個GPU 410-413分別透過GPU記憶體互連450-453通訊地耦合到GPU記憶體420-423。記憶體互連430-431及450-453可利用相同或不同的記憶體存取技術。藉由示例而非限制,處理器記憶體401-402及GPU記憶體420-423可為諸如動態隨機存取記憶體(DRAM)(包括堆疊DRAM)、圖形DDR SDRAM(GDDR)(例如,GDDR5、GDDR6)的揮發性記憶體、或高頻寬記憶體(HBM)及/或可為諸如3D XPoint或Nano-Ram的非揮發性記憶體。在一實施例中,記憶體的若干部分可為揮發性記憶體,且另一部分可為非揮發性記憶體(例如,使用二層(two-level)記憶體(2LM)階層)。
如下所述,儘管各種處理器405-406及GPU 410-413可分別實體地耦合到特定記憶體401-402、420-423,但是可以實作統一的記憶體架構,其中相同的虛擬系統位址空間(亦稱為「有效位址」空間)分佈在所有各種實體記憶體中。例如,處理器記憶體401-402每個可包括64GB的系統記憶體位址空間,且GPU記憶體420-423每個可包括32GB的系統記憶體位址空間(在此示例中導致總共256GB的可定址記憶體)。
圖4B顯示根據一實施例的用於多核心處理器407與圖形加速模組446之間的互連的附加細節。圖形加速模組446可包括整合在經由高速鏈路440耦合到處理器407的線卡上的一或多個GPU晶片。或者,圖形加速模組446 可整合在與處理器407相同的封裝或晶片上。
所繪示的處理器407包括多個核心460A-460D,其每個具有轉換後備緩衝區461A-461D及一或多個快取462A-462D。核心可以包括用於執行指令及處理未顯示的資料的各種其他組件,以避免模糊本發明的基本原理(例如指令提取單元、分支預測單元、解碼器、執行單元、重排序緩衝器等)。快取462A-462D可包含1階(L1)及2階(L2)快取。另外,一或多個共享快取426可以包括於快取階層中且被多組核心460A-460D共享。例如,處理器407的一實施例包括24個核心,每個核心具有其自己的L1快取、12個共享L2快取以及12個共享L3快取。在此實施例中,L2及L3快取中的一者被兩個相鄰核心共享。處理器407及圖形加速整合模組446與系統記憶體441連接,系統記憶體441可包括處理器記憶體401-402。
針對儲存在各種快取462A-462D、456及系統記憶體441中的資料及指令,經由一致性匯流排464上的核心間通訊來維持一致性(coherency)。例如,每個快取可具有與其關聯的快取一致性邏輯/電路,以回應於檢測到之對特定快取列的讀取或寫入而透過一致性匯流排464通訊。在一個實作中,快取監聽協定(snooping protocol)透過一致性匯流排464實作以監聽快取存取。快取監聽/一致性技術被本領域技術人員充分理解,且為避免混淆本發明的基本原理,這裡不再詳細描述。
在一實施例中,代理電路425將圖形加速模 組446通訊地耦合到一致性匯流排464,允許圖形加速模組446作為核心的同級參與快取一致性協定。特別是,介面435透過高速鏈路440(例如,PCIe匯流排、NVLink等)對代理電路425提供連接,且介面437將圖形加速模組446連接到鏈路440。
在一實作中,加速器整合電路436代表圖形加速模組446的多個圖形處理引擎431、432、N來提供快取管理、記憶體存取、情境管理(context management)及中斷管理服務。圖形處理引擎431、432、N每個可包含獨立的圖形處理單元(GPU)。或者,圖形處理引擎431、432、N可包含GPU內的不同類型的圖形處理引擎,諸如圖形執行單元、媒體處理引擎(例如,視頻編碼器/解碼器)、取樣器及blit引擎。換言之,圖形加速模組可以是具有多個圖形處理引擎431-432、N或圖形處理引擎431-432的GPU、N可以是整合在共用封裝、線卡或晶片上的各個GPU。
在一實施例中,加速器整合電路436包括用於執行各種記憶體管理功能(例如虛擬至實體(virtual-to-physical)記憶體轉換(亦稱為有效至實際(effective-to-real)記憶體轉換))的記憶體管理單元(MMU)439及用於存取系統記憶體441的記憶體存取協定。MMU 439亦可包括用於將虛擬/有效快取到實體/實際位址轉換的轉換後備緩衝區(TLB)(未顯示)。在一實作中,快取438儲存用於圖形處理引擎431-432、N的有效率存取的命令及資料。在一實施例中,儲存於快取438及圖形記憶體433-434、N中的資料與 核心快取462A-462D、456及系統記憶體411保持一致。如所述,此可經由代表快取438及記憶體433-434、N(例如,將有關處理器快取462A-462D、456上的快取列的修改/存取更新發送到快取438以及接收來自快取438的更新)參與快取一致性機構的代理電路425而達成。
一組暫存器445儲存由圖形處理引擎431-432、N所執行的執行緒的情境資料,且情境管理電路448管理執行緒情境。例如,情境管理電路448可以執行保存及復原操作以在情境切換期間保存及復原各種執行緒的情境(例如,在第一執行緒被保存且第二執行緒被儲存的情況下,使得第二執行緒能由圖形處理引擎執行)。例如,在情境切換時,情境管理電路448可將目前暫存器值儲存到記憶體中的指定區域(例如,由情境指標所識別)。其接著可能會在返回情境時復原暫存器值。在一實施例中,中斷管理電路447接收並處理接收來自系統設備的中斷。
在一實作中,來自圖形處理引擎431的虛擬/有效位址由MMU 439轉換成系統記憶體411中的實際/實體位址。加速器整合電路436的一實施例支援多個(例如,4個、8個、16個)圖形加速模組446及/或其他加速器設備。圖形加速模組446可專用於在處理器407上執行的單一應用程式,或者可在多個應用程式之間共享。在一實施例中,呈現虛擬化圖形執行環境,其中圖形處理引擎431-432、N的資源與多個應用程式或虛擬機(virtual machine,VM)共享。資源可以被細分成基於與VM及/或應用程式相關聯的 處理要求及優先而被分配給不同的VM及/或應用的「片」。
因此,加速器整合電路充當用於圖形加速模組446的系統的橋接器並且提供位址轉換及系統記憶體快取服務。另外,加速器整合電路436可以為主機處理器提供虛擬化設施以管理圖形處理引擎的虛擬化、中斷及記憶體管理。
由於圖形處理引擎431-432、N的硬體資源明確地映射到由主機處理器407看到的實位址空間,所以任何主機處理器可以使用有效位址值直接定址這些資源。在一實施例中,加速器整合電路436的一個功能為圖形處理引擎431-432、N的實體分離,使得它們對於系統而言為獨立單元。
如上所述,在所繪示的實施例中,一或多個圖形記憶體433-434、M分別耦合到圖形處理引擎431-432、N中的每一者。圖形記憶體433-434、M儲存由圖形處理引擎431-432、N中的每一者所處理的指令及資料。圖形記憶體433-434、M可以是揮發性記憶體,諸如DRAM(包括堆疊DRAM)、GDDR記憶體(例如,GDDR5、GDDR6)或HBM,及/或可以是諸如3D XPoint或Nano-Ram的非揮發性記憶體。
在一實施例中,為了減少鏈路440上的資料流量,使用偏壓技術(biasing technique)來確保儲存在圖形記憶體433-434、M中的資料是圖形處理引擎431-432、N 最常使用的資料,並且最好不被核心460A-460D使用(至少不頻繁)。類似地,偏壓機構試圖保持核心及系統記憶體411的快取462A-462D、456內的核心(並且最好不是圖形處理引擎431-432、N)所需的資料。
圖4C顯示另一實施例,其中加速器整合電路436整合在處理器407內。在此實施例中,圖形處理引擎431-432、N經由介面437及介面435(其也可以利用任何形式的匯流排或介面協定)直接透過高速鏈路440與加速器整合電路436通訊。加速器整合電路436可以執行與關於圖4B所描述的操作相同的操作,但是由於其接近一致性匯流排464及快取462A-462D、426,所以可能處於更高的通量。
一實施例支援包括專用處理可程式模型(無圖形加速模組虛擬化)及共享可程式模型(具有虛擬化)的不同編程模型。後者可以包括由加速器整合電路436控制的編程模型及由圖形加速模組446控制的可程式模型。
在專用處理模型的一實施例中,圖形處理引擎431-432、N專用於單一作業系統下的單一應用程式或程序。單一應用程式可以將其他應用程式請求輸送到圖形引擎431-432、N,從而在VM/分區內以提供虛擬化。
在專用處理編程模型中,圖形處理引擎431-432、N可由多個VM/應用程式分區共享。共享模型需要系統超管理器(hypervisor)來虛擬化圖形處理引擎431-432、N,以允許每個作業系統存取。對於沒有超管理器的單分區系統而言,圖形處理引擎431-432、N由作業系統所擁 有。在這兩種情況下,作業系統都可以虛擬化圖形處理引擎431-432、N以提供對每個程序或應用程式的存取。
對於共享編程模型而言,圖形加速模組446或單獨的圖形處理引擎431-432、N使用處理控制代碼(process handle)來選擇處理元件(process element)。在一實施例中,處理元件被儲存在系統記憶體411中,且可使用本文描述的有效位址到實位址轉換技術來定址。處理控制代碼可以是當向圖形處理引擎431-432、N(即,呼叫將程序元件加到程序元件鏈結列表的系統軟體)註冊其情境時提供給主程序的實作特定值。程序控制代碼的低16位元可以是處理元件鏈接串列(linked list)內的處理元件的偏移量。
圖4D繪示示例性加速器整合片490。如本文所使用者,「片」包含加速器整合電路436的處理資源的指定部分。系統記憶體411內的應用有效位址空間482儲存處理元件483。在一實施例中,回應於來自在處理器407上執行的應用程式480的GPU調用(invocation)481而儲存處理元件483。處理元件483包含對應應用程式480的處理狀態。包含在處理元件483中的工作描述符(work descriptor,WD)484可以是由應用程式所請求的單一工作,或者可以包含指向作業佇列的指標。在後一種情況下,WD 484是指向應用程式位址空間482中的工作請求佇列的指標。
圖形加速模組446及/或個別的圖形處理引擎431-432、N可以被系統中的全部或部分程序共享。本發明 的實施例包括用於設定程序狀態並將WD 484發送到圖形加速模組446以在虛擬環境中開始工作的基礎建設。
在一實作中,專用編程模型是實作特定的。在此模型中,單一程序擁有圖形加速模組446或個別圖形處理引擎431。因為圖形加速模組446由單一程序所擁有,超管理器針對擁有分區而初始化加速器整合電路436,且作業系統在圖形加速模組446被分配時,針對擁有程序而初始化加速器整合電路436。
在操作中,加速器整合片490中的WD獲取單元491獲取下一個WD 484,其包括將由圖形加速模組446的圖形處理引擎之一完成的工作的指示。來自WD 484可以儲存在暫存器445中,並且如圖所示由MMU 439中斷管理電路447及/或情境管理電路448使用。例如,MMU 439的一實施例包括用於存取OS虛擬位址空間485內的段/頁表486的段/頁面漫遊電路。中斷管理電路447可以處理從圖形加速模組446接收的中斷事件492。當執行圖形操作,由圖形處理引擎431-432、N產生的有效位址493由MMU 439轉換為實位址。
在一實施例中,針對每個圖形處理引擎431-432、N及/或圖形加速模組446複製同一組暫存器445,且可以由超管理器或作業系統初始化。此等複製的暫存器中的每一者可被包括在加速器整合片490中。可以由超管理器初始化的示例性暫存器顯示於表1中。
Figure 108129308-A0101-12-0032-1
表2中顯示可以由作業系統初始化的示例性暫存器。
Figure 108129308-A0101-12-0032-2
在一實施例中,每個WD 484特定於特定圖形加速模組446及/或圖形處理引擎431-432、N。它包含圖形處理引擎431-432、N需要完成其工作的所有資訊或者它可以是對應用程式已經設定要完成的工作命令佇列的記憶 體位置的指標。
圖4E繪示共享模型的一實施例的額外細節。該實施例包括其中儲存處理元件列表499的超管理器實位址空間498。超管理器實位址空間498可以透過將作業系統495的圖形加速模組引擎虛擬化的超管理器496存取。
共享編程模型允許來自系統中的分區的全部或子集的程序的全部或子集使用圖形加速模組446。有兩個編程模型,其中圖形加速模組446由多個程序及分區共享:時間切片(time-sliced)共享及圖形導向共享。
在此模型中,系統超管理器496擁有圖形加速模組446並且使其功能對所有作業系統495可用。對於用以支援由系統超管理器496的虛擬化的圖形加速模組446而言,圖形加速模組446可以遵守以下要件:1)應用程式的工作請求必須是自律的(亦即,狀態不需要在工作之間維持),或者圖形加速模組446必須提供情境保存及復原機構。2)應用程式的工作請求由圖形加速模組446保證在指定的時間量內完成,包括任何翻譯錯誤、或者圖形加速模組446提供先佔工作處理的能力。3)當在導向共享編程模型中操作時,必須保證程序之間圖形加速模組446的公平性。
在一實施例中,針對共享模型,需要應用程式480以圖形加速模組446類型、工作描述符(WD)、權限遮罩暫存器(AMR)值及情境保存/復原區域指標(CSRP)來進行作業系統495系統呼叫。圖形加速模組446類型描述系 統呼叫的目標加速函數。圖形加速模組446類型可以是系統特定的值。WD特別針對圖形加速模組446被格式化,並且可以採用圖形加速模組446命令、指向使用者定義結構的有效位址指標、指向一佇列命令的有效位址指標或任何其他資料結構的形式來描述待由圖形加速模組446完成的工作。在一實施例中,AMR值是用於目前程序的AMR狀態。傳遞給作業系統的值與設定AMR的應用程式類似。若加速器整合電路436及圖形加速模組446的實作不支援使用者權限遮罩置換暫存器(UAMOR),則作業系統可以在超管理器呼叫中傳遞到AMR之前將目前UAMOR值應用於AMR值。在將AMR放入處理元件483之前,超管理器496可以可選地應用目前權限遮罩置換暫存器(AMOR)值。在一實施例中,CSRP是包含應用程式位址空間482中的區域的有效位址的暫存器445中的其中一者,供圖形加速模組446保存及復原情境狀態之用。如果不需要在工作之間或工作被先佔時保存狀態,則此指標是可選的。情境保存/復原區域可為固定的系統記憶體。
在接收到系統呼叫時,作業系統495可以驗證應用程式480已經註冊並且被授權使用圖形加速模組446。作業系統495接著以表3中所示的資訊呼叫超管理器496。
Figure 108129308-A0101-12-0035-3
在接收超管理器呼叫時,超管理器496驗證作業系統495已經註冊並且被授權使用圖形加速模組446。超管理器496接著將程序元件483放入用於對應圖形加速模組446類型之程序元件鏈結列表。程序元件可包含表4中顯示的資訊。
Figure 108129308-A0101-12-0036-4
在一實施例中,超管理器初始化多個加速器整合片490暫存器445。
如圖4F所示,本發明的一實施例採用可透過用於存取實體處理器記憶體401-402及GPU記憶體420-423的共用虛擬記憶體位址空間定址的統一記憶體。在該實作中,在GPU 410-413上執行的操作利用相同的虛擬/有效記憶體位址空間來存取處理器記憶體401-402,反之亦然,從而簡化可程式性。在一實施例中,將虛擬/有效位址空間的第一部分分配給處理器記憶體401,將第二部分分配給第二處理器記憶體402,將第三部分分配給GPU記憶體420等等。整個虛擬/有效記憶體空間(有時稱為有效位址 空間)從而分佈在處理器記憶體401-402及GPU記憶體420-423的每一者中,允許任何處理器或GPU以映射到該記憶體之虛擬位址存取任何實體記憶體。
在一實施例中,一或多個MMU 439A-439E內的偏差/一致性管理電路494A-494E確保主機處理器(例如405)與GPU 410-413的快取之間的快取一致性並實作偏壓技術,指示其中應該儲存某些類型的資料的實體記憶體。儘管在圖4F中繪示偏差/一致性管理電路494A-494E的多個實例,偏差/一致性電路可以在一或多個主機處理器405的MMU內及/或在加速器整合電路436內實作。
一實施例允許將GPU附接的記憶體420-423要被映射為系統記憶體的一部分,並使用共享虛擬記憶體(SVM)技術存取,但不會遭受與全系統快取一致性相關的典型性能缺點。GPU附接記憶體420-423作為系統記憶體被存取而無麻煩的快取一致性額外開銷的能力,為GPU卸載提供有益的作業環境。這種安排允許主機處理器405軟體設定運算元並存取計算結果,而無需傳統I/O DMA資料副本的額外開銷。這些傳統拷貝有關驅動程式呼叫、中斷及記憶體映射I/O(MMIO)存取,這些存取相對於簡單記憶體存取來說都是無效率的。同時,無快取一致性額外開銷而存取GPU附接記憶體420-423的能力對於卸載計算的執行時間可能是關鍵的。例如,在具有大量串流寫入記憶體流量的情況下,快取一致性額外開銷可以顯著降低GPU 410-413所見之有效寫入頻寬。運算元設定的效率、結果 存取的效率以及GPU計算的效率都在確定GPU卸載的有效性方面扮演一個角色。
在一個實作中,GPU偏差與主機處理器偏差之間的選擇由偏差追蹤器資料結構驅動。例如,可以使用偏差表,其可以是每GPU附接記憶體頁面包括1或2個位元的頁面細微度(page-granular)結構(即,以記憶體頁面的細微度來控制)。偏差表可以在一或多個GPU附接記憶體420-423的竊取記憶體(stolen memory)範圍內實作,在GPU 410-413中具有或不具有偏差快取(例如,以快取頻繁/最近使用的偏差表的項目)的情況下。或者,整體偏差表可以保持在GPU內。
在一實作中,在實際存取GPU記憶體之前存取與GPU附接記憶體420-423的每個存取相關聯的偏差表項目,導致以下操作。首先,來自GPU 410-413之在GPU偏差中發現其頁面的本地請求被直接轉發到對應的GPU記憶體420-423。在主機偏差中發現其頁面的來自GPU的本地請求被轉發到處理器405(例如,如上述透過高速鏈路)。在一實施例中,來自處理器405的在主機處理器偏差中找到所請求的頁面的請求像正常的記憶體讀取一樣完成請求。或者,針對GPU偏差頁面的請求可以被轉發給GPU 410-413。如果GPU目前未使用該頁面,則GPU可以將該頁面轉換為主機處理器偏差。
頁面的偏差狀態的改變可藉由基於軟體的機構、硬體輔助之基於軟體的機構,或者對於有限的一組情 況而言純粹基於硬體的機構。
用於改變偏差狀態的一種機構採用API呼叫(例如OpenCL),該API呼叫依次呼叫GPU的裝置驅動程式,該裝置驅動程式繼而發送訊息(或將命令描述符進入佇列)到GPU以將其指向更改偏差狀態,以及對於某些轉換,在主機中執行快取清除(cache flushing)操作。快取清除操作對於從主機處理器405偏差到GPU偏差的轉換是必需的,但是對於相反的轉換不需要。
在一實施例中,藉由暫時地渲染呈現由主機處理器405不可快取(uncacheable)之GPU偏差的頁面來維持快取一致性。為了存取這些頁面,處理器405可以請求來自GPU 410的存取,取決於實施,GPU 410可以立即准予或者不准予存取。因此,為減少處理器405與GPU 410之間的通訊,確保GPU偏差頁面是GPU所需但不是主機處理器405所需的頁面是有利的,反之亦然。
圖形處理管線
圖5繪示根據一實施例的圖形處理管線500。在一實施例中,圖形處理器可以實作繪示的圖形處理管線500。圖形處理器可以被包括在於此描述的平行處理子系統內,例如圖2之平行處理器200,其在一實施例中,是圖1之平行處理器112的變體。如本文所述,各種平行處理系統可以經由平行處理單元(例如,圖2的平行處理單元202)的一或多個實例來實作圖形處理管線500。舉例來說,著 色器單元(例如,圖3的圖形多處理器234)可以被配置用以執行頂點處理單元504、曲面細分控制處理單元508、曲面細分評估處理單元512、幾何處理單元516及片段/像素處理單元524之一或多者的功能。資料組合器502、基元組合器506、514、518、曲面細分單元510、光柵化器522及光柵操作單元526的功能也可以由處理叢集(例如,圖3的處理叢集214)及對應的分區單元(例如,圖2的分區單元220A-220N)內的其他處理引擎來執行。圖形處理管線500也可以使用用於一或多個功能的專用處理單元來實作。在一實施例中,圖形處理管線500的一或多個部分可以由通用處理器(例如,CPU)內的平行處理邏輯來執行。在一實施例中,圖形處理管線500的一或多個部分可以經由記憶體介面528來存取晶片上記憶體(例如,如圖2中的平行處理器記憶體222),記憶體介面528可以是圖2的記憶體介面218的實例。
在一實施例中,資料組合器502是收集表面及基元的頂點資料的處理單元。然後,資料組合器502將頂點資料(包括頂點屬性)輸出到頂點處理單元504。頂點處理單元504是可程式執行單元,其執行頂點著色器程式,照明及變換頂點著色器程式所指定的頂點資料。頂點處理單元504讀取儲存在快取、本地或系統記憶體中用於處理頂點資料的資料,且可被編程以將頂點資料從基於物體的座標表示轉換為世界空間座標空間或正規化裝置座標空間。
基元組合器506的第一實例接收來自頂點處理單元504的頂點屬性。基元組合器506根據需要讀取儲存的頂點屬性並構建圖形基元以供曲面細分控制處理單元508處理。圖形基元包括三角形、線段、點、補片等,如各種圖形處理應用程式編程介面(API)所支援者。
曲面細分控制處理單元508將輸入頂點視為幾何補片的控制點。控制點從來自補片(例如,補片的基礎)的輸入表示變換為適用於由曲面細分評估處理單元512進行的表面評估的表示。曲面細分控制處理單元508亦可計算用於幾何補片之邊緣曲面細分因子。曲面細分因子適用於單一邊緣,並量化與邊緣相關的視點相依多層次精細度(view-dependent level of detail)。曲面細分單元510被配置用以接收補片之邊緣的曲面細分因子並將補片細分為多個幾何基元,諸如線、三角形或四邊形基元,該些基元被發送到曲面細分評估處理單元512。面細分評估處理單元512對細分的補片的參數化座標進行操作以產生與幾何基元關聯的每個頂點的表面表示及頂點屬性。
基元組合器514的第二實例接收來自細分評估處理單元512的頂點屬性,根據需要讀取儲存的頂點屬性,並構建供幾何處理單元516處理的圖形基元。幾何處理單元516是可程式的執行單元,其執行幾何著色器程式以變換如幾何著色器程式指定之接收自基元組合器514的圖形基元。在一實施例中,幾何處理單元516被編程以將圖形基元細分成一或多個新的圖形基元以及計算用於光柵 化新的圖形基元的參數。
在一些實施例中,幾何處理單元516可以添加或刪除幾何流中的元件。幾何處理單元516將指定新圖形基元的參數及頂點輸出到基元組合器518。基元組合器518從幾何處理單元516接收參數及頂點,並構建用於由視埠縮放(viewport scale)、剔除(cull)及裁切(clip)單元520處理的圖形基元。幾何處理單元516讀取儲存在平行處理器記憶體或系統記憶體中的資料,以用於處理幾何資料。視埠縮放、剔除及裁切單元520執行裁切、剔除及視埠縮放,並將處理後的圖形基元輸出到光柵化器522。
光柵化器522可以執行深度剔除及其他基於深度的最佳化。光柵化器522亦對新圖形基元執行掃描轉換以產生片段並將該些片段及相關聯的覆蓋資料輸出到片段/像素處理單元524。片段/像素處理單元524是可程式執行單元,其被配置用以執行片段著色器程式或像素著色器程式。片段/像素處理單元524變換從光柵化器522接收的片段或像素,如片段或像素著色器程式所指定者。舉例來說,片段/像素處理單元524可被編程以執行包括但不侷限於紋理映射、著色、混合、紋理校正及透視校正的操作以產生輸出到光柵操作單元526之陰影片段或像素。片段/像素處理單元524能讀取儲存在平行處理器記憶體或系統記憶體中的資料,供處理片段資料時使用。片段或像素著色器程式可以被配置成根據為處理單元配置的取樣速率在取樣、像素、圖塊或其他粒度(granularity)上變暗。
光柵操作單元526是執行光柵操作的處理單元,包括但不侷限於模板、z測試、混合等,並且將像素資料作為處理後的圖形資料輸出以儲存在圖形記憶體中(例如,如圖2中所示之平行處理器記憶體222及/或如圖1所示之系統記憶體104),以將被顯示在一或多個顯示裝置110上或供由一或多個處理器102或平行處理器112中的一者進一步處理。在一些實施例中,光柵操作單元526被配置用以壓縮寫入記憶體的z或顏色資料並解壓縮從記憶體讀取的z或顏色資料。
具有額外情境示例的圖形系統
現在參見圖6,電子處理系統600的實施例可以包括應用處理器611、通訊地耦合到應用處理器611的永久儲存媒體612以及通訊地耦合到應用處理器611的圖形子系統613。圖形子系統613可包括用以處理圖形工作量的第一圖形引擎614,以及用以從第一圖形引擎614卸載至少一部分圖形工作量的第二圖形引擎615。例如,第二圖形引擎615可包括低精度計算引擎(例如,更詳細描述如下)。在一些實施例中,系統600可以包括穿戴式裝置以容納第二圖形引擎615(例如,如以下更詳細描述者)。
以上應用處理器611、持久性(persistant)儲存媒體612、圖形子系統613、第一圖形引擎614、第二圖形引擎615及其他系統組件中的每一者的實施例可以用硬體、軟體或其任何適合的組合來實作。例如,硬體實作可 包括可配置邏輯,例如可程式邏輯陣列(PLA)、FPGA、複雜可程式邏輯裝置(CPLD),或者在使用例如ASIC、互補金屬氧化物半導體(CMOS)或電晶體-電晶體邏輯(TTL)技術之電路技術的固定功能邏輯硬體中,或其任何組合。替代地或附加地,此等組件可以在一或多個模組中實作為儲存在例如隨機存取記憶體(RAM)、唯讀記憶體(ROM)、可程式ROM(PROM)、韌體、快閃記憶體等之機器或電腦可讀儲存媒體中要由處理器或計算設備裝置執行的一組邏輯指令。例如,用於執行組件之操作的電腦程式碼可以以一種或多種作業系統適用/適當的程式語言的任何組合寫入,程式語言包括物件導向的程式語言,諸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#等以及諸如「C」程式語言或類似程式語言的習用程序程式語言。
舉例來說,系統600可以包括與系統100類似的組件及/或特徵,其進一步被配置用以將圖形工作卸載到第二圖形引擎。例如,圖形子系統613可以包括與平行處理器200類似的組件及/或特徵,其進一步被配置有如本文所述的第二圖形引擎。系統600亦可適於與立體頭戴式系統一起工作,例如結合以下圖11-15而描述的系統。
現在參見圖7,圖形設備700的實施例可以包括用以處理圖形工作量的第一圖形引擎721,及從第一圖形引擎721卸載至少一部分圖形工作量的第二圖形引擎722。例如,第二圖形引擎可以包括低精度計算引擎723。在一些實施例中,低精度計算引擎可以被配置用以執行時 間扭曲(time warp)(例如,在一些實施例中也可以稱為再投影(reprojection))、空間扭曲(例如,或在一些實施例中為訊框速率提升轉換(frame rate up conversion))及機器學習中之至少一者。設備700亦可包括用於第二圖形引擎722的第二情境,其獨立於第一圖形引擎721的第一情境。
在一些實施例中,設備700可以進一步包括用於容納第二圖形引擎722的穿戴式設備。第二圖形引擎722可以進一步被配置用以從第一圖形引擎721卸載渲染呈現(render)工作。例如,穿戴式設備可以包括頭戴式顯示器,且第二圖形引擎722可以被配置用以從第一圖形引擎721卸載注視點渲染呈現(foveated render)工作。
上述第一圖形引擎721、第二圖形引擎722、低精度計算引擎723以及設備700的其他組件中的每一者的實施例可以用硬體、軟體或其任何組合來實作。例如,設備700的部分或全部可以被實作為平行處理器200的一部分,進一步配置有如本文所述的第二圖形引擎。設備700亦可適合於與例如像是結合以下圖11-15所描述之系統立體頭戴式系統一起工作。例如,硬體實作可包括諸如例如PLA、FPGA、CPLD的可配置邏輯,或者在使用諸如ASIC、CMOS或TTL技術之類的電路技術的固定功能邏輯硬體中或其任何組合。替代地或附加地,此等組件可以在一或多個模組中被實作為儲存在諸如RAM、ROM、PROM、韌體、快閃記憶體等之機器或電腦可讀儲存媒體中之要由處理器或計算設備執行的一組邏輯指令。例如, 用於執行組件的操作的電腦程式碼可以以一種或多種作業系統適用/適當的程式語言的任何組合來寫入,程式語言包括物件導向的程式語言,諸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#等以及諸如「C」程式語言或類似程式語言的習用程序程式語言。
現在參見圖8A至8C,方法800的一實施例可以包括在方塊831以第一圖形引擎處理圖形工作量,並且在方塊832將圖形工作量的至少一部分從第一圖形引擎卸載到第二圖形引擎。方法800亦可包括在方塊833為第二圖形引擎提供低精度計算引擎。例如,方法800可以包括在方塊834以低精度計算引擎執行時間扭曲、空間扭曲及機器學習中之至少一者,及/或在方塊835為第二圖形引擎提供獨立於第一圖形引擎的第一情境的第二情境。
在一些實施例中,方法800可以進一步包括在方塊836提供穿戴式設備以容納第二圖形引擎。方法800亦可包括在方塊837將渲染呈現工作從第一圖形引擎卸載到第二圖形引擎。例如,方法800可包括在方塊838提供頭戴式顯示器以容納第二圖形引擎,並在方塊839將注視點渲染呈現工作從第一圖形引擎卸載到第二圖形引擎。
方法800的實施例可以在系統、設備、GPU、PPU或圖形處理器管線設備中實作,諸如例如本文所述的那些。更具體地,方法800的硬體實作可包括可配置邏輯,例如,諸如PLA、FPGA、CPLD,或者在使用諸如ASIC、CMOS或TTL技術之類的電路技術的固定功能邏 輯硬體中,或者其任何組合。替代地或附加地,方法800可以在一或多個模組中實作為儲存在諸如RAM、ROM、PROM、韌體、快閃記憶體等之機器或電腦可讀儲存媒體中之要由處理器或計算設備執行的一組邏輯指令。例如,用於執行組件的操作的電腦程式碼可以以一種或多種作業系統適用/適當的程式語言的任何組合來寫入,程式語言包括物件導向的程式語言,諸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#等以及諸如「C」程式語言或類似程式語言的習用程序程式語言。例如,方法800可以在如以下結合示例18至24所描述的電腦可讀媒體上實作。
舉例來說,方法800的實施例或部分可以在應用中(例如,透過API)或驅動器軟體來實作。方法800的其他實施例或部分可以以要在GPU上執行的專用碼(例如著色器)來實作。方法800的其他實施例或部分可以以固定功能邏輯或專用硬體(例如,在GPU中)來實作。
低精度計算引擎示例
有利地,一些實施例可以提供用於虛擬實境(VR)的固定功能扭曲引擎以避免3D管線情境切換。例如,一些實施例可以透過使用固定功能邏輯在使用VR時執行時間扭曲來減少執行單元(EU)負載平衡的額外開銷。有利的是,一些實施例可能不需要任何情境切換。當涉及情境切換時,提供額外的非同步引擎亦可消除用於時間扭 曲操作的其他復雜的非同步計算。例如,一些實施例可以提供硬體區塊來實作正規3D硬體以為的時間扭曲,以避免3D管線情境切換。硬體區塊可包括用於時間扭曲資料的專用快取。
現在參見圖9,圖形系統900可包括3D管線901以處理用以產生第n訊框(3DFrame[n])之訊框資訊的圖形工作量。系統900可將時間扭曲操作903卸載到專用低精度計算引擎905(例如,處理成本及硬體專用於時間扭曲操作903)。低精度計算引擎905可與3D管線901共享記憶體介面907。時間扭曲操作903可產生下一訊框的替代訊框(TWFrame[n+1])。選擇器909可以基於檢測到的條件在下一訊框的下一個正規3D訊框(3DFrame[n+1])與替代訊框(TWFrame[n+1])之間選擇。例如,若在預定時間量(例如20ms)之後下一個正規3D訊框未準備好,則選擇器909可選擇替代訊框。
一些實施例可以採用用於時間扭曲操作的全部或大部分功能,這些功能可以其他方法在GPU/API等上完成並提供專用的非同步電腦機構來執行時間扭曲操作。有利地,由於存在用於時間扭曲的專用引擎,所以GPU不需要受時間扭曲的干擾。例如,時間扭曲引擎可以有利地包括低功率固定點影像處理/計算引擎,因為時間扭曲操作可能不需要浮點。一些實施例可以透過在低精度計算引擎而不是功能更全面的3D管線上執行時間扭曲操作來有利地使用較少的功率。低精度計算引擎可以是固定功能引 擎,但最好可以是可程式固定點通用單元,其亦可以用於空間扭曲、機器學習或適用於低精度計算引擎的其他處理。
低精度計算引擎的架構可以類似於GPU架構,但具有更少數量的計算單元及全部整數算術(GPU的各種固定功能階段(fixed function stage)可以被省略)。低精度計算引擎可以包括其自己的快取等等,且可以具有單獨的命令流但與GPU共享相同的記憶體介面。舉例來說,低精度計算引擎可以具有其自己的命令流,使得時間扭曲可以由獨立的任務佇列引動。獨立的佇列可以提供給獨立的引擎。一些實施例每GPU可包括單獨的低精度計算引擎且可隨著GPU的數量而縮放。命令流可能在GPU之外,所以它可以流到GPU內的任何資源。有利地,一些實施例可減少運動光子延遲(motion to photon latency)。
穿戴式裝置示例
一些實施例可以有利地在具有注視資訊(gaze information)的頭戴式顯示器(HMD)上提供改進的或最佳化的第二階段時間扭曲。一些實施例可以改進或最佳化HMD上的時間扭曲,以減少對HMD的處理來提供功率及/或延遲益處。例如,可在HMD上複製GPU或圖形管線的一部分以處理更複雜的處理。在一些實施例中,可以將注視點渲染呈現任務卸載到HMD。在一些實施例中,穿戴式裝置替代或額外地可包括肩掛式(shoulder mounted)顯示 器及/或頸掛式(neck mounted)顯示器。
就時間扭曲而言,由於需要較大的中央凹半徑(fovea radius)(例如,以覆蓋潛在的頭部動作),注視點渲染呈現可能不那麼有效率。透過在HMD側執行注視點渲染呈現,一些實施例可以改進或最佳化注視點渲染呈現。在HMD側執行注視點渲染呈現可以解釋時間扭曲的更大半徑。第一階段可意指時間扭曲的轉換方面,而第二階段可意指HMD上的注視點渲染呈現。在主機端,第一階段可能不是那麼有效率,因為主機可能針對時間扭曲操作維持比所需更高的精度及更大的緩衝區。
現在參見圖10,圖形系統1000可包括通訊地耦合到HMD側1012的主機側1011(例如,通訊可以是有線或無線的)。圖形系統1000可將注視點渲染呈現任務1013卸載到HMD側1012。HMD側1012可以改進或最佳化用於時間扭曲的注視點渲染呈現任務1013a。舉例來說,當將注視點渲染呈現任務與時間扭曲結合時,一些實施例可以定義與運動方向對齊的橢圓中央凹。主機側1011仍然可以執行一些時間扭曲及/或注視點渲染呈現操作。但是透過提高HMD側1012上的處理能力,一些實施例可能可以卸載更多及/或平衡圖形工作量。
一些其他HMD架構可以僅包括顯示埠及一些轉譯硬體以將轉譯後的資訊發送到顯示面板。一些實施例可以有利地包括圖形資料介面(例如更類似於通用串列匯流排(USB)),其中圖形可以作為資料而非流來發送。一些 實施例可以在HMD側1012上包括額外的計算能力以在將資料發送到顯示器之前處理/後置處理該資料。舉例來說,HMD側1012可包括媒體解碼/編碼能力。對於HMD側1012中的時間扭曲操作來說,進一步的能力可以包括移位到HMD側1012的桶形畸變校正(barrel distortion correction)、色差校正(chromatic aberration correction)及/或其他合成器(compositor)能力。主機側也可以保留這些功能,但是若HMD側1012有能力,則系統100可將再多一些的工作卸載到HMD側1012。一些光柵化能力也可被轉移到HMD側1012。在主機側1011上所完成者與在HMD側1012上所完成者之間的特定分區可取決於HMD側1012的特定工作量及/或處理能力。因為HMD側1012上的更多處理能力,系統1000可能僅需要發送一些訊框的差量資訊(delta information)(例如,僅從主機側1011僅發送經修改的像素塊到HMD側1012)。
頭戴式顯示器系統概述
圖11顯示使用者在體驗沉浸式環境(例如像是虛擬實境(VR)環境、擴增實境(AR)環境、多人三維(3D)遊戲等等)時正由使用者穿戴的頭戴式顯示器(HMD)系統1100。在所繪示的示例中,一或多個帶1120將HMD系統1100的框架1102支撐在使用者的眼睛前方。因此,可以將左眼顯示器1104定位成由使用者的左眼觀看,且將右眼顯示器1106定位成由使用者的右眼觀看。在某些例如像是使 用者穿戴的智慧型手機的例子中,左眼顯示器1104及右眼顯示器1106可以替代地整合到單一顯示器中。在AR的情況下,顯示器1104、1106可以是允許使用者觀看實體環境的透視顯示器,而其他渲染呈現的內容(例如,虛擬角色、資訊註釋、抬頭顯示器(heads up display)/HUD)在實際環境的即時饋送(live feed)上面呈現。
在一示例中,框架1102包括左下視(left look-down)相機1108,用以擷取來自通常在使用者前方及左眼下方之區域的影像(例如,左手手勢)。另外,右下視(right look-down)相機1110可以擷取來自通常在使用者前方及右眼下方之區域的影像(例如,右手手勢)。所繪示的框架1102亦包括分別用以擷取在使用者的左眼和右眼前方之影像的左前視相機1112和右前視相機1114。框架1102亦可包括用以擷取來自使用者左側之區域的影像的左側視(left look-side)相機1116及用以擷取來自使用者右側之區域的影像的右側視(right look-side)相機1118。
由可能具有重疊視野的相機1108、1110、1112、1114、1116、1118所擷取的影像可用以檢測使用者所做出的手勢並於顯示器1104、1106上分析及/或重現外部環境。在一示例中,檢測到的手勢被圖形處理架構(例如,內部及/或外部)使用以在3D遊戲中渲染呈現及/或控制使用者的虛擬表示。確實地,重疊的視野能夠擷取由其他個體做出的手勢(例如,在多人遊戲中),其中其他個體的手勢可進一步用來渲染呈現/控制沉浸式體驗。重疊的 視野亦可使HMD系統1100能夠自動檢測使用者附近的障礙物或其他危險。這種方法在先進駕駛員輔助系統(ADAS)應用中可能特別有優勢。
在一示例中,提供具有重疊視野的左下視相機1108及右下視相機1110提供了具有增加的解析度之立體視圖。增加的解析度依次可使非常類似的使用者移動能夠彼此區分(例如,以次毫米的準確度)。結果可以是HMD系統1100在可靠性方面所增強的性能。實際上,所說明的解決方案可用於廣泛的應用中,例如,AR設定中的著色資訊、在多使用者環境中使用者之間交換虛擬工具/裝置、渲染呈現虛擬品項(例如武器、劍、杖)等等。其他物體、肢體及/或身體部位的手勢也可以被檢測並用於渲染呈現/控制虛擬環境。舉例來說,可以即時追蹤脊髓攝影信號、腦波圖信號、眼睛追蹤、呼吸或抽吸、手部運動等,無論是來自穿戴者還是共享環境中的另一人。由相機1108、1110、1112、1114、1116、1118擷取的影像也可作為情境輸入。例如,可以確定使用者正在指示文字處理應用程式中要編輯的特定字或要按的鍵,遊戲中要部署的特定武器或行進方向等等。
另外,由相機1108、1110、1112、1114、1116、1118擷取的影像可以用於在設備操作、醫學培訓及/或遠端/遠距操作指導應用中進行共享通訊或聯網互動。任務特定的手勢庫或神經網路機器學習可為任務啟用工具識別及反饋。例如,可以啟用轉換成遠端真實動作的虛擬 工具。在又一示例中,HMD系統1100將對虛擬場景內的虛擬演習的操縱轉換成在被部署來搜索倒塌建築物的機器人裝置上的演習的遠端操作。此外,HMD系統1100可為可程式的,以至於其包括例如能使使用者將新手勢加到與使用者動作相關聯的可識別手勢的列表的協定。
另外,HMD 1100中的各種相機可以被配置用以除了光譜的可見波長以外還檢測頻譜頻率。輸入相機中的多光譜成像能力允許藉由消除不重要的影像特徵(例如背景雜訊)來對使用者及/或物體進行位置追蹤。舉例來說,在擴增實境(AR)應用中,例如手術、儀器及設備可以透過它們的紅外反射來追蹤,而不需要額外的追蹤輔助。此外,可以在低能見度的情況下使用HMD 1100,其中來自各個相機的「即時饋送(live feed)」可以透過電腦分析而被增強或擴增,並作為視覺或音頻提示顯示給使用者。
HMD系統1100亦可放棄與遠端計算系統執行任何類型的資料通訊或需要電力纜線(例如,獨立操作模式)。就這方面,HMD系統1100可以是具有能使HMD系統1100獨立於外部電力系統操作的電力單元的「無線」裝置。於是,使用者可玩一個全功能的遊戲而不被束縛到另一裝置(例如遊戲控制台)或電源。在文字處理例子中,HMD系統1100可以在顯示器1104及1106上呈現虛擬鍵盤及/或虛擬滑鼠以提供虛擬桌面或文字處理場景。因此,由一或多個相機擷取的姿勢辨識資料可以代表虛擬鍵盤上使用者打字活動或虛擬滑鼠的移動。優點包括但不侷限於便 於攜帶及附近個人虛擬桌面的隱私。基本圖形處理架構可以支援視頻及音頻信號的壓縮及/或解壓縮。而且,提供單獨的影像給使用者的左眼及右眼可以促進3D場景的渲染呈現、產生及/或感知。左眼顯示器1104及右眼顯示器1106的相對位置也可以調整以匹配不同使用者間的兩眼間隔(eye separation)的變化。
圖11中繪示的相機的數量只是為了便於討論。實際上,根據情況,HMD系統1100可以包括少於六個或多於六個的相機。
HMD系統的功能組件
圖12更詳細地顯示HMD系統。在所繪示的示例中,框架1102包括提供電力給HMD系統的電力單元1200(例如,電池電力、轉接器)。所繪示的框架1102還包括運動追蹤模組1220(例如,加速度計、陀螺儀),其中運動追蹤模組1220向處理器系統1204提供運動追蹤資料、定向資料及/或位置資料。處理器系統1204可包括網路轉接器1224,其耦合到I/O橋接器1206。I/O橋接器1206可以啟用網路轉接器1224與各種組件之間的通訊,諸如例如音頻輸入模組1210、音頻輸出模組1208、顯示裝置1207、輸入相機1202等。
在繪示的示例中,音頻輸入模組1210包括右音頻輸入1218及左音頻輸入1216,其檢測可被處理以識別使用者以及附近個人的語音命令的聲音。在擷取的音頻信 號中識別的語音命令可以在模態切換及其他應用期間增加手勢識別。而且,擷取的音頻信號可提供用於增強沉浸式體驗的3D資訊。
音頻輸出模組1208可包括右音頻輸出1214及左音頻輸出1212。音頻輸出模組1208可以將聲音傳送給使用者及/或其他附近個人的耳朵。可以採用耳塞式耳機、耳罩式揚聲器,耳掛式揚聲器、揚聲器等或其任何組合之形式的音頻輸出模組1208可以向使用者傳遞立體聲及/或3D音頻內容(例如,空間定位)。所繪示的框架1102還包括無線模組1222,其可以促進HMD系統與各種其他系統(例如,電腦、穿戴式設備、遊戲控制台)之間的通訊。在一示例中,無線模組1222經由網路轉接器1224與處理器系統1204通訊。
所繪示的顯示裝置1207包括左眼顯示器1104及右眼顯示器1106,其中顯示器1104、1106上所呈現的視覺內容可經由I/O橋接器1206自處理器系統1204獲得。輸入相機1202可包括已經討論過左側視相機1116、右側視相機1118、左下視相機1108、左前視相機1112、右前視相機1114及右下方相機相機1110。
現在參見圖13,顯示一般處理叢集(GPC)1300。所繪示的GPC 1300可以被併入處理系統中,例如已經討論過的處理器系統1204(圖12)。GPC 1300可以包括與排程器通訊的管線管理器1302。在一示例中,管線管理器1302從排程器接收任務並將任務分配給一或多個串 流多處理器(SM)1304。每個SM 1304可被配置用以處理執行緒群組,其中執行緒群組可被認為是在不同的輸入資料上執行相同或相似操作的多個相關執行緒。因此,執行緒群組中的每個執行緒可被分配給特定的SM 1304。在另一示例中,執行緒的數量可大於SM 1304中的執行單元的數量。就此方面而言,執行緒群組的執行緒可平行操作。管線管理器1302還可以將經處理的資料目的地指定給與記憶體交叉開關進行通訊的工作分配交叉開關1308。
因此,隨著每個SM 1304將處理後的任務傳送給工作分配交叉開關1308,處理後的任務可以被提供給另一GPC 1300以供進一步處理。SM 1304的輸出還可被發送到預光柵操作(preROP)單元1314,其又將資料引導到一或多個光柵操作單元,或執行其他操作(例如,執行位址轉換、組織圖像顏色資料、混合顏色等等)。SM 1304可包括SM 1304可將資料儲存到的內部一階(L1)快取(未顯示)。SM 1304還可以經由記憶體管理單元(MMU)1310及一點五階(L1.5)快取1306存取二階(L2)快取(未顯示)。MMU 1310可以將虛擬位址映射到實體位址。就此而言、MMU 1310可以包括用於將虛擬位址映射到圖塊之實體位址、記憶體頁面及/或快取列索引的頁面表項(PTE)。所繪示的GPC 1300還包括紋理單元1312。
圖形管線架構
現在參見圖14,其顯示圖形管線1400。在所 繪示的示例中,世界空間管線1420包括基元分配器(PD)1402。PD 1402可收集與高階服務、圖形基元、三角形等相關聯的頂點資料,並將頂點資料傳輸到頂點屬性提取單元(VAF)1404。VAF 1404可以從共享記憶體檢索與每個進入頂點相關聯的頂點屬性,並將頂點資料連同關聯的頂點屬性一起儲存到共享記憶體中。
所示的世界空間管線1420還包括頂點、曲面細分、幾何處理單元(VTG)1406。VTG 1406可以包括例如頂點處理單元、曲面細分初始化處理單元、任務分配器、任務產生單元、拓撲產生單元、幾何處理單元、細分處理單元等或其任何組合。在一示例中,VTG 1406是被配置用以執行幾何程式、曲面細分程式、及頂點著色器程式的可程式執行單元。由VTG 1406執行的程式可以處理接收自VAF 1404的頂點資料及頂點屬性。此外,由VTG 1406執行的程式可以針對圖形基元在每個頂點產生圖形基元、顏色值、表面法線因子及透明度值,用於圖形處理管線1400內之進一步處理。
VTG 1406的頂點處理單元可以是執行頂點著色器程式、照明及頂點著色器程式所指定的變換頂點資料的可程式執行單元。例如,頂點處理單元可以被編程以將頂點資料從基於物件的座標表示(例如物件空間)變換為諸如世界空間的可選基礎座標系統或正規化裝置座標(NDC)空間。另外,頂點處理單元可讀取由VAF 1404儲存在共享記憶體中的頂點資料及頂點屬性,並處理頂點資料及頂點 屬性。在一示例中,頂點處理單元將經處理的頂點儲存在共享記憶體中。
曲面細分初始化處理單元(例如,外殼著色器、曲面細分控制著色器)可以執行曲面細分初始化著色器程式。在一示例中,細分初始化處理單元處理由頂點處理單元產生的頂點並產生有時被稱為「補片(patch)」的圖形基元。曲面細分初始化處理單元還可以產生各種補片屬性,其中補片資料及補片屬性被儲存到共享記憶體。VTG 1406的任務產生單元可以從共享記憶體檢索頂點及補片的資料及屬性。在一示例中,任務產生單元產生用以處理頂點及及補片以供圖形處理管線1400中的後級處理的任務。
由任務產生單元產生的任務可以由VTG 1406的任務分配器重新分配。例如,由頂點著色器程式及細分初始化程式的各種實例所產生的任務可在一個圖形處理管線1400及另一者之間顯著改變。於是,任務分配器可以重新分配這些任務,使得每個圖形處理管線1400在稍後的管線階段期間具有大致相同的工作量。
如已經提到的那樣,VTG 1406還可以包括拓撲產生單元。在一示例中,拓撲產生單元檢索由任務分配器分配的任務、索引包括與補片相關聯之頂點的頂點、以及計算曲面細分頂點的座標(UV)以及連接曲面細分頂點以形成圖形基元的索引。索引的頂點可以由拓撲產生單元儲存在共享記憶體中。VTG 1406的曲面細分處理單元可以被配置用以執行曲面細分著色器程式(例如,域著色器、曲 面細分評估著色器)。曲面細分處理單元可以從共享記憶體讀取輸入資料並將輸出資料寫入共享記憶體。輸出資料可以從共享記憶體傳遞到幾何處理單元(例如,下一個著色器階段)作為輸入資料。
VTG 1406的幾何處理單元可執行幾何著色器程式以變換圖形基元(例如,三角形、線段、點等)。在一示例中,頂點被分組以構建圖形基元,其中幾何處理單元將圖形基元細分為一或多個新的圖形基元。幾何處理單元還可以計算可用於光柵化新圖形基元的參數,例如簡明方程式係數。
所繪示的世界空間管線1420還包括接收指定來自VTG 1406的新圖形基元的參數及頂點的視埠縮放、剔除及裁切單元(VPC)1408。在一示例中,VPC 1408執行裁切、圍管、透視校正及視埠轉換來識別可能在最終渲染呈現影像中可見的圖形基元。VPC 1408還可以識別可能不可見的圖形基元。
圖形處理管線1400還可以包括耦合到世界空間管線1420的拼貼單元1410。拼貼單元1410可以是圖形基元分類引擎,其中圖形基元在世界空間管線1420中被處理並且然後被傳輸到拼貼單元1410。就此點而言,圖形處理管線1400還可包括螢幕空間管線1422,其中螢幕空間可以被劃分成快取圖塊。因此每個快取圖塊可以與螢幕空間的一部分相關聯。對於每個圖形基元,拼貼單元1410可以識別與圖形基元相交的快取圖塊組(例如「拼貼」)。在平鋪 多個圖形基元之後,拼貼單元1410可以基於快取圖塊來處理圖形基元。在一示例中,與特定快取圖塊相關聯的圖形基元一次一個圖塊地傳送到螢幕空間管線1422中的設定單元1412。與多個快取圖塊相交的圖形基元可以在世界空間管線1420中被處理一次,同時被多次傳送到螢幕空間管線1422。
在一示例中,設定單元1412經由拼貼單元1410接收來自VPC 1408的頂點資料,並且計算與圖形基元相關聯的參數。參數可以包括例如邊緣方程式、部分平面方程及深度簡明方程式。螢幕空間管線1422還可以包括耦合到設定單元1412的光柵化器1414。光柵化器可以掃描轉換新的圖形基元並將片段及覆蓋資料傳輸到像素著色單元(PS)1416。光柵化器1414還可以執行Z剔除及其他基於Z的最佳化。
可存取共享記憶體的PS 1416可執行對從光柵化器1414接收的片段進行變換的片段著色器程式。更具體地,片段著色器程式可以以像素級粒度來著色片段(例如,作用為像素著色器程式)。在另一示例中,片段著色器程式以取樣級粒度來著色片段,其中每個像素包括多個樣本,並且每個樣本代表像素的一部分。此外,根據情況(例如,取樣率),片段著色器程式可以以任何其他粒度著色片段。PS 1416可以執行混合、著色、透視校正、紋理映射等以產生著色片段。
所繪示螢幕空間管線1422還包括可執行光柵 操作(例如,模版印刷、Z測試、混合等)的光柵操作單元(ROP)1418。ROP 1418接著可將像素資料作為經處理的圖形資料傳輸到一或多個經渲染呈現的目標(例如,圖形記憶體)。ROP 1418可以被配置用以壓縮被寫入記憶體的Z或顏色資料,並且解壓縮從記憶體讀取的Z或顏色資料。ROP 1418的位置可視情況而變化。
圖形處理管線1400可以由一或多個處理元件來實作。例如,VTG 1406及/或PS 1416可以在一或多個SM、PD 1402、VAF 1404、VPC 1408、拼貼單元1410、設定單元1412、光柵化器1414且/或ROP 1418可以結合對應的分區單元在特定GPC的處理元件中實作。圖形處理管線1400也可以以固定功能硬體邏輯來實作。實際上,圖形處理管線1400可以在PPU中實作。
因此,所繪示之世界空間管線1420處理3D空間中的圖形物件,其中每個圖形物件的位置相對於其他圖形物件及相對於3D座標係是已知的。對比之下,螢幕空間管線1422可以處理已經從3D座標系統投影到代表顯示裝置之表面的2D平面表面上的圖形物件。另外,世界空間管線1420可以被分成α階段(alpha phase)管線及β階段(beta phase)管線,其中α階段管線包括從PD 1402到任務產生單元的管線階段。β階段管線可以包括從拓撲產生單元到VPC 1408的管線階段。在這種情況下,圖形處理管線1400可以執行在α階段管線中的第一組操作(例如,單一執行緒、執行緒群組、多個執行緒群組以及在β階段管線中的 第二組操作(例如,單一執行緒、執行緒群組、多個執行緒群組一作用)。
若多個圖形處理管線1400是在使用時,與一組圖形物件相關聯的頂點資料及頂點屬性可被劃分,使得每個圖形處理管線1400在α階段都具有類似的工作量。因此,α階段的處理可以大幅度擴大頂點的資料量與頂點屬性,使得由任務產生單元所產生之頂點資料與頂點屬性的量顯著大於由PD 1402及VAF 1404所處理之頂點資料與頂點屬性之的量。而且,與不同圖形處理管線1400相關聯的任務產生單元可以產生具有不同品質水準的頂點資料與頂點屬性,即使當以相同屬性量開始α階段時也是如此。在這種情況下,任務分配器可以重新分配由α階段管線產生的屬性,使得每個圖形處理管線1400在β階段管線的開始處具有大致相同的工作量。
現在參見圖15,顯示串流多處理器(SM)1500。繪示的SM 1500包括耦合到指令快取1502的K個排程器單元1504,其中每個排程器單元1504從管線管理器(未顯示)接收執行緒塊陣列以及管理用於每個活動執行緒塊陣列的一或多個執行緒塊的指令排程。排程器單元1504可以排程執行緒以在平行執行緒的群組中執行,其中每個群組可以被稱為「束(warp)」。因此,每個束可能包括例如64個執行緒。另外,排程器單元1504可以管理多個不同的執行緒塊,分配執行緒塊至束以供執行。排程器單元然後可以在每個時脈週期期間在多個功能單元上安排來自多個不同束 的指令。每個排程器單元1504可以包括一或多個指令排程單元1522,其中每個排程單元1522將指令發送到一或多個功能單元。排程單元1522的數量可以根據情況而變化。在所繪示的示例中,排程器單元1504包括兩個排程單元1522,其使得能夠在每個時脈週期期間排程來自相同束的兩個不同指令。
SM1500還可以包括暫存器檔案1506。暫存器檔案1506可以包括在功能單元之間分開的一組暫存器,使得每個功能單元被分配暫存器檔案1506的專用部分。暫存器檔案1506也可以在由SM 1500執行的不同的束之間劃分。在一示例中,暫存器檔案1506為連接到功能單元的資料路徑的運算元提供臨時儲存。繪示的SM 1500還包括L個處理核心1508,其中L可以是相對大的數量(例如192)。每個核心1508可以是管線的單精度處理單元,其包括浮點運算邏輯單元(例如IEEE 754-2008)以及整數算術邏輯單元。
所繪示的SM 1500還包括M個雙倍精度單元(DPU)1510、N個特殊功能單元(SFU)1512及P個載入/儲存單元(LSU)1514。每個DPU 1510可以實作雙倍精度浮點運算,並且每個SFU 1512可以執行特殊功能,例如矩形複製像素混合等。另外,每個LSU 1514可以在共享記憶體1518與暫存器檔案1506之間進行載入及儲存操作。在一示例中,載入及儲存操作透過J紋理單元/L1快取1520及互連網路1516實施。在一示例中,J紋理單元/L1快取1520也耦合到交叉開關(未顯示)。因此,互連網路1516可將每個功能 單元連接到暫存器檔案1506並連接到共享記憶體1518。在一示例中,互連網路1516用作交叉開關,其將任何功能單元連接到暫存器檔案1506中的任何暫存器。
SM 1500可以在圖形處理器(例如圖形處理單元/GPU)內實作,其中紋理單元/L1快取1520可以從記憶體存取紋理映射並對紋理映射進行取樣以產生取樣紋理值以用於著色器程式。由紋理單元/L1快取1520執行的紋理操作包括但不侷限於基於mip映射(mipmap)的抗失真(antialiasing)。
附加系統概述示例
圖16是根據一實施例之處理系統1600的方塊圖。在各種實施例中,系統1600包括一或多個處理器1602及一或多個圖形處理器1608,並且可以是具有大量處理器1602或處理器核心1607的單處理器桌上系統、多處理器工作站系統或伺服器系統。在一實施例中,系統1600是結合在用於行動、手持或嵌入式設備中的系統單晶片(SoC)積體電路內的處理平台。
系統1600的實施例可包括或併入在基於伺服器的遊戲平台,包括遊戲及媒體控制台、行動遊戲控制台、手持遊戲控制台或線上遊戲控制台的遊戲控制台內。在一些實施例中,系統1600是行動電話、智慧型電話、平板計算裝置或行動網際網路設備。資料處理系統1600還能包括,與穿戴式設備(諸如智慧型手錶穿戴式設備、智慧 型眼鏡設備、擴增實境設備或虛擬實境設備)耦合或整合到穿戴式設備內。在一些實施例中,資料處理系統1600是具有一或多個處理器1602及由一或多個圖形處理器1608所產生的圖形界面的電視或機上盒設備。
在一些實施例中,一或多個處理器1602各自包括一或多個處理器核心1607以處理當被執行時執行用於系統及使用者軟體的操作的指令。在一些實施例中,一或多個處理器核心1607中的每一個被配置用以處理特定指令集1609。在一些實施例中,指令集1609可促進複雜指令集計算(CISC)、精簡指令集計算(RISC)或透過極長指令字(VLIW)計算。多處理器核心1607可以各自處理不同的指令集1609,其可以包括便於模擬其他指令集的指令。處理器核心1607還可以包括其他處理設備,諸如數位信號處理器(DSP)。
在一些實施例中,處理器1602包括快取記憶體1604。取決於架構,處理器1602可具有單一內部快取或多階內部快取。在一些實施例中,快取記憶體在處理器1602的各種組件之間共享。在一些實施例中,處理器1602亦使用外部快取(例如,3階(L3)快取或最終階快取(LLC)(未顯示),其可使用已知的快取一致性技術在處理器核心1607之間共享。處理器1602中另外包括暫存器檔案1606,其可以包括用於儲存不同類型之資料(例如,整數暫存器、浮點暫存器、狀態暫存器及指令指標暫存器)的不同類型的暫存器。一些暫存器可為通用暫存器,而其他 暫存器可專用於處理器1602的設計。
在一些實施例中,處理器1602耦合到處理器匯流排1610以在處理器1602與系統1600中的其他組件之間傳輸諸如位址、資料或控制信號的通訊信號。在一實施例中,系統1600使用示例性「集線器」系統架構,其包括記憶體控制器集線器1616及輸入輸出(I/O)控制器集線器1630。記憶體控制器集線器1616促進記憶體裝置與系統1600的其他組件之間的通訊,而I/O控制器集線器(ICH)1630透過本地I/O匯流排提供到I/O裝置的連接。在一實施例中,記憶體控制器集線器1616的邏輯被整合在處理器內。
記憶體裝置1620可以是具有合適性能以充當處理器記憶體的動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、相變記憶體裝置或一些其它記憶體裝置。在一實施例中,當單一或多個處理器1602執行應用或程序時,記憶體裝置1620可作為系統1600的系統記憶體來操作,以儲存資料1622及指令1621以供使用。記憶體控制器集線器1616還與可選的外部圖形處理器1612耦合,該外部圖形處理器1612可以與處理器1602中的一或多個圖形處理器1608進行通訊以執行圖形媒體操作。
在一些實施例中,ICH 1630使周邊能夠經由高速I/O匯流排連接到記憶體裝置1620及處理器1602。I/O周邊包括但不侷限於音頻控制器1646、韌體介面1628、無 線收發器1626(例如,Wi-Fi、藍芽)、資料儲存裝置1624(例如硬碟驅動器、快閃記憶體等)以及用於將傳統(例如,個人系統2(PS/2))裝置耦合到系統的傳統I/O控制器1640。一或多個通用串列匯流排(USB)控制器1642連接諸如鍵盤與滑鼠1644組合的輸入裝置。網路控制器1634亦可以耦合到ICH 1630。在一些實施例中,高性能網路控制器(未顯示)耦合到處理器匯流排1610。將認識到,所示的系統1600是示例性的而非限制性的,因為也可以使用不同配置的其他類型的資料處理系統。例如,I/O控制器集線器1630可以整合在一或多個處理器1602內,或者記憶體控制器集線器1616及I/O控制器集線器1630可以整合到離散的外部圖形處理器,諸如外部圖形處理器1612。
圖17是具有一或多個處理器核心1702A-1702N、整合記憶體控制器1714及整合圖形處理器1708的處理器1700的實施例的方塊圖。具有與本文任何其它圖式的元件相同的參考標號(或名稱)的圖17可以以與本文其它地方所描述的方式類似的任何方式操作或作用,但不侷限於此。處理器1700可以包括額外的核心直到並且包括由虛線框表示的附加核心1702N。處理器核心1702A-1702N中的每一者包括一或多個內部快取單元1704A-1704N。在一些實施例中,每個處理器核心亦可存取一或多個共享快取單元1706。
內部快取單元1704A-1704N及共享快取單元1706表示處理器1700內的快取記憶體分層結構。快取記憶 體分層結構可以包括每個處理器核心中的至少一階的指令和資料快取以及一或多個共享的中階快取,例如2階(L2)、3階(L3)、4階(L4)或其他階的快取,其中外部記憶體之前的最高階快取被分類為LLC。在一些實施例中,快取一致性邏輯保持各個快取單元1706與1704A-1704N之間的一致性。
在一些實施例中,處理器1700還可以包括一組一或多個匯流排控制器單元1716及系統代理核心1710。一或多個匯流排控制器單元1716管理一組周邊匯流排,例如一或多個周邊設備組件互連匯流排(例如,PCI、PCI Express)。系統代理核心1710為各種處理器組件提供管理功能。在一些實施例中,系統代理核心1710包括一或多個整合記憶體控制器1714以管理對各種外部記憶體設備(未顯示)的存取。
在一些實施例中,處理器核心1702A-1702N中的一或多個包括對同時多執行緒的支援。在這樣的實施例中,系統代理核心1710包括用於在多執行緒處理期間協調並操作核心1702A-1702N的組件。系統代理核心1710可以另外包括功率控制單元(PCU),其包括用以調節處理器核心1702A-1702N及圖形處理器1708的功率狀態的邏輯及組件。
在一些實施例中,處理器1700另外包括圖形處理器1708以執行圖形處理操作。在一些實施例中,圖形處理器1708與該組共享快取單元1706以及包括一或多個整 合儲存控制器1714的系統代理核心1710耦合。在一些實施例中,顯示控制器1711與圖形處理器1708以將圖形處理器輸出驅動到一或多個耦合的顯示器。在一些實施例中,顯示控制器1711可以是經由至少一個互連與圖形處理器耦合的獨立模組,或者可以整合在圖形處理器1708或系統代理核心1710內。
在一些實施例中,使用環狀(ring based)互連單元1712來耦合處理器1700的內部組件。然而,可以使用替代互連單元,諸如點對點互連、交換互連或其他技術,包括本領域眾所周知的技術。在一些實施例中,圖形處理器1708經由I/O鏈路1713與環狀互連1712耦合。
示例性I/O鏈路1713代表多種I/O互連中的至少一種,包括促進各種處理器組件與高性能嵌入式記憶體模組1718之間的通訊的封裝I/O互連,例如一個eDRAM模組。在一些實施例中,處理器核心1702-1702N及圖形處理器1708中的每一者使用嵌入式記憶體模組1718作為共享的最後階快取。
在一些實施例中,處理器核心1702A-1702N是執行相同指令集架構的同質核心。在另一實施例中,處理器核心1702A-1702N在指令集架構(ISA)方面是異質的,其中處理器核心1702A-N中的一或多個執行第一指令集,而其他核心中的至少一個核心執行第一指令集的子集或不同的指令集。在一實施例中,就微架構而言,處理器核心1702A-1702N是異質的,其中具有相對較高功耗的一或多 個核心與具有較低功耗的一或多個功率核心耦合。另外,除了其他組件之外,處理器1700可以在一或多個晶片上實作或者實作為具有所示組件的SoC積體電路。
圖18是圖形處理器1800的方塊圖,其可以是離散圖形處理單元,或者可以是與多個處理核心整合的圖形處理器。在一些實施例中,圖形處理器經由記憶體映射的I/O介面與圖形處理器上的暫存器以及放置在處理器記憶體中的命令進行通訊。在一些實施例中,圖形處理器1800包括存取記憶體的記憶體介面1814。記憶體介面1814可以是到本地記憶體、一或多個內部快取、一或多個共享外部快取、及/或到系統記憶體的介面。
在一些實施例中,圖形處理器1800還包括顯示控制器1802以將顯示輸出資料驅動到顯示裝置1820。顯示控制器1802包括用於一或多個覆蓋平面的硬體,用於多層視頻的顯示及合成或使用者介面元件。在一些實施例中,圖形處理器1800包括視頻編解碼器引擎1806,以將媒體編碼、解碼或轉碼成一或多個媒體編碼格式,來自一或多個媒體編碼格式或在一或多個媒體編碼格式之間,媒體編碼格式包括但不侷限於諸如MPEG-2的動畫專家群(MPEG)格式、諸如H.264/MPEG-4AVC的高階視頻編碼(AVC)格式、以及電影及電視工程師協會(SMPTE)421M/VC-1及諸如JPEG的聯合影像專家組(JPEG)格式,以及Motion JPEG(MJPEG)格式。
在一些實施例中,圖形處理器1800包括塊影 像傳送(BLIT)引擎1804以執行包括例如位元邊界塊傳送的二維(2D)光柵器操作。然而,在一實施例中,使用圖形處理引擎(GPE)1810的一或多個組件來執行2D圖形操作。在一些實施例中,圖形處理引擎1810是用於執行圖形操作的計算引擎,包括三維(3D)圖形操作及媒體操作。
在一些實施例中,GPE 1810包括用於執行3D操作的3D管線1812,諸如使用作用於3D基元形狀(例如,矩形、三角形等)的處理功能來渲染呈現三維影像及場景。3D管線1812包括可執行元件內的各種任務及/或產生執行執行緒到3D/媒體子系統1815的可程式及固定功能元件。雖然3D管線1812可用於執行媒體操作,但GPE1810還包括專門用於執行媒體操作(例如視頻後置處理及影像增強)的媒體管線1816。
在一些實施例中,媒體管線1816包括固定功能或可程式邏輯單元執行一或多個專用媒體操作,諸如視頻解碼加速、視頻去交錯及視頻編碼加速,以代替或代表視頻編解碼器引擎1806。在一些實施例中,媒體管線1816另外包括執行緒產生單元以產生用於在3D/媒體子系統1815上執行的執行緒。產生的執行緒對包括在3D/媒體子系統1815中的一或多個圖形執行單元上的媒體操作執行計算。
在一些實施例中,3D/媒體子系統1815包括用於執行由3D管線1812及媒體管線1816所產生的執行緒的邏輯。在一實施例中,管線將執行緒執行請求發送到3D/ 媒體子系統1815,其包括執行緒調度邏輯仲裁且將各種請求分配給可用的執行緒執行資源。執行資源包括一系列圖形執行單元來處理3D及媒體執行緒。在一些實施例中,3D/媒體子系統1815包括用於執行緒指令和資料的一或多個內部快取。在一些實施例中,子系統還包括共享記憶體(包括暫存器及可定址記憶體)以在執行緒之間共享資料並儲存輸出資料。
3D/媒體處理
圖19是根據一些實施例的圖形處理器的圖形處理引擎1910的方塊圖。在一實施例中,GPE 1910是圖1中所示的GPE 1810的一個版本。圖19的元件具有與本文任何其他圖中的元件相同的參考標號(或名稱),能以類似於本文其他地方所描述的任何方式操作或作用,但不侷限於此。
在一些實施例中,GPE 1910與命令串流器1903耦合,命令串流器1903向GPE 3D及媒體管線1912、1916提供命令流。在一些實施例中,命令串流器1903耦合到記憶體,記憶體可以是系統記憶體,或一或多個內部快取記憶體及共享快取記憶體。在一些實施例中,命令串流器1903從記憶體接收命令並將命令發送到3D管線1912及/或媒體管線1916。這些命令是從儲存用於3D及媒體管線1912、1916的命令的環形緩衝器中取出的指令。在一實施例中,環形緩衝器可以另外包括儲存多個命令的批次的批 次命令緩衝器。3D及媒體管線1912、1916透過經由對應管線內的邏輯執行操作或透過將一或多個執行執行緒分派到執行單元陣列1914來處理命令。在一些實施例中,執行單元陣列1914是可縮放的,使得陣列包括基於GPE 1910的目標功率及性能水平的可變數量的執行單元。
在一些實施例中,取樣引擎1930與記憶體(例如,快取記憶體或系統記憶體)與執行單元陣列1914耦合。在一些實施例中,取樣引擎1930為執行單元陣列1914提供記憶體存取機構,其允許執行陣列1914年從記憶體中讀取圖形及媒體資料。在一些實施例中,取樣引擎1930包括用以針對媒體執行專用影像取樣操作的邏輯。
在一些實施例中,取樣引擎1930中的專用媒體取樣邏輯包括去雜訊/去交錯模組1932、運動估計模組1934以及影像縮放及濾波模組1936。在一些實施例中,去雜訊/去交錯模組1932包括對解碼的視頻資料執行去雜訊或去交錯演算法中的一或多個的邏輯。去交錯邏輯將交錯掃描視頻內容的交替場組合成單一視頻。去雜訊邏輯減少或消除視頻及影像資料中的資料雜訊。在一些實施例中,去雜訊邏輯及去交錯邏輯是運動自適應的,並且基於在視頻資料中檢測到的運動量使用空間或時間濾波。在一些實施例中,去雜訊/去交錯模組1932包括專用運動檢測邏輯(例如,在運動估計引擎1934內)。
在一些實施例中,運動估計引擎1934透過對視頻資料執行諸如運動向量估計及預測的視頻加速函數來 為視頻操作提供硬體加速。運動估計引擎確定描述連續視頻訊框之間的影像資料變換的運動向量。在一些實施例中,圖形處理器媒體編解碼器使用視頻運動估計引擎1934來對巨集塊級上的視頻執行操作,否則這可能在計算上太密集以致於不能用通用處理器執行。在一些實施例中,運動估計引擎1934通常可用於圖形處理器組件以輔助對視頻資料內的運動的方向或大小敏感或適應的視頻解碼及處理功能。
在一些實施例中,影像縮放及濾波模組1936執行影像處理操作以增強產生的影像及視頻的視覺品質。在一些實施例中,縮放及濾波模組1936在將資料提供給執行單元陣列1914之前在取樣操作期間處理影像及視頻資料。
在一些實施例中,GPE 1910包括資料埠1944,其提供用以存取記憶體之圖形子系統的附加機構。在一些實施例中,資料埠1944促進針對包括渲染呈現目標寫入、恆定緩衝器讀取、臨時記憶體空間讀取/寫入及媒體表面存取的操作的記憶體存取。在一些實施例中,資料埠1944包括快取記憶體空間以快取對記憶體的存取。快取記憶體可以是單一資料快取,或是分成用於透過資料埠存取記憶體的多個子系統(例如,渲染呈現緩衝區快取、恆定緩衝區快取等)的多個快取。在一些實施例中,在執行單元陣列1914中的執行單元上執行的執行緒透過經由耦合GPE 1910的每個子系統的資料分配互連交換訊息來與資料 埠通訊。
執行單元
圖20是圖形處理器2000的另一實施例的方塊圖。具有與本文任何其他圖中的元件相同的參考標號(或名稱)的圖20的元件可以以與本文其它地方所描述的方式類似的任何方式操作或作用,但不侷限於此。
在一些實施例中,圖形處理器2000包括環狀互連2002、管線前端2004、媒體引擎2037及圖形核心2080A-2080N。在一些實施例中,環狀互連2002將圖形處理器耦合到包括其他圖形處理器或一或多個通用處理器核心的其他處理單元。在一些實施例中,圖形處理器是整合在多核心處理系統內的許多處理器中的一個。
在一些實施例中,圖形處理器2000經由環狀互連2002接收批次命令。傳入命令由管線前端2004中的命令串流器2003解釋。在一些實施例中,圖形處理器2000包括可縮放執行邏輯以執行經由圖形核心2080A-2080N的3D幾何處理及媒體處理。對於3D幾何處理命令,命令串流器2003將命令提供給幾何管線2036。對於至少一些媒體處理命令,命令串流器2003將命令提供給與媒體引擎2037耦合的視頻前端2034。在一些實施例中,媒體引擎2037包括用於視頻及影像後置處理的視頻品質引擎(VQE)2030及用於提供硬體加速的媒體資料編碼及解碼的多格式編碼/解碼(MFX)2033引擎。在一些實施例中,幾何管線2036與媒體 引擎2037各自為由至少一個圖形核心2080A提供的執行緒執行資源產生執行執行緒。
在一些實施例中,圖形處理器2000包括具有模組化核心2080A-2080N(有時被稱為核心切片)的可縮放執行緒執行資源,每個模組核心具有多個子核心2050A-2050N,2060A-2060N(有時被稱為核心子切片)。在一些實施例中,圖形處理器2000可具有任何數量的圖形核心2080A到2080N。在一些實施例中,圖形處理器2000包括具有至少第一子核心2050A及第二核心子核心2060A的圖形核心2080A。在其他實施例中,圖形處理器是具有單子核心(例如,2050A)的低功率處理器。在一些實施例中,圖形處理器2000包括多個圖形核心2080A-2080N,每個圖形核心包括一組第一子核心2050A-2050N及一組第二子核心2060A-2060N。第一子核心2050A-2050N的集合中的每個子核心至少包括第一組執行單元2052A-2052N及媒體/紋理取樣器2054A-2054N。該組第二子核心2060A-2060N中的每個子核心至少包括第二組執行單元2062A-2062N及取樣器2064A-2064N。在一些實施例中,每個子核心2050A-2050N、2060A-2060N共享一組共享資源2070A-2070N。在一些實施例中,共享資源包括共享快取記憶體及像素操作邏輯。其他共享資源也可以被包括在圖形處理器的各種實施例中。
圖21顯示包括在GPE的一些實施例中採用的處理元件的陣列的執行緒執行邏輯2100。具有與本文任何 其它圖的元件相同的參考標號(或名稱)的圖21的元件可以以與本文其他地方所描述的任何類似的方式來操作或作用,但不侷限於此。
在一些實施例中,執行緒執行邏輯2100包括像素著色器2102、執行緒分派器2104、指令快取2106、包括多個執行單元2108A-2108N的可縮放執行單元陣列、取樣器2110、資料快取2112,及資料埠2114。在一實施例中,所包括的組件經由鏈接到每個組件的互連結構互連。在一些實施例中,執行緒執行邏輯2100包括透過指令快取2106、資料埠2114、取樣器2110及執行單元陣列2108A-2108N中的一或多個的到記憶體(例如系統記憶體或快取記憶體)的一或多個連接。在一些實施例中,每個執行單元(例如2108A)是能夠執行多個併發執行緒並為每個執行緒平行處理多個資料元件的單獨向量處理器。在一些實施例中,執行單元陣列2108A-2108N包括任何數量的單獨執行單元。
在一些實施例中,執行單元陣列2108A-2108N主要用於執行「著色器」程式。在一些實施例中,陣列2108A-2108N中的執行單元執行包括對許多標準3D圖形著色器指令的本地支援的指令集,使得來自圖形庫(例如,Direct 3D及OpenGL)的著色器程式以最小的平移執行。執行單元支援頂點及幾何處理(例如,頂點程式,幾何程式,頂點著色器),像素處理(例如像素著色器,片段著色器)及通用處理(例如,計算及媒體著色器)。
執行單元陣列2108A-2108N中的每個執行單元在資料元件的陣列上操作。資料元件的數量是「執行大小」或指令的通道數量。執行通道是指令內資料元件存取,屏蔽及流程控制的邏輯執行單位。通道的數量可以獨立於特定圖形處理器的實體算術邏輯單元(ALU)或浮點單元(FPU)的數量。在一些實施例中,執行單元2108A-2108N支援整數及浮點資料類型。
執行單元指令集包括單指令多資料(SIMD)指令。各種資料元件可以作為打包資料類型儲存在暫存器中,並且執行單元將根據元件的資料大小處理各種元件。例如,當在256位寬度的向量上運行時,向量的256位被儲存在暫存器中,並且執行單元作為四個單獨的64位打包資料元件(四字(QW)大小的資料8個獨立的32位打包資料元件(雙字(DW)大小的資料元件),16個獨立的16位打包資料元件(字(W)大小的資料元件)或32個獨立的8位資料元件(位元組(B)大小的資料元件)。但是,不同的向量寬度及暫存器大小是可能的。
一或多個內部指令快取(例如,2106)被包括在執行緒執行邏輯2100中以快取執行單元的執行緒指令。在一些實施例中,包括一或多個資料快取(例如,2112)以在執行緒執行期間快取執行緒資料。在一些實施例中,包括取樣器2110以提供用於3D操作的紋理取樣及用於媒體操作的媒體取樣。在一些實施例中,取樣器2110包括專用紋理或媒體取樣功能,以在取樣資料提供給執行單元之前處 理取樣程序期間的紋理或媒體資料。
在執行期間,圖形及媒體管道經由執行緒產生及排程邏輯將執行緒發起請求發送到執行緒執行邏輯2100。在一些實施例中,執行緒執行邏輯2100包括本地執行緒分派器2104,該本地執行緒分派器2104仲裁來自圖形及媒體管線的執行緒發起請求並且在一或多個執行單元2108A-2108N上實例化所請求的執行緒。例如,幾何管線(例如,圖20的2036)將頂點處理,曲面細分或幾何處理執行緒分派給執行緒執行邏輯2100(圖21)。在一些實施例中,執行緒分派器2104亦可處理來自執行著色器程式之運行時執行緒產生請求。
一旦一組幾何對像已經被處理並光柵化為像素資料,引動像素著色器2102以進一步計算輸出資訊並使結果被寫入到輸出表面(例如,顏色緩衝器、深度緩衝器、模板緩衝器等等)。在一些實施例中,像素著色器2102計算要在光柵化對像上內插的各種頂點屬性的值。在一些實施例中,像素著色器2102接著執行應用編程介面(API)供應的像素著色器程式。為了執行像素著色器程式,像素著色器2102經由執行緒排程器2104向執行單元(例如,2108A)分派執行緒。在一些實施例中,像素著色器2102使用取樣器2110中的紋理取樣邏輯來存取儲存在記憶體中的紋理映射中的紋理資料。對紋理資料及輸入幾何資料的算術運算計算每個幾何片段的像素顏色資料,或丟棄來自進一步處理的一或多個像素。
在一些實施例中,資料埠2114為執行緒執行邏輯2100輸出經處理的資料提供記憶體存取機構至記憶體以供在圖形處理器輸出管線上處理。在一些實施例中,資料埠2114包括或耦合到一或多個快取記憶體(例如,資料快取2112)以經由資料埠快取用於記憶體存取的資料。
圖22是顯示根據一些實施例的圖形處理器指令格式2200的方塊圖。在一或多個實施例中,圖形處理器執行單元支援具有多種格式的指令的指令集。實線框說明通常包含在執行單元指令中的組件,而虛線包括可選的組件或僅包含在指令的子集中的組件。在一些實施例中,所描述及說明的指令格式2200是巨集指令,因為它們是提供給執行單元的指令,而不是由指令解碼產生的微運算。
在一些實施例中,圖形處理器執行單元本地支援128位元格式的指令2210。基於選擇的指令,指令選項及運算元的數量,64位元壓縮指令格式2230可用於某些指令。本地128位格式2210提供對所有指令選項的存取,而一些選項及操作受限於64位元格式2230。以64位元格式2230提供的本地指令因實施例而異。在一些實施例中,部分地使用索引欄位2213中的一組索引值來壓縮指令。執行單元硬體基於索引值參考一組壓縮表,並使用壓縮表輸出以重建128位元格式2210的本地指令。
對於每種格式,指令運算碼2212定義執行單元要執行的運算。執行單元跨每個運算元的多個資料元件平行執行每條指令。例如,回應於加法指令,執行單元在 表示紋理元件或圖片元件的每個顏色通道上執行同時加法運算。預設地,執行單元在運算元的所有資料通道上執行每條指令。在一些實施例中,指令控制欄位2214使得能夠控制某些執行選項,諸如通道選擇(例如預測)及資料通道順序(例如,調配)。對於128位元指令2210,執行大小欄位2216限制將平行執行的資料通道的數量。在一些實施例中,exec大小欄位2216不可用於64位元精簡指令格式2230。
一些執行單元指令具有多達三個運算元,包括兩個源運算元src0 2220、src1 2222及一個目的地2218。在一些實施例中,執行單元支援雙目的地指令,其中隱含目的地之一。資料操作指令可以具有第三源運算元(例如,SRC2 2224),其中指令運算碼2212確定源運算元的數量。指令的最後源運算元可以是與指令一起傳遞的立即(例如,硬編碼)值。
在一些實施例中,128位元指令格式2210包括指定例如是使用直接暫存器定址模式還是間接暫存器定址模式的存取/位址模式資訊2226。當使用直接暫存器定址模式時,一或多個運算元的暫存器位址直接由指令2210中的位元提供。
在一些實施例中,128位元指令格式2210包括存取/位址模式欄位2226,其指定該指令的位址模式及/或存取模式。在一實施例中,用於為該指令定義資料存取對齊的存取模式。一些實施例支援包括16位元組對齊存取 模式及1位元組對齊存取模式的存取模式,其中存取模式的位元組對齊確定指令運算元的存取對齊。例如,當處於第一模式時,指令2210可以針對源運算元及目標運算元使用位元組對齊定址,並且當處於第二模式時,指令2210可以針對所有源運算元及目標運算元使用16位元組對齊定址。
在一實施例中,存取/位址模式欄位2226的位址模式部分確定指令是使用直接還是間接定址。當使用直接暫存器定址模式時,指令2210中的位元直接提供一或多個運算元的暫存器位址。當使用間接暫存器定址模式時,可以根據指令中的位址暫存器值及位址立即數欄位來計算一或多個運算元的暫存器位址。
在一些實施例中,基於運算碼2212位元欄位對指令進行分組以簡化運算碼解碼2240。對於8位元運算碼,位元4、5及6允許執行單元確定運算碼的類型。所示的精確運算碼分組僅僅是一個例子。在一些實施例中,移動及邏輯運算碼組2242包括資料移動及邏輯指令(例如移動(mov),比較(cmp))。在一些實施例中,移動及邏輯組2242共享五個最高有效位元(MSB),其中移動(mov)指令的形式為0000xxxxb,邏輯指令的形式為0001xxxxb。流控制指令組2244(例如,呼叫、跳轉(jmp))包括形式為0010xxxxb(例如,0x20)的指令。雜項指令組2246包括以0011xxxxb(例如,0x30)的形式的包括同步指令(例如,等待、發送)的指令混合。平行數學指令組2248包括0100xxxxb (例如,0x40)形式的分組算術指令(例如,加法、乘法(mul))。平行數學組2248在資料通道上平行執行算術運算。向量數學組2250包括形式為0101xxxxb(例如,0x50)的算術指令(例如,dp4)。向量數學組對向量運算元執行算術運算,例如點乘積計算。
圖形管線
圖23是圖形處理器2300的另一實施例的方塊圖。具有與本文任何其它圖的元件相同的參考標號(或名稱)的圖23的元件可以以與本文其他地方描述的方式相似的任何方式操作或作用,但不侷限於此。
在一些實施例中,圖形處理器2300包括圖形管線2320,媒體管線2330、顯示引擎2340、執行緒執行邏輯2350及渲染呈現輸出管線2370。在一些實施例中,圖形處理器2300是包括一或多個通用處理核心的多核心處理系統內的圖形處理器。圖形處理器透過暫存器寫入到一或多個控制暫存器(未顯示)或經由環狀互連2302發布給圖形處理器2300的命令來控制。在一些實施例中,環狀互連2302將圖形處理器2300耦合到其他處理部件,諸如其他圖形處理器或通用處理器。來自環狀互連2302的命令由命令串流器2303解釋,命令串流器2303向圖形管線2320或媒體管線2330的各個組件提供指令。
在一些實施例中,命令串流器2303引導從記憶體讀取頂點資料並執行由命令串流器2303提供的頂點處 理命令的頂點獲取器2305的操作。在一些實施例中,頂點獲取器2305將頂點資料提供給頂點著色器2307,其對每個頂點執行座標空間變換及照明操作。在一些實施例中,頂點獲取器2305及頂點著色器2307透過經由執行緒排程器2331將執行執行緒分派給執行單元2352A、2352B來執行頂點處理指令。
在一些實施例中,執行單元2352A、2352B是具有用於執行圖形及媒體操作的指令集的向量處理器的陣列。在一些實施例中,執行單元2352A、2352B具有附接的L1快取2351,其專用於每個陣列或在陣列之間共享。快取可以配置為資料快取、指令快取或分區以在不同分區中包含資料及指令的單一快取。
在一些實施例中,圖形管線2320包括曲面細分組件以執行3D物件的硬體加速曲面細分。在一些實施例中,可程式外殼著色器2311配置曲面細分操作。可程式域著色器2317提供曲面細分輸出的後端評估。曲面細分器2313在外殼著色器2311的方向上操作並且包含專用邏輯以基於作為輸入提供給圖形管線2320的粗略幾何模型來產生一組詳細幾何物件。在一些實施例中,如果不使用曲面細分細分,曲面細分組件2311、2313、2317可以被繞過。
在一些實施例中,完整的幾何物件可以由幾何著色器2319經由分派到執行單元2352A、2352B的一或多個執行緒來處理,或者可以直接進行到裁切器2329。在一些實施例中,幾何著色器在整個幾何物件,而不是像在 圖形管線的前一階段那樣的頂點或頂點的補片。如果曲面細分被禁用,則幾何著色器2319從頂點著色器2307接收輸入。在一些實施例中,如果曲面細分單元被禁用,則幾何著色器2319可由幾何著色器程式以執行幾何細分。
在光柵化之前,裁切器2329處理頂點資料。裁切器2329可以是固定功能裁切器或具有削波及幾何著色器功能的可程式裁切器。在一些實施例中,渲染呈現輸出管線2370中的光柵化器2373(例如,深度測試組件)排程像素著色器以將幾何物件轉換為其每像素表示。在一些實施例中,像素著色器邏輯被包括在執行緒執行邏輯2350中。在一些實施例中,應用可以繞過光柵化器2373並且經由流出單元2323存取未光柵化的頂點資料。
圖形處理器2300具有允許資料及訊息在處理器的主要組件之間傳遞的互連匯流排、互連結構或一些其他互連機構。在一些實施例中,執行單元2352A、2352B及關聯的快取2351、紋理及媒體取樣器2354以及紋理/取樣器快取2358經由資料埠2356互連以執行記憶體存取並且與處理器的渲染呈現輸出管線組件進行通訊。在一些實施例中,取樣器2354、快取2351、2358及執行單元2352A、2352B各自具有分離的記憶體存取路徑。
在一些實施例中,渲染呈現輸出管線2370包含將基於頂點的物件轉換成相關聯的基於像素的表示的光柵化器2373。在一些實施例中,光柵器邏輯包括執行固定功能三角形及線光柵化的分窗器(windower)/遮蔽器 (masker)單元。在一些實施例中,相關聯的渲染呈現快取2378及深度快取2379也是可用的。像素操作組件2377對資料執行基於像素的操作,但是在一些情況下,與2D操作相關聯的像素操作(例如,具有混合的位元塊影像傳送)由2D引擎2341執行,或者在顯示時間透過顯示器控制器2343使用重疊顯示平面取代。在一些實施例中,共享L3快取2375可用於所有圖形組件,允許在不使用主系統記憶體的情況下共享資料。
在一些實施例中,圖形處理器媒體管線2330包括媒體引擎2337及視頻前端2334。在一些實施例中,視頻前端2334從命令串流器2303接收管線命令。在一些實施例中,媒體管線2330包括獨立的命令串流器。在一些實施例中,視頻前端2334在將命令發送到媒體引擎2337之前處理媒體命令。在一些實施例中,媒體引擎2337包括執行緒產生功能以產生執行緒以透過執行緒排程器2331分派給執行緒執行邏輯2350。
在一些實施例中,圖形處理器2300包括顯示引擎2340。在一些實施例中,顯示引擎2340在處理器2300的外部並且經由環狀互連2302或一些其他互連匯流排或結構與圖形處理器耦合。在一些實施例中,顯示引擎2340包括2D引擎2341及顯示控制器2343。在一些實施例中,顯示引擎2340包含能夠獨立於3D管線而操作的專用邏輯。在一些實施例中,顯示控制器2343與顯示裝置(未顯示)耦合,該顯示裝置可以是如膝上型電腦中的系統整合顯示裝置, 或者透過顯示裝置連接器附接的外部顯示裝置。
在一些實施例中,圖形管線2320及媒體管線2330可配置為基於多個圖形及媒體程式介面來執行操作,並且不特定於任何一個應用程式介面(API)。在一些實施例中,用於圖形處理器的驅動器軟體將對特定圖形或媒體庫特定的API呼叫轉換成可由圖形處理器處理的命令。在一些實施例中,為來自Khronos Group的開放圖形庫(OpenGL)及開放計算語言(OpenCL),來自微軟公司的Direct3D庫提供支援,或者可以對OpenGL及D3D提供支援。也可以為開源電腦視覺庫(OpenCV)提供支援。如果能夠從未來API的管線到圖形處理器的管線進行映射,則還將支援具有相容3D管線的未來API。
圖形管線編程
圖24A是顯示根據一些實施例的圖形處理器命令格式2400的方塊圖。圖24B是顯示根據一實施例的圖形處理器命令序列2410的方塊圖。圖24A中的實線框顯示通常包括在圖形命令中的組件,而虛線包括可選的組件或僅包含在圖形命令的子集中的組件。圖24A的示例性圖形處理器命令格式2400包括用於識別該命令的目標客戶端2402,命令運算碼(運算碼)2404以及該命令的相關資料2406的資料欄位。子運算碼2405及命令大小2408也包含在一些命令中。
在一些實施例中,客戶端2402指定處理命令 資料的圖形設備的客戶端單元。在一些實施例中,圖形處理器命令解析器檢查每個命令的客戶端欄位以調節命令的進一步處理並將命令資料路由到適當的客戶端單元。在一些實施例中,圖形處理器客戶端單元包括記憶體介面單元、渲染呈現單元、2D單元、3D單元及媒體單元。每個客戶端單元都有一個處理這些命令的對應處理管道。一旦客戶端單元接收到該命令,客戶端單元就讀取運算碼2404及子運算碼2405(如果存在的話)以確定要執行的操作。客戶端單元使用資料欄位2406中的資訊來執行命令。對於一些命令,預期顯式命令大小2408指定命令的大小。在一些實施例中,命令解析器基於命令運算碼自動確定至少一些命令的大小。在一些實施例中,命令經由雙字的多個對齊。
圖24B中的流程圖顯示示例性圖形處理器命令序列2410。在一些實施例中,以圖形處理器的實施例為特徵的資料處理系統的軟體或韌體使用所示的命令序列的版本來設定,執行並終止一組圖形操作。僅出於示例的目的顯示並描述了示例命令序列,因為實施例不侷限於這些特定命令或該命令序列。而且,命令可以作為命令序列中的一批命令發布,使得圖形處理器將至少部分地同時處理命令序列。
在一些實施例中,圖形處理器命令序列2410可以以管線清除命令2412開始,以使任何活動圖形管線完成管線的目前未決命令。在一些實施例中,3D管線2422及 媒體管線2424不同時操作。執行管道清除以使活動圖形管道完成任何未決命令。為了響應管線清除,圖形處理器的命令解析器將暫停命令處理,直到活動繪圖引擎完成未決操作並且相關讀取快取失效。可選地,渲染呈現快取中標記為「髒」的任何資料都可以清除到記憶體。在一些實施例中,管線清除命令2412可以用於管線同步,或者在將圖形處理器置於低功率狀態之前。
在一些實施例中,當命令序列要求圖形處理器在管線之間明確切換時使用管線選擇命令2413。在一些實施例中,在發布管線命令之前,在執行情境中僅需要一次管線選擇命令2413,除非情境要發布兩個管線的命令。在一些實施例中,緊接在經由管線選擇命令2413的管線切換之前需要管線清除命令2412。
在一些實施例中,管線控制命令2414配置用於操作的圖形管線並用於編程3D管線2422及媒體管線2424。在一些實施例中,管線控制命令2414配置有效管線的管線狀態。在一實施例中,管線控制命令2414被用於管線同步並且在處理一批命令之前清除來自活動管線內的一或多個快取記憶體的資料。
在一些實施例中,返回緩衝器狀態命令2416被用於為對應管線配置一組返回緩衝器以寫入資料。某些管線操作需要分配,選擇或配置一或多個返回緩衝區,操作在處理期間將操作寫入中間資料。在一些實施例中,圖形處理器還使用一或多個返回緩衝器來儲存輸出資料並執 行交叉執行緒通訊。在一些實施例中,返回緩衝器狀態2416包括選擇用於一組管線操作的返回緩衝器的大小及數量。
命令序列中的其餘命令基於用於操作的活動管線而不同。基於管線確定2420,命令序列針對3D管線狀態2430開始的3D管線2422或從媒體管線狀態2440開始的媒體管線2424定製(tailored)。
用於3D管線狀態2430的命令包括用於頂點緩衝器狀態、頂點元件狀態、恆定顏色狀態、深度緩衝器狀態以及在處理3D基元命令之前要配置的其他狀態變量的3D狀態設定命令。這些命令的值至少部分地基於正在使用的特定3DAPI來確定。在一些實施例中,3D管線狀態2430命令還能夠選擇性地禁用或繞過某些管線元件,若這些元件將不被使用。
在一些實施例中,3D基元2432命令被用於提交將由3D管線處理的3D基元。透過3D基元2432命令傳遞給圖形處理器的命令及相關參數被轉發到圖形管線中的頂點提取功能。頂點提取函數使用3D基元2432命令資料來產生頂點資料結構。頂點資料結構儲存在一或多個返回緩衝區中。在一些實施例中,3D基元2432命令被用於經由頂點著色器對3D基元執行頂點操作。為了處理頂點著色器,3D管線2422將著色器執行執行緒分派給圖形處理器執行單元。
在一些實施例中,3D管線2422經由執行2434 命令或事件來觸發。在一些實施例中,暫存器寫入觸發命令執行。在一些實施例中,透過命令序列中的「去」或「踢」命令觸發執行。在一實施例中,使用管線同步命令觸發命令執行以透過圖形管線清除命令序列。3D管線將執行3D基元的幾何處理。一旦操作完成,產生的幾何對像被光柵化,並且像素引擎為結果像素著色。用於控制像素著色及像素後端操作的其他命令也可以包含在這些操作中。
在一些實施例中,當執行媒體操作時,圖形處理器命令序列2410跟隨媒體管線2424路徑。通常,媒體管線2424的具體使用及編程方式取決於要執行的媒體或計算操作。在媒體解碼期間,特定的媒體解碼操作可以被卸載到媒體管道。在一些實施例中,媒體管線也可以被繞過,並且可以使用由一或多個通用處理核心提供的資源全部或部分地執行媒體解碼。在一實施例中,媒體管線還包括用於通用圖形處理器單元(GPGPU)操作的元件,其中圖形處理器用於使用與圖形基元的渲染呈現不明確相關的計算著色器程式來執行SIMD向量操作。
在一些實施例中,以與3D管線2422類似的方式配置媒體管線2424。在媒體物件命令2442之前將一組媒體管線狀態命令2440分派或放入命令佇列中。在一些實施例中,媒體管線狀態命令2440包括配置將用於處理媒體物件的媒體管線元件的資料。這包括配置媒體管線內的視頻解碼及視頻編碼邏輯的資料,如編碼或解碼格式。在一些實施例中,媒體管線狀態命令2440還支援使用一或多個指 向包含一批狀態設定的「間接」狀態元件的指標。
在一些實施例中,媒體物件命令2442提供指向媒體物件的指標以供媒體管線處理。媒體物件包括包含要處理的視頻資料的記憶體緩衝區。在一些實施例中,在發布媒體物件命令2442之前,所有媒體管線狀態必須是有效的。一旦管線狀態被配置並且媒體物件命令2442佇列,則媒體管線2424經由執行命令2444或等同的執行事件(例如暫存器寫入)。接著,來自媒體管線2424的輸出可以由3D管線2422或媒體管線2424提供的操作進行後置處理。在一些實施例中,GPGPU操作以與媒體操作類似的方式被配置及執行。
圖形軟體架構
圖25顯示根據一些實施例的用於資料處理系統2500的示例性圖形軟體架構。在一些實施例中,軟體架構包括3D圖形應用2510、作業系統2520及至少一個處理器2530。在一些實施例中,處理器2530包括圖形處理器2532及一或多個通用處理器核心2534。圖形應用程式2510及作業系統2520分別在資料處理系統的系統記憶體2550中執行。
在一些實施例中,3D圖形應用2510包含一或多個著色器程式,其包括著色器指令2512。著色器語言指令可以是高階著色器語言,諸如高階著色器語言(HLSL)或OpenGL著色器語言(GLSL)。該應用程式還包括適用於由 通用處理器核心2534執行的機器語言的可執行指令2514。該應用程式還包括由頂點資料定義的圖形物件2516。
在一些實施例中,作業系統2520是來自微軟公司的微軟Windows作業系統,專有的類UNIX作業系統或者使用Linux核心的變體的開源UNIX類作業系統。當Direct3D API被使用時,作業系統2520使用前端著色編譯器2524來將HLSL中的任何著色器指令2512編譯成較低階著色器語言。編譯可以是即時(JIT)編譯,或者應用程式可以執行著色器預編譯。在一些實施例中,在編譯3D圖形應用程式2510期間將高階著色器編譯成低階著色器。
在一些實施例中,使用者模式圖形驅動程式2526包含後端著色編譯器2527以將著色器指令2512轉換成硬體特定表示。當OpenGL API被使用時,GLSL高階語言的著色器指令2512被傳遞給使用者模式圖形驅動程式2526進行編譯。在一些實施例中,使用者模式圖形驅動程式2526使用作業系統核心模式功能2528來與核心模式圖形驅動程式2529通訊。在一些實施例中,核心模式圖形驅動程式2529與圖形處理器2532通訊以分派命令及指令。
IP核心實作
至少一實施例的一或多個態樣可以透過儲存在代表及/或定義諸如處理器的積體電路內的邏輯的機器可讀媒體上的代表性碼來實作。例如,機器可讀媒體可以包括表示處理器內的各種邏輯的指令。當由機器讀取時, 指令可以使機器製造邏輯以執行本文描述的技術。被稱為「IP核心」的此種表示是用於積體電路的邏輯的可再用單元,其可以作為描述積體電路的結構的硬體模型儲存在有形的機器可讀媒體上。硬體模型可以提供給各種客戶或製造設施,這些客戶或製造設施在製造積體電路的製造機器上載入硬體模型。積體電路可以被製造為使得電路執行結合本文描述的任何實施例描述的操作。
圖26是顯示可用於製造積體電路以執行根據一實施例的操作的IP核心發展系統2600的方塊圖。IP核心發展系統2600可以用於產生模組化的、可重複使用的設計,其可以被結合到更大的設計中或用於構建整個積體電路(例如,SOC積體電路)。設計工具2630可以用高階程式語言(例如,C/C++)產生IP核心設計的軟體模擬2610。軟體模擬2610可用於設計,測試及驗證IP核心的行為。然後可以從模擬模型2600創造或合成暫存器傳輸級(RTL)設計。RTL設計2615是模擬硬體暫存器之間的數位信號流的積體電路行為的抽象化,包括執行的相關邏輯使用建模的數位信號。除了RTL設計2615之外,還可以創造、設計或合成邏輯級或電晶體級的低階設計。因此,初始設計和模擬的具體細節可能會有所不同。
RTL設計2615或等同物可以由設計工具進一步合成為硬體模型2620,硬體模型2620可以是硬體描述語言(HDL)或實體設計資料的一些其他表示。可以進一步模擬或測試HDL以驗證IP核心設計。可以使用非揮發性記憶 體2640(例如,硬碟、快閃記憶體或任何非揮發性儲存媒體)來儲存IP核心設計以便傳送到第三方製造設施2665。或者,IP核心設計可以透過有線連接2650或無線連接2660傳輸(例如,經由網際網路)。製造設施2665然後可以製造至少部分地基於IP核心設計的積體電路。所製造的積體電路可以被配置用以執行根據本文描述的至少一實施例的操作。
圖27是顯示根據實施例之可以使用一或多個IP核心製造的示例性單晶片積體電路2700的方塊圖。示例性積體電路包括一或多個應用處理器2705(例如,CPU),至少一個圖形處理器2710,並且可以另外包括影像處理器2715及/或視頻處理器2720,其中的任何一者可以是來自相同或多個不同的設計設施的模組IP核心。積體電路包括周邊或匯流排邏輯,包括USB控制器2725、UART控制器2730、SPI/SDIO控制器2735及I2S/I2C控制器2740。另外,積體電路可以包括顯示裝置2745,其耦合到一或多個高解析度多媒體介面(HDMI)控制器2750及行動工業處理器介面(MIPI)顯示介面2755。儲存可以由包括快閃記憶體及快閃記憶體控制器的快閃記憶體子系統2760所提供。記憶體介面可以經由記憶體控制器2765提供以存取SDRAM或SRAM記憶體設備。一些積體電路還包括嵌入式安全引擎2770。
另外,積體電路2700的處理器中可以包括其他邏輯及電路,包括附加圖形處理器/核心、周邊介面控 制器或通用處理器核心。
有利的是,上述系統、處理器、圖形處理器、設備及/或方法中的任何一者可以與本文描述的各種實施例(例如,其一部分)中的任一個整合或配置,包括例如在以下附加註釋及示例。
附加註釋及示例
示例1可包括電子處理系統,該電子處理系統包含應用處理器,通訊地耦合到應用處理器的永久儲存媒體以及通訊地耦合到應用處理器的圖形子系統,其中圖形子系統包括第一圖形引擎,以處理圖形工作量以及第二圖形引擎,以從第一圖形引擎卸載至少一部分圖形工作量。
示例2可包括示例1的系統,其中,第二圖形引擎包括低精度計算引擎。
示例3可包括示例1至2中的任何示例的系統,還包括用於容納第二圖形引擎的穿戴式裝置。
示例4可包括圖形設備,其包含用於處理圖形工作量的第一圖形引擎以及用於從第一圖形引擎卸載至少一部分圖形工作量的第二圖形引擎。
示例5可包括示例4的設備,其中第二圖形引擎包括低精度計算引擎。
示例6可包括示例5的設備,其中,低精度計算引擎執行時間扭曲、空間扭曲及機器學習中的至少一 者。
示例7可包括示例6的設備,還包括用於第二圖形引擎的第二情境,其獨立於第一圖形引擎的第一情境。
示例8可包括示例4的設備,還包括用於容納第二圖形引擎的穿戴式設備。
示例9可包括示例8的設備,其中,第二圖形引擎進一步將渲染呈現工作從第一圖形引擎卸載。
示例10可包括示例10的設備,其中,穿戴式顯示器包括頭戴式顯示器,並且其中第二圖形引擎還用於將來自第一圖形引擎的中間渲染呈現的作品卸載。
示例11可包括處理圖形工作量的方法,包括使用第一圖形引擎處理圖形工作量,以及將圖形工作量的至少一部分從第一圖形引擎卸載到第二圖形引擎。
示例12可包括示例11的方法,還包括為第二圖形引擎提供低精度計算引擎。
示例13可包括示例12的方法,還包括利用低精度計算引擎執行時間扭曲,空間扭曲及機器學習中的至少一個。
示例14可包括示例13的方法,還包括為第二圖形引擎提供獨立於第一圖形引擎的第一情境的第二情境。
示例15可包括示例11的方法,還包括提供可穿裝置以容納第二圖形引擎。
示例16可包括示例15的方法,還包括將渲染呈現工作從第一圖形引擎卸載到第二圖形引擎。
示例17可包括示例16的方法,還包括提供頭戴式顯示器以容納第二圖形引擎,以及將來自第一圖形引擎的注視點渲染工作卸載到第二圖形引擎。
示例18可包括至少一電腦可讀媒體,該至少一電腦可讀媒體包括一組指令,該指令在由計算設備執行時使該計算設備使用第一圖形引擎處理圖形工作量,並且卸載至少一部分該圖形工作量從第一個圖形引擎到第二個圖形引擎。
示例19可包括示例18的至少一電腦可讀媒體,該至少一電腦可讀媒體包括另一組指令,該指令在由計算設備執行時使計算設備為第二圖形引擎提供低精度計算引擎。
示例20可包括示例19的至少一電腦可讀媒體,其包括另一組指令,該指令在由計算設備執行時使計算設備執行時間扭曲、空間扭曲及機器中的至少一個學習低精度計算引擎。
示例21可包括示例20的至少一電腦可讀媒體,該至少一個電腦可讀媒體包括另一組指令,該指令在由計算設備執行時使所述計算設備為該第二圖形引擎提供獨立於第一圖形引擎的第一情境。
示例22可包括示例18的至少一電腦可讀媒體,其包括另一組指令,該指令在由計算設備執行時使計 算設備提供穿戴式設備以容納第二圖形引擎。
示例23可包括示例22的至少一電腦可讀媒體,其包括另一組指令,該指令在由計算設備執行時使計算設備將渲染呈現工作從第一圖形引擎卸載到第二圖形引擎。
示例24可包括示例23的至少一電腦可讀媒體,其包括另一組指令,該指令在由計算設備執行時使計算設備提供頭戴式顯示器以容納第二圖形引擎,以及從第一圖形引擎卸載注視點渲染工作到第二圖形引擎。
示例25可包括圖形裝置,該圖形裝置包括用於利用第一圖形引擎處理圖形工作量的裝置以及用於將圖形工作量的至少一部分從第一圖形引擎卸載到第二圖形引擎的裝置。
示例26可包括示例25的裝置,還包括用於為第二圖形引擎提供低精度計算引擎的裝置。
示例27可包括示例26的裝置,還包括用於利用低精度計算引擎執行時間扭曲、空間扭曲及機器學習中的至少一者的裝置。
示例28可包括示例27的裝置,還包括用於為第二圖形引擎提供獨立於第一圖形引擎的第一情境的第二情境的裝置。
示例29可包括示例25的裝置,還包括用於提供穿戴式設備以容納第二圖形引擎的裝置。
示例30可包括示例29的裝置,還包括用於將 渲染呈現工作從第一圖形引擎卸載到第二圖形引擎的裝置。
示例31可包括示例30的裝置,還包括用於提供頭戴式顯示器以容納第二圖形引擎的裝置以及用於從第一圖形引擎向第二圖形引擎卸載注視點渲染呈現工作的裝置。
實施例適用於所有類型的半導體積體電路(「IC」)晶片。這些IC晶片的例子包括但不侷限於處理器、控制器、晶片組組件、可程式邏輯陣列(PLA)、記憶體晶片、網路晶片、系統單晶片(SoC)、SSD/NAND控制器ASIC等。另外,在一些圖式中,信號導線用線表示。一些可以是不同的,以指示更多組成信號路徑、具有數字標籤、指示多個組成信號路徑、及/或在一或多個末端具有箭頭以指示主要資訊流方向。然而,此不應以限制的方式來解釋。反而是,可以結合一或多個示例性實施例來使用此種額外細節以促進對電路的更容易的理解。任何被代表的信號線,無論是否具有額外資訊,實際上可以包括可以在多個方向上行進的一或多個信號,並且可以用任何合適類型的信號方案來實作,例如用差分對實作的數位或類比線路、光纖線及/或單端線。
可能已經給予示例尺寸/模型/值/範圍,但是實施例不侷限於此。隨著製造技術(例如光刻)隨著時間推移而成熟,預計可以製造更小尺寸的裝置。另外,為了說明及討論的簡單性,並且為了不模糊實施例的某些態樣, 可以或不可以在圖式中顯示對IC晶片及其他組件的周知電源/接地連接。此外,為了避免混淆實施例,並且鑑於關於此種方塊圖配置的實作的細節高度依賴於實施例要在其中實作的平台的事實,可以以方塊圖形式顯示配置,亦即,此類細節應該在本領域技術人士的範圍內。在闡述具體細節(例如,電路)以便描述示例實施例的情況下,對於本領域技術人士來說顯而易見的是,可以在沒有這些具體細節或者具有這些具體細節的變體的情況下實踐實施例。因此本說明書被視為是說明性的而非限制性的。
術語「耦合」在本文中可用於指代所討論的組件之間的任何類型的直接或間接關係,並且可應用於電氣、機械、流體、光學、電磁、機電或其他連接。另外,除非另外指出,否則術語「第一」、「第二」等在此可以僅用於便於討論,並且不帶有特定的時間或時間順序的重要性。此外,應理解的是,不定冠詞「一」或「一個」具有「一或多個」或「至少一個」的含義。
如在本申請案及申請專利範圍中所使用的,透過術語「一或多個」連接的項目列表可以表示所列術語的任何組合。例如,片語「A、B或C中的一或多個」可以表示A、B、C;A及B;A及C;B及C;或A、B及C。
以上參考具體實施例描述了實施例。然而,熟於此技藝之人士將理解,可以對其進行各種修改及改變而不脫離如所附申請專利範圍中闡述的實施例的更寬泛的精神及範圍。因此,前面的說明及圖式被認為是說明性的 而非限制性的。
100‧‧‧計算系統
101‧‧‧處理子系統
102‧‧‧處理器
104‧‧‧系統記憶體
105‧‧‧記憶體集線器
106‧‧‧通訊鏈路
107‧‧‧I/O集線器
108‧‧‧輸入裝置
110A‧‧‧顯示裝置
110B‧‧‧顯示裝置
111‧‧‧I/O子系統
112‧‧‧平行處理器
113‧‧‧通訊鏈路
114‧‧‧系統儲存單元
116‧‧‧I/O開關
118‧‧‧網路轉接器
119‧‧‧無線網路轉接器
120‧‧‧附加裝置

Claims (24)

  1. 一種第一圖形處理單元,用以處理圖形工作量,該單元包含:電路,至少部分實作於一或多可組態邏輯或固定功能邏輯硬體中,該電路用以處理圖形工作量,其中為了要處理該圖形工作量,該電路用以:從第二圖形處理單元獲得演色資訊,接收眼睛追蹤資料,以及根據該眼睛追蹤資料並透過基於從該第二圖形處理單元接收的該演色資訊之時間扭曲操作或基於從該第二圖形處理單元接收的該演色資訊之空間扭曲操作之一或多者產生訊框,其中該時間扭曲操作是再投影操作以及該空間扭曲操作是訊框速率提升轉換操作。
  2. 如申請專利範圍第1項之第一圖形處理單元,其中為了要處理該圖形工作量,該電路執行去雜訊操作。
  3. 如申請專利範圍第1項之第一圖形處理單元,其中該第一圖形處理單元附接到頭戴式顯示器。
  4. 如申請專利範圍第1項之第一圖形處理單元,其中該第一圖形處理單元之處理功率低於該第二圖形處理單元。
  5. 如申請專利範圍第1項之第一圖形處理單元,其中該第一圖形處理單元是用以基於追蹤頭部動作執行該圖形工作量之畸變操作。
  6. 如申請專利範圍第1項之第一圖形處理單元,其中該演色資訊包括照明資訊。
  7. 一種頭戴式顯示器(HMD),其包括:顯示器,用以呈現訊框;無線模組,用以與第二圖形處理單元通訊;一或多相機或追蹤模組,用以偵測眼睛追蹤資料;以及第一圖形處理單元,用以處理圖形工作量,其中為了要處理該圖形工作量,該第一圖形處理單元用以:從該第二圖形處理單元獲得演色資訊,接收該眼睛追蹤資料,以及根據該眼睛追蹤資料並透過基於從該第二圖形處理單元接收的該演色資訊之時間扭曲操作或基於從該第二圖形處理單元接收的該演色資訊之空間扭曲操作之一或多者產生該訊框,其中該時間扭曲操作是再投影操作以及該空間扭曲操作是訊框速率提升轉換操作。
  8. 如申請專利範圍第7項之頭戴式顯示器(HMD),其中為了要處理該圖形工作量,該第一圖形處理單元執行去雜 訊操作。
  9. 如申請專利範圍第7項之頭戴式顯示器(HMD),其中該第一圖形處理單元之處理功率低於該第二圖形處理單元。
  10. 如申請專利範圍第7項之頭戴式顯示器(HMD),其中該第一圖形處理單元是用以基於追蹤頭部動作執行該圖形工作量之畸變操作。
  11. 如申請專利範圍第7項之頭戴式顯示器(HMD),其中該演色資訊包括照明資訊。
  12. 一種非暫態電腦可讀儲存媒體,其包含一組指令,該等指令當被計算裝置執行時,致使該計算裝置用以:處理圖形工作量,其中為了要處理該圖形工作量,該計算裝置用以:利用第一圖形處理單元,以從第二圖形處理單元獲得演色資訊,利用該第一圖形處理單元,接收眼睛追蹤資料,以及利用該第一圖形處理單元,根據該眼睛追蹤資料並透過基於從該第二圖形處理單元接收的該演色資訊之時間扭曲操作或基於從該第二圖形處理單元接收的該演色資訊之空間扭曲操作之一或多者產生訊框,其中該時間扭曲操作 是再投影操作以及該空間扭曲操作是訊框速率提升轉換操作。
  13. 如申請專利範圍第12項之非暫態電腦可讀儲存媒體,其進一步包含一組指令,該等指令當被該計算裝置執行時,致使該計算裝置用以:利用該第一圖形處理單元,執行去雜訊操作以處理該圖形工作量。
  14. 如申請專利範圍第12項之非暫態電腦可讀儲存媒體,其中該第一圖形處理單元附接到頭戴式顯示器。
  15. 如申請專利範圍第12項之非暫態電腦可讀儲存媒體,其中該第一圖形處理單元之處理功率低於該第二圖形處理單元。
  16. 如申請專利範圍第12項之非暫態電腦可讀儲存媒體,其進一步包含一組指令,該等指令當被該計算裝置執行時,致使該計算裝置用以:利用該第一圖形處理單元,基於追蹤頭部動作執行該圖形工作量之畸變操作。
  17. 如申請專利範圍第12項之非暫態電腦可讀儲存媒體,其中該演色資訊包括照明資訊。
  18. 一種第一圖形處理單元,用以處理圖形工作量,該單元包含:用於從第二圖形處理單元獲得演色資訊之機構;用於接收眼睛追蹤資料之機構;以及用於根據該眼睛追蹤資料並透過基於從該第二圖形處理單元接收的該演色資訊之時間扭曲操作或基於從該第二圖形處理單元接收的該演色資訊之空間扭曲操作之一或多者產生訊框之機構,其中該時間扭曲操作是再投影操作以及該空間扭曲操作是訊框速率提升轉換操作。
  19. 如申請專利範圍第18項之第一圖形處理單元,進一步包含用於執行該圖形工作量的去雜訊操作之機構。
  20. 如申請專利範圍第18項之第一圖形處理單元,其中該第一圖形處理單元附接到頭戴式顯示器。
  21. 如申請專利範圍第18項之第一圖形處理單元,其中該第一圖形處理單元之處理功率低於該第二圖形處理單元。
  22. 如申請專利範圍第18項之第一圖形處理單元,進一步包含用於基於追蹤頭部動作執行該圖形工作量的畸變操作之機構。
  23. 如申請專利範圍第18項之第一圖形處理單元,其中該演色資訊包括照明資訊。
  24. 一種第一圖形處理單元,用以處理圖形工作量,該單元包含:電路,至少部分實作於一或多可組態邏輯或固定功能邏輯硬體中,該電路用以處理圖形工作量,其中為了要處理該圖形工作量,該電路用以:產生演色資訊;以及將該演色資訊傳輸到第二圖形處理單元,其中該第一圖形處理單元向該第二圖形處理單元提供該圖形工作量之訊框產生操作,以根據該眼睛追蹤資料並透過基於從該第一圖形處理單元接收的該演色資訊之時間扭曲操作或基於從該第一圖形處理單元接收的該演色資訊之空間扭曲操作之一或多者產生訊框,其中該時間扭曲操作是再投影操作以及該空間扭曲操作是訊框速率提升轉換操作。
TW108129308A 2017-04-17 2018-02-21 具有額外情境的圖形系統 TWI706380B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/489,139 US10467796B2 (en) 2017-04-17 2017-04-17 Graphics system with additional context
US15/489,139 2017-04-17

Publications (2)

Publication Number Publication Date
TW201946031A TW201946031A (zh) 2019-12-01
TWI706380B true TWI706380B (zh) 2020-10-01

Family

ID=62017278

Family Applications (3)

Application Number Title Priority Date Filing Date
TW108112374A TWI787494B (zh) 2017-04-17 2018-02-21 具有額外情境的圖形系統與包含用於執行注視點渲染呈現的命令的電腦可讀儲存媒體
TW107105742A TWI783972B (zh) 2017-04-17 2018-02-21 具有額外情境的圖形系統
TW108129308A TWI706380B (zh) 2017-04-17 2018-02-21 具有額外情境的圖形系統

Family Applications Before (2)

Application Number Title Priority Date Filing Date
TW108112374A TWI787494B (zh) 2017-04-17 2018-02-21 具有額外情境的圖形系統與包含用於執行注視點渲染呈現的命令的電腦可讀儲存媒體
TW107105742A TWI783972B (zh) 2017-04-17 2018-02-21 具有額外情境的圖形系統

Country Status (4)

Country Link
US (4) US10467796B2 (zh)
EP (3) EP3392769A1 (zh)
CN (4) CN117971461A (zh)
TW (3) TWI787494B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201713051D0 (en) * 2017-08-15 2017-09-27 Imagination Tech Ltd Low latency distortion unit for head mounted displays
US10861215B2 (en) * 2018-04-30 2020-12-08 Qualcomm Incorporated Asynchronous time and space warp with determination of region of interest
US11182949B2 (en) * 2019-07-25 2021-11-23 Dreamworks Animation Llc Pack tile
US20210192681A1 (en) * 2019-12-18 2021-06-24 Ati Technologies Ulc Frame reprojection for virtual reality and augmented reality
GB2595696B (en) 2020-06-04 2022-12-28 Envisics Ltd Forming a hologram of a target image for projection using data streaming
US11367242B2 (en) * 2020-07-30 2022-06-21 Apple Inc. Ray intersect circuitry with parallel ray testing
US11373360B2 (en) 2020-07-30 2022-06-28 Apple Inc. Grouping techniques for ray intersection traversal
TWI759194B (zh) * 2021-05-03 2022-03-21 廣達電腦股份有限公司 車用電子系統及其控制方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120081396A1 (en) * 2010-10-01 2012-04-05 Imerj LLC Extended graphics context with common compositing
TW201337536A (zh) * 2011-11-30 2013-09-16 Intel Corp 降低用於三維工作負載之電力功能
TW201531998A (zh) * 2013-12-19 2015-08-16 Intel Corp 動態圖形幾何預處理頻率標度縮放及效能增益之預測技術
TW201704931A (zh) * 2015-06-04 2017-02-01 英特爾股份有限公司 繪圖處理器電源管理情境及順序控制迴路
TW201706956A (zh) * 2015-06-12 2017-02-16 英特爾股份有限公司 有助於進行高效圖形命令產生及用於改善在計算裝置中圖形效能的執行

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3603737B2 (ja) * 2000-03-30 2004-12-22 日本電気株式会社 移動体追尾方法及びその装置
US7079132B2 (en) * 2001-08-16 2006-07-18 Siemens Corporate Reseach Inc. System and method for three-dimensional (3D) reconstruction from ultrasound images
US7928997B2 (en) * 2003-02-06 2011-04-19 Nvidia Corporation Digital image compositing using a programmable graphics processor
US7418606B2 (en) 2003-09-18 2008-08-26 Nvidia Corporation High quality and high performance three-dimensional graphics architecture for portable handheld devices
US7446773B1 (en) 2004-12-14 2008-11-04 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors with integrated scheduler
US7475167B2 (en) * 2005-04-15 2009-01-06 Intel Corporation Offloading data path functions
TWI366151B (en) * 2005-10-14 2012-06-11 Via Tech Inc Multiple graphics processor system and methods
US20080122843A1 (en) * 2006-07-20 2008-05-29 Via Technologies, Inc. Multi-thread vertex shader, graphics processing unit and flow control method
US8582805B2 (en) 2007-11-05 2013-11-12 California Institute Of Technology Synthetic foveal imaging technology
US9307165B2 (en) * 2008-08-08 2016-04-05 Qualcomm Technologies, Inc. In-camera panorama image stitching assistance
US8599202B1 (en) 2008-09-29 2013-12-03 Nvidia Corporation Computing tessellation coordinates using dedicated hardware
US8209597B2 (en) * 2009-03-23 2012-06-26 Cognitive Electronics, Inc. System and method for achieving improved accuracy from efficient computer architectures
US20100321395A1 (en) * 2009-06-18 2010-12-23 Apple Inc. Display simulation system and method
US8294714B1 (en) 2009-06-26 2012-10-23 Nvidia Corporation Accelerated rendering with temporally interleaved details
US9142057B2 (en) * 2009-09-03 2015-09-22 Advanced Micro Devices, Inc. Processing unit with a plurality of shader engines
US8624891B2 (en) * 2011-01-17 2014-01-07 Disney Enterprises, Inc. Iterative reprojection of images
US8605205B2 (en) * 2011-08-15 2013-12-10 Microsoft Corporation Display as lighting for photos or video
US8941655B2 (en) 2011-09-07 2015-01-27 Qualcomm Incorporated Memory copy engine for graphics processing
US10275680B2 (en) * 2011-10-19 2019-04-30 Tel Hashomer Medical Research Infrastructure And Services Ltd. Magnetic resonance maps for analyzing tissue
WO2013126784A2 (en) * 2012-02-23 2013-08-29 Huston Charles D System and method for creating an environment and for sharing a location based experience in an environment
US9557565B2 (en) 2012-07-02 2017-01-31 Nvidia Corporation Near-eye optical deconvolution displays
US9841537B2 (en) 2012-07-02 2017-12-12 Nvidia Corporation Near-eye microlens array displays
US20140028679A1 (en) * 2012-07-30 2014-01-30 Nvidia Corporation Render-assisted compression for remote graphics
US9165399B2 (en) 2012-11-01 2015-10-20 Nvidia Corporation System, method, and computer program product for inputting modified coverage data into a pixel shader
US9241146B2 (en) 2012-11-02 2016-01-19 Nvidia Corporation Interleaved approach to depth-image-based rendering of stereoscopic images
US9264749B2 (en) * 2012-12-13 2016-02-16 Microsoft Technology Licensing, Llc Server GPU assistance for mobile GPU applications
US9489763B2 (en) 2012-12-18 2016-11-08 Nvidia Corporation Techniques for setting up and executing draw calls
US8884906B2 (en) * 2012-12-21 2014-11-11 Intel Corporation Offloading touch processing to a graphics processor
US9760966B2 (en) * 2013-01-08 2017-09-12 Nvidia Corporation Parallel processor with integrated correlation and convolution engine
US9454843B2 (en) 2013-02-05 2016-09-27 Nvidia Corporation Modulated and blended anti-aliasing
US9727991B2 (en) * 2013-03-01 2017-08-08 Microsoft Technology Licensing, Llc Foveated image rendering
US9947084B2 (en) 2013-03-08 2018-04-17 Nvidia Corporation Multiresolution consistent rasterization
US9633469B2 (en) 2013-03-15 2017-04-25 Nvidia Corporation Conservative rasterization of primitives using an error term
US9262797B2 (en) 2013-03-15 2016-02-16 Nvidia Corporation Multi-sample surface processing using one sample
US9342857B2 (en) 2013-03-29 2016-05-17 Nvidia Corporation Techniques for locally modifying draw calls
US10713838B2 (en) 2013-05-03 2020-07-14 Nvidia Corporation Image illumination rendering system and method
US9129443B2 (en) 2013-05-21 2015-09-08 Nvidia Corporation Cache-efficient processor and method of rendering indirect illumination using interleaving and sub-image blur
US9710894B2 (en) 2013-06-04 2017-07-18 Nvidia Corporation System and method for enhanced multi-sample anti-aliasing
US9177413B2 (en) 2013-06-26 2015-11-03 Nvidia Corporation Unique primitive identifier generation
US9232210B2 (en) 2013-07-08 2016-01-05 Nvidia Corporation Mapping sub-portions of three-dimensional (3D) video data to be rendered on a display unit within a comfortable range of perception of a user thereof
US9355483B2 (en) 2013-07-19 2016-05-31 Nvidia Corporation Variable fragment shading with surface recasting
US10269090B2 (en) 2013-08-16 2019-04-23 Nvidia Corporation Rendering to multi-resolution hierarchies
US20150130915A1 (en) 2013-11-08 2015-05-14 Nvidia Corporation Apparatus and system for dynamic adjustment of depth for stereoscopic video content
US9437040B2 (en) 2013-11-15 2016-09-06 Nvidia Corporation System, method, and computer program product for implementing anti-aliasing operations using a programmable sample pattern table
US20150138065A1 (en) 2013-11-21 2015-05-21 Nvidia Corporation Head-mounted integrated interface
US9552667B2 (en) 2013-12-13 2017-01-24 Nvidia Corporation Adaptive shading in a graphics processing pipeline
US10733794B2 (en) 2013-12-13 2020-08-04 Nvidia Corporation. Adaptive shading in a graphics processing pipeline
US9569885B2 (en) 2014-01-02 2017-02-14 Nvidia Corporation Technique for pre-computing ambient obscurance
US20150194128A1 (en) 2014-01-07 2015-07-09 Nvidia Corporation Generating a low-latency transparency effect
US10135896B1 (en) * 2014-02-24 2018-11-20 Amazon Technologies, Inc. Systems and methods providing metadata for media streaming
US10264211B2 (en) 2014-03-14 2019-04-16 Comcast Cable Communications, Llc Adaptive resolution in software applications based on dynamic eye tracking
US9547931B2 (en) 2014-05-05 2017-01-17 Nvidia Corporation System, method, and computer program product for pre-filtered anti-aliasing with deferred shading
US9747718B2 (en) 2014-08-12 2017-08-29 Nvidia Corporation System, method, and computer program product for performing object-space shading
US9754407B2 (en) 2014-08-12 2017-09-05 Nvidia Corporation System, method, and computer program product for shading using a dynamic object-space grid
KR102255143B1 (ko) * 2014-09-02 2021-05-25 삼성전자주식회사 벤디드 디스플레이를 구비한 휴대 단말기의 제어 방법 및 장치
US10096086B2 (en) 2014-09-10 2018-10-09 Nvidia Corporation Enhanced anti-aliasing by varying sample patterns spatially and/or temporally
US10147203B2 (en) 2014-09-10 2018-12-04 Nvidia Corporation Enhanced anti-aliasing by varying sample patterns spatially and/or temporally
US20160238852A1 (en) * 2015-02-13 2016-08-18 Castar, Inc. Head mounted display performing post render processing
US10163180B2 (en) * 2015-04-29 2018-12-25 Qualcomm Incorporated Adaptive memory address scanning based on surface format for graphics processing
US10282806B2 (en) * 2016-04-20 2019-05-07 Mediatek, Inc. Graphics Accelerator
US9832451B2 (en) * 2015-11-17 2017-11-28 Survios, Inc. Methods for reduced-bandwidth wireless 3D video transmission
US11010956B2 (en) * 2015-12-09 2021-05-18 Imagination Technologies Limited Foveated rendering
US10210593B2 (en) * 2016-01-28 2019-02-19 Qualcomm Incorporated Adaptive context switching
US10310266B2 (en) * 2016-02-10 2019-06-04 Advanced Micro Devices, Inc. Method and system for streaming information in wireless virtual reality
US10438400B2 (en) * 2016-03-08 2019-10-08 Nvidia Corporation Perceptually-based foveated rendering using a contrast-enhancing filter
CN113568170A (zh) * 2016-03-15 2021-10-29 奇跃公司 虚拟图像生成系统及其操作方法
US10471353B2 (en) 2016-06-30 2019-11-12 Sony Interactive Entertainment America Llc Using HMD camera touch button to render images of a user captured during game play
CN106527713B (zh) * 2016-11-07 2019-11-08 金陵科技学院 Vr的三维数据渲染系统及其方法
US10026145B2 (en) * 2016-12-13 2018-07-17 Qualcomm Incorporated Resource sharing on shader processor of GPU
CN106658170A (zh) * 2016-12-20 2017-05-10 福州瑞芯微电子股份有限公司 一种降低虚拟现实延迟的方法和装置
US10650303B2 (en) * 2017-02-14 2020-05-12 Google Llc Implementing neural networks in fixed point arithmetic computing systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120081396A1 (en) * 2010-10-01 2012-04-05 Imerj LLC Extended graphics context with common compositing
TW201337536A (zh) * 2011-11-30 2013-09-16 Intel Corp 降低用於三維工作負載之電力功能
TW201531998A (zh) * 2013-12-19 2015-08-16 Intel Corp 動態圖形幾何預處理頻率標度縮放及效能增益之預測技術
TW201704931A (zh) * 2015-06-04 2017-02-01 英特爾股份有限公司 繪圖處理器電源管理情境及順序控制迴路
TW201706956A (zh) * 2015-06-12 2017-02-16 英特爾股份有限公司 有助於進行高效圖形命令產生及用於改善在計算裝置中圖形效能的執行

Also Published As

Publication number Publication date
EP3657333A1 (en) 2020-05-27
TWI783972B (zh) 2022-11-21
TW201926246A (zh) 2019-07-01
EP3611621A1 (en) 2020-02-19
TW201839719A (zh) 2018-11-01
CN110634097A (zh) 2019-12-31
US11954783B2 (en) 2024-04-09
CN110764897A (zh) 2020-02-07
US20220270317A1 (en) 2022-08-25
EP3392769A1 (en) 2018-10-24
CN108734633A (zh) 2018-11-02
US11217004B2 (en) 2022-01-04
CN117971461A (zh) 2024-05-03
TW201946031A (zh) 2019-12-01
US20180300934A1 (en) 2018-10-18
US10467796B2 (en) 2019-11-05
CN110634097B (zh) 2024-02-23
TWI787494B (zh) 2022-12-21
US20180300932A1 (en) 2018-10-18
US20190180494A1 (en) 2019-06-13
CN110764897B (zh) 2024-01-19

Similar Documents

Publication Publication Date Title
US20240163631A1 (en) Augmented reality virtual reality ray tracing sensory enhancement system, apparatus and method
TWI706380B (zh) 具有額外情境的圖形系統
US11182296B2 (en) Memory-based dependency tracking and cache pre-fetch hardware for multi-resolution shading
US11574386B2 (en) Display engine surface blending and adaptive texel to pixel ratio sample rate system, apparatus and method
US10242496B2 (en) Adaptive sub-patches system, apparatus and method
US11461959B2 (en) Positional only shading pipeline (POSH) geometry data processing with coarse Z buffer
US11663774B2 (en) Anti-aliasing adaptive shader with pixel tile coverage raster rule system, apparatus and method
US12008674B2 (en) Adaptive smart grid-client device computation distribution with grid guide optimization
US11605197B2 (en) Multi-sample stereo renderer