TWI344795B - Decoding of context adaptive variable length codes in computational core of programmable graphics processing unit - Google Patents

Decoding of context adaptive variable length codes in computational core of programmable graphics processing unit Download PDF

Info

Publication number
TWI344795B
TWI344795B TW96120899A TW96120899A TWI344795B TW I344795 B TWI344795 B TW I344795B TW 96120899 A TW96120899 A TW 96120899A TW 96120899 A TW96120899 A TW 96120899A TW I344795 B TWI344795 B TW I344795B
Authority
TW
Taiwan
Prior art keywords
cavlc
information
level
unit
shader
Prior art date
Application number
TW96120899A
Other languages
English (en)
Other versions
TW200803526A (en
Inventor
Zahid Hussain
Duc Huy Bui
Original Assignee
Via Tech Inc
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 Via Tech Inc filed Critical Via Tech Inc
Publication of TW200803526A publication Critical patent/TW200803526A/zh
Application granted granted Critical
Publication of TWI344795B publication Critical patent/TWI344795B/zh

Links

Description

九、發明說明: 【發明所屬之技術領域】 本發明係有關於資料處理系統,尤指可程式之圖形處 理系統及方法。 【先前技術】 电月自增圖乃是以電腦產生圖像、影像或其他圖形或e 像資訊之一門藝術和科學,目前的繪圖系統多包含數個1 面’例如微軟的Direct3D介面及〇penGL等等,如此可;5 執仃特定作業系統(如微軟的WINDOWS)的電腦上控奇 諸如圖形加速器或圖形處理單元㈣师以pr〇(Jin u「二的多媒體硬體’圖像、影像之產生常蝴 速G行rdenng)」,此類操作的細節一般是由圖形力 迓态進仃,於三維(3D)電腦緣 (或物體)之幾何形狀經轉變為物件表s 存於畫峡純(frame buffw)+,接.二0後’ η 上,每-個物件或物件群都右愈主接者顯不於顯示裝置 性質’例如材質 義成物件或物件群的描繪内容(C〇nte^里等等,這些可以定 電腦__迎合消費者 控制性及特色的重口味要求,if其他多媒體產品的 以及改善處理迷度及耗能,現已發二更== 1344795 較少的位元數產生較佳影像的品質 ’例如H,264標準(又 稱為iso動晝專家群組MPEG_4第十部)是一種高壓縮數 位視訊編碼標準,與MPEG_2相容之編碼相比,H 264相 谷之編碼僅需要差不多三分之一的位元數,即可健存同樣 視頻ασ質的視讯,η.264標準提供兩種熵(entropy)解碼程 序77別疋内谷適應性二進位算術編碼(context-adaptive binary arithmetic coding,CABAC)以及内容適應性可變長 度編碼(context-adaptive variable length coding,CAVLC), CAVLC是一種霍夫曼(Huffman)編碼的内容適應性變化, 根據編碼資料的總類會改變每一個編碼符號的機率, CAVLC使用運作一層級(run-level)編碼以簡潔表達零字 串,使用這種方法發出一些高頻+/_1係數並於相鄰圖塊的 非零係數連結,CAVLC中,將適應性編碼位於或低於切片 (slice)層的4 X 4轉換的DC係數之第二Hadamard轉換), 目前CAVLC解碼結構可滿足消費者的部分需求,但是在 設計上仍有其限制。 【發明内容】 本發明揭露一種内容適應性可變長度編碼 (context-adaptive variable length coding,CABAC)之解碼系 統及方法(之後間稱為解碼系統)’運用於圖形處理單^ (graphics processing unit,GPU)内之多執行緒(mu丨tithread) 平行計算核心,簡單地說,於一實施例中,本系統包含一 6 :體::式核心處理單元’其内具有一 CAVLC單元以執 者色leader) ’該著色器可以執行視訊流的cavlc 解馬’並提供-解碼資料輸出。 CAVI^實施㈣包括下列步驟:將著色器載入具有 早元之可程式核心處理單元,CAVLC執行該著舍 器以解碼-視訊流,並提供-解碼資料輸出 熟習本技藝人士於檢視以下圖式及詳細說明之後,杏 可推々出其他系統、方法、特徵及優點,所有此等推演的 系統方’纟、特^:及優點均屬本發明之範圍 請專利範圍之保護。 附申 實施方式】 本發明揭示了多種内容適應性可變長度編碼 (context-adaptive variable length coding,CAVLC)之解碼系 統及方法(之後將通稱為解碼系統),於一實施例中,解碼 系統係内嵌於圖形處理單元(graphics pr〇cessing unit,Gpu) 的可程式、多執行緒、平行計算核心之一個或多個執行單 元中,利用軟體結合硬體之方式來達成解碼功能,亦即視 afl解碼疋以圖形處理單元編程(pr〇graniming)的内容 (context)配合施行於圖形處理單元資料路徑内的硬體所完 成,舉個例子,解碼運算或方法係由具有擴充指令= (extended instruction set)的著色器(shader,如頂點著色 器)、圖形處理單元的執行單元資料路徑、以及用於cAVLc 1344795 處理環境中的自動管理位元流緩衝器之附加硬體所共同完 成,不像已知的舊有系統,僅具有單純硬體或單純軟體之 CAVLC處理方法’限制了實施彈性,舉個例子,純數位訊 號處理器(digital signal processor,DSP)或微處理器基礎實 施方式便沒有用於符號解碼及位元流管理之硬體。 另外’自動位元流緩衝器具備一些優點,例如,一旦 位元流緩衝器的直接記憶體存取(direct mem〇ry aeeess, DMA)引擎得知位元流的位置(位址),便會自動管理位元 流而不需要進一步的指令,這樣的機制就跟傳統的微處理 器系統不同,位元流管理不再代表了大量的間接費用,再 則,透過記錄已使用的位元數量,位元流緩衝器機制可以 偵測和處理錯誤的位元流。 本案解碼系統的另一個優點是可以減少指令延遲 (latency)’因為CAVLC解碼是非常連續的動作,不易利用 多執行緒,因此在各種實施例中就會使用一種轉遞機制來 減少等待延遲,例如暫存器轉遞(代8以61^〇1^3油吨),進一 步解釋’便是深管(deep_pipeiine)及多執行緒處理器無法以 同一執行緒在每一週期執行指令,有些系統利用一般轉遞 (general f0rwarding),是藉由檢查前次產生的運算元 (^perand)位址以及指令運算元位址(如果相㈤則使用前 次產生運箅元),此種一般轉遞需要複雜的比較及多工動 作二,某些解碼系統實施例中,會使用不同的轉遞方式, 不官,利料:欠計算結果(如㈣在内部暫存H)還是來 源運算元的資料,均利用指令中的位元(例如總共2位元, 1344795 每一運算元使用1位元)來編碼,藉由這種方式,可以減 少整體的延遲,改善處理器管線的效率。 這裡描述的解碼系統可以利用已知的國際電信聯盟通 。凡 4示準。p 門(international Telecommunication Union
Telecommunication Standardization Sector,ITU-T) H.264 標 準’根據執行從圖形處理單元畫面緩衝器記憶體或主處理 器(如中央處理單元(central processing unit,cpu))記憶 體所接收到的一個或多個指令組(如藉由預載入(prd〇ad) 等已知機制或是快取失敗等),多種解碼系統實施例即可進 行運算。 第一圖係圖形處理器系統1〇〇實施例之方塊圖,其中 介紹了解碼系統及方法,於某些實施方式中,圖形處理器 系統100可為電腦系統,其中,圖形處理器系統1〇〇可包 含由顯示介面單元(display interface unit,DIU) 104驅動的 顯示裝置102以及區域記憶體1〇6 (可包含顯示緩衝器、 畫面緩衝器、紋理緩衝器 '命令緩衝器等等),區域記憶體 106可以畫面緩衝器或儲存單元取代,區域記憶體1〇6透 過一個或多個記憶體介面單元(memory interface unit, MlU)l 10連接至圖形處理單元(graphics processing unit, GPU)114 ’於一實施例中,記憶體介面單元110、圖形處理 單元114、顯示介面單元104三者連接至高速週邊組件互 連(peripheral component interconnect express’ PCI-E)相容之 匯流排介面單元(bus interface unit,BIU)118,於一實施例 中’匯流排介面單元118可以使用圖形位址重繪表(graphics
9 1344795
address remapping table ’ GART) ’當然也可使用其他記憶 體緣圖機制’圖形處理單元114包含解碼系統200,稍後 會針對此部分作進一步的說明,雖然於某些實施例中將圖 形處理單元元114内的解碼系統200畫成一個元件,但是 解碼系統200其實可以包含更多圖形處理器系統丨〇〇的繪 示或未繪示元件。 匯流排介面單元118連接至晶片組122 (如北橋晶片 組)或開關’晶片組122包含介面電路(interface electronics),以增強攸#央處理單元(cen的丨
unit,CPU)126 (又稱主處理器)接收到的訊號,並分離從 系統記憶體124進出的信號與從輸出入(1/〇)裝置進出的訊 號,雖然這裡提到PCI-E匯流排協定,不過也可使用其他 的連接及/或通财式來溝通域理器與圖形處理單元 114 (如PCI、專用南速匯流排等),系統記憶體124還包 含驅動軟體128 ’可利財央處理單元126將指令組或命 令傳送給圖形處理單元114内的暫存器。 在某些實施例中可再另外配置圖形處理單元,利用 PCI-E匯流排狀或其_賴定經由晶片組122連接至 第一圖的其他猶,於—實施例中,_處理單^ 100可 以包含卜_所有元件,當然亦可剔除、新增或改變某 些元件’例如,可另外增加連接至晶片組122的南橋晶片、 用 ^ ^ Τηη 丨、处垤環境之方塊圖,其中應 解碼系統200,圖形步κ , 升處理早兀U4包含一圖形處理器 10 1344795
=二:t理益2〇2广包含多個執行單元(execution uit, EU)和什异核心、204 (即軟體可程式核心處理單於一 實施例中,計算核心2〇4包含内嵌於執行單元資料路徑 (execuuo讀it data path,卿P)的解碼系統2〇〇(即C狐C 單幻,該資料路徑分配至一個或多個執行單元,圖形處理 f 2〇2還包含執行單元集合控制及頂點/串流快取記憶體 早το 206 (以後稱為EU集合控制單元2〇6)以及具有固定 功能邏輯(例如,包含三角形設定單元(_咖set%滅, TSU)、栅格-圖塊產生器(span_tile gener伽r,等)的 緣圖管線208,計算核心204包含聯合的多個執行單元, 以符合不同著色器程式的著色器任務之計算要求,所述著
色器程式可包含頂點著色器、幾何著色器、及/或像素著 色器,使繪圖管線208能處理資料,計算核心2〇4的著色 器能進行解碼系統200的大部分功能,下面將詳細說明圖 形處理器202的實施例,接著說明解碼系統2〇〇的細節。 解碼系統可以硬體、軟體、韌體或其組合等方式實施, 於較佳實施例中,解碼系統2〇〇可包含硬體或軟體,利用 下列已知技術或其組合,例如:具有邏輯閘而可對資料信 號進行邏輯功能的離散邏輯電路、具有適當組合邏輯閘的 特殊應用集成電路(application specific integrated circuit, ASIC )、可程式化閘極陣列(pr〇grammabie gate array ? PGA )、场式可程式化閘極陣列(fieid programmable gate array,FPGA)等等元件。
請參考第三圖及第四圖,其為圖形處理器202實施例 ·: S 1344795 一 選擇元件之方塊圖,如前所述,解碼系統200可以是圖形 入 4理11 2G2⑽著色ϋ ’另外加上擴充指令組及其他硬體 .- Α件’以下將說明圖形處理ϋ 202及對應程序之實施例, 雖然第二圖與第四圖並未繪出圖形處理所㈣的全部元 件’但疋已足以令熟悉此技藝者明瞭相關圖形處理器的功 能及架構。請參閱第三圖,可程式處理環境的中心為計算 核、2〇4 ’其包含解碼系統2〇〇,並可處理各種指令,計算 Φ h u 204可以執行或映射多種著色器程式,如頂點、幾何、 像ί著色益程式等,多執行緒處理器的計算核心204可以 在單一時脈週期内處理多個指令。 於第一圖中’圖幵;處理器2〇2的相關元件包含計算核 Ί〇4紋理過渡單元302、像素打包元件304、命令流處 ‘ 理器306、寫回單元3〇8、以及紋理位址產生器31〇,第三 • ®中的EU集合控制單元206也包含頂點快取記憶體及/ ^串流快取記憶體,另外,第三圖的紋理過渡單元302提 • =紋素(teXel)資料給計算核心204 (輸入A及B ),於某些 貫施例中,紋素資料為512位元資料。 像素打包树綱提供像素器著色輸人(ps輸入,輸 〇 C和D)給計算核^綱,輸人同樣是512位元資料格 =另外,像素打包元件304肖邱集合控制單元鳥請 =象素著色ϋ任務,而EU集合控制單元施便會提供指 早元號碼_)及執行緒號碼(執行简給像素打包 =綱’因為像素打包讀3〇4及紋理過慮單元逝是 已知的技術,這裡便不再贅述,雖然第三圖顯示像素及紋
12 1344795
素封包為512位元之資料封包,但是可依各實施例根據圖 形處理器202所需的效能改變其大小。 命令流處理器306提供三角形頂點索引給EU集合控 制單元206,於第三圖的實施例中,索引為256位元之資 料,EU集合控制單元206組合從串流快取記憶體接收到的 頂點著色器輸入,並將這些資料送至計算核心204 (輸入 E),Εϋ集合控制單元2〇6亦組合幾何著色器輸入,並將 廷些資料送至計算核心204 (輸入F) ; EU集合控制單元 206另外控制執行單元輸入(EU輸入)4〇2及執行單元輸出 (EU輸出)404 (第四圖),換句話說,EU集合控制單元2〇6 控制计算核心204的各輸入流與輸出流。
經過處理之後’計算核心2〇4提供像素著色器輸出(ps 輸出二輸出J1與J2)給寫回單元3〇8,像素著色器輪出包 括色彩資訊’例如紅/W透明度(RGBA)資訊,關於 實施^中的資料結構,像素著色器輸出可以是兩條512位 疋之資料流’其他實施财可使用其他的位元寬度。 除了像素著色雜出’計算核^⑽亦會輸出紋理座 π (TC,輸出κι及K2)給紋理位址產生器31〇,其中包 括UVRQ資訊’紋理位址產生器3ι〇向計算核心撕的 2快取記憶體顿發出紋理描述符號請求(τ#請求,輸入 hi後計异核心綱的L2快取記憶體會輸出紋理 =付號資料(戰料,輸出w)給紋理位址產生器31〇, 因此::位址1生器310及寫回單元308是已知的技術, w不再贅述,再則,雖然晝中顯示URVQ& 13 S· 1344795 是512位元之資料,但是此參數亦可隨不同實施例而做變 化,於第三圖的實施例中,匯流排分成兩條512位元通道, 同時傳輸4個像素的128位元RGBA色彩值及128位元 UVRQ紋理座標。 繪圖管線208包含固定功能之圖形處理功能,例如, 因應從驅動軟體發出之繪製一三角形的命令,頂點資訊通 過計算核心204内的頂點著色器邏輯元件以進行頂點轉 換,物件將從物件空間種換成工作空間及螢幕空間的三角 形,三角形通過計算核心204到達繪圖管線2〇8的三角形 設定單元,結合圖元後進行已知的任務,例如產生邊界盒 (bounding box)、楝選(culling)、產生邊緣功能(edge functi〇n generation)及三角形層級剔除(triang丨e ieve丨珣㈣⑽等,接 著二角形設定單元再將資料傳遞至繪圖管線2〇8中具有圖 塊產生功能的柵格及圖塊產生單元,因此,資料物件被分 割成圖塊(例如8x8、16x16等)’並且傳遞至其他的固定功 能單元,進行深度(z-值)處理,例如z_值之高階(同樣 的程序在高階時使用的位元數比低階少)剔除,然後將 值傳回計算核心204的像素著色器邏輯元件,以根據所得 紋理及官線資料進行像素著色器功能,計算核心2〇4將已 處理之值輸出至位於繪圖管線2〇8内之目標單元,目標單 凡在各快取記憶體將更新内部值之前進行α測試及模板測 試。 凊注意計异核心204的L2快取記憶體408以及EU集 合控制單兀206之間有512位元的頂點快取記憶體溢出
14 1344795 (spin)資料的傳輸(輸入G),另外 個512位元頂點快取記憶體(vc^d。204輪出兩 給即集合控制單元2〇6做進一步的處輪出⑷及奶) 請參閱第㈣,其顯示計算核 關元件,計算核心204包含且右—❾其他元件及相 420a〜佩(以後通稱執 4、^或多個執行單元 每-個執行單元—在—個二’ 令’因此’執行單元集合412在尖^期内處理多個指 時處理多個執行緒,德其笙 以同時或幾乎同 丁地夕㈣仃緒’儘官第四圖僅 … (腳〜EU7 ),但是並不表示限制其數,: 例可以增加或減少數量,其中 彳[时粑 ΛΟΠ \ S -ir ^ 個執仃早兀(例如£U0 a /、有一解碼系統2〇〇,詳細說明如下。 計算核心204亦包含記憶體存取單元⑽贿y =,祖卿6 ’記憶體存取單元傷藉由記憶體介面仲 裁益410與L2快取記憶體4〇8連接,L2快取記憶體權 從EU集合控制單元2〇6接收頂點快取記憶體溢出資料(輸 入〇),並提供頂點快取記憶體溢出資料(輸出H)給EU 集合控制單元206,另外’ L2快取記憶體4〇8從紋理位址 產生器310接收紋理描述符號請求(T#請求,輸入X),並 因應接收到的該請求,提供紋理描述符號資料(τ#資料, 輸出W)給紋理位址產生器31〇。 記憶體介面仲裁器410提供了區域視訊記憶體(如晝 面緩衝器或區域記憶體106)的控制介面,匯流排介面單 元118則提供了系統的介面,其可為pcI_E匯流排,記憶 15 和匯流排介面單元118做為記憶體及L2 的;T於某些實施例中,口快取記 彻以及匯流排=Λ單71條與記憶體介面仲裁器 舍把從I?他」 8連接,記憶體存取單元406
Μ鳇;^、取記憶體顿及其他區祕_虛擬記情體 位址轉換成實際記憶體位址。 W 广街r己面仲裁器410提供L2快取記憶體的記伊體 = ===== 溢出、頂職取⑽内容溢出 =算=心綱還包含執行單元輸入⑽輸入⑽和 人===(EU輪出)4〇4 ’分別用於提供執行單元集 :^的輸W及接收執行單元集合412的輸出,執行單 =二4〇2和執行單元輸出404可以是交換開關(crossbar) 或匯流排;/妓魏已㈣㈣_。 著辛t單^輸入4〇2從EU集合控制單元2G6接收頂點 後St輸入E)以及幾何著色器輸入(輸入F),然 ί將Μ提供給執行單元集合化,讓各執行單元働去 另外’執行單元輸入4〇2接收像素著色器輸入(輸 1 5批一及文素封包(輸人Α及Β),並將這些封包傳 ^執行單元集合412,讓各執行單元去處理;再者, ^丁早端入402從U快取記憶體.接收資訊(L2讀 ,★然後在必要時將這些資訊提供給執行單元集合犯。 第四圖實施例的執行單元輸出彻會分成偶輸出4_ S > 16 1344795 出_’執行單元輸出4G4和執行單元輸入402 - ㈣關或匯流排,或是其他已知的_,執行單 兀偶輸出4〇4a處理偶執行單元4施、做、微、 =出’域行單科如侧處料齡料傷、 二撕、概的輸出,總而言之,兩個執行單元輸出 二和,共同接收執行單元集合412的輸出如爾q GBA資枓’這些輸出可傳回L2快取記憶體顿 ^十鼻核心204經由WJ2輸出至寫回單元細或是經 由K1及K2輸出至紋理位址產生器31〇。 執行單元集合412的執行單元流通常包含數個層級, t描緣内容層級、執行緒或任務層級、指令或執行層級, :任-時間點,每:執行單元42〇可能准許兩個描繪内 谷’其中湘-位7C旗標或其他機制朗其姆内容 屬於這_容的任務開始之前,從即集合控制單元高 輸出内容貧訊’内容層級f訊可為著色器種類、輸 出暫存器數量、指令起始位址、輸出對映表、頂點識別符: 緩衝器内的常^執^單元集合412内的每一 行早兀420可以同4儲存多品.·-執行例如.32— =)’於-實施例中,每—執行緒根據程式計數器提取一 EU集合控制單元206類似總任務排程,利用資料驅動 (data-driven)方法(如輸入訊號内的頂點、像素、幾何 指,執行單it 42〇内的適當執行緒,舉例來說,邱集合控 制單元施指派-個執行緒給執行單元集合412的執行^
17 1344795 元420内的一個空執行緒位置,當一執行緒已開始執行, 頂點快取§己憶體或其他元件或模組(根據著色器種類)所 輸入的資料會放置在共用暫存緩衝器中。 通常圖形處理器202使用可程式頂點、幾何 緩衝器’不再把這些元件當成具衫同設計及指令組的各 別固定魏單元而各職行或操作這些元件,而是取 ㈣合的執行單元伽、42%·.·4施配合統—指令組執 仃除了執仃單70 420a(這個執行單元包含解碼系統獅, ,此八有額外的功能)之外,每—_於程式運算的執行 420之②計與結構均相同’於—實施例中,每-個執 =單= 420可以進行多執行緒運算,當頂點著色器、 者色器、像素著色器等產生不同的著色器任務 至個別的執行單元42。去執行,於-= 解馬系,,4 2GG可使用—頂點著色器,與其他執行單元 同’例如,執行衫伽使用—解碼系統_, k疋八他執=早疋(如第四圖之4鳥)所沒有的,因為解 碼系統200官理一個或多個對應的内部緩 夺 細係藉由接㈣域行w自記憶=單先 元406取得資料。 ^早 當生成了個別的任務,EU集合控制單元鳥會指派這 ==執行單元的可用執行緒,當完成任務, 集制早(206再管理相關執行緒的釋放,就這一點 而言,EU集合控制單元规負責指派 二: 色器及像料色器的任務給執行的執行緒= S. 1344795 記錄相_任務及執行緒,具體來說,e 爾巧有執行單元·的執行緒及記憶體的 裡不夕做說明),Eu集合控制單元2〇6會知道'、绝 Γ:Γ::個任務使用、知道哪-個執行緒的: ㈣心、佔用多少的共用暫存器檔案記憶體暫存写 二,二=?派給一個執行單元,如 :“禮將i部的制暫存器财記憶體減去每 :、 、,者用掉的暫存器槽案機體(f00tpring)數量 執仃 =色器、*何著色n及像素著色器的狀態而定Ύ貝點 ^固者色器階段可以有不同的機體大小,例如,頂 =行緒可以要求H)個共用暫存器檔案暫存器,而像: 色器執行緒可以僅要求5個暫存器。 ”
行單成其被指派㈣,運行該執行緒的執 华便會發出一訊號給EU集合控制單元,EU 206便會更新資源表,標註該執行緒未使 :將執订緒共用暫存器檔案空間的數量加回可用空 :’备所S的執行畴處妹射或所 芯t都已分配完(或是保留的暫存器空社Γ= =、',内額外的執行緒),則該執行單元420算是已滿即 5 Hr#再指㈣的執㈣給魏行單元。、 母一個執厅早元420内部亦有一個執行緒控制器,可
19 (S 1344795 以管理或標註每一個執行緒是在使用中(或執行中)或是
及緩衝器508及共用暫存器檔案5料接之執行單元資料 路徑(EU datapath,即加⑸2、執行單元資料路徑先進先 出緩衝器(first in first out ’ FIF〇)5l4、述部暫存器槽案 (Ρ— 脱’ PRF)516、純量暫存器權案(sc-
可用的,就這一點而言,於一實施例中,當頂點著色器正 執行解碼系統200的功能時,EU集合控制單元2〇6可以防 止幾何著色器與像素著色器在此同時運行。 第五A圖說明具有前述圖形處理器202及計算核心 204特徵的執行單元420a,其包含内嵌有解碼系統2〇〇 執行單元資料路徑512,具體來說,第五A圖是一執行單 元420a的方塊圖,於一實施例中,其包含指令快取記憶體 控制器504、與指令快取記憶體控制器5〇4連接的執行緒 控制器506、緩衝器508 (如常數緩衝器)、共用暫存器檔 案(common register flle ’ CRF)51〇、與執行緒控制器 °5〇田6 咖咖,SRF)518、資料輸出控制器52〇以及執行緒任 務介面524 ’如前所述,執行單元從執行單元輸入術 接收輸入,然後提供輸出給執行單元輪出4〇4。 執行緒控制器撕提供整個執行單元伽的控制功 能^括管理每-個執行緒及判斷功能,例如決定如何執 =執行緒,助P512包含解碼系統·,可進行各種的 計异’包含像是浮點運算計算邏輯單元㈣hmetic logic unit ’ ALU)、移位邏輯功能等邏輯電路。 資料輸出控制器520可將完成之資料移至某些與執行
20 單元輸出404連接之开株,办p 頂點快取記情集合㈣單元206的 靜击二Γ 早70 308等等’腑512傳送「任 次二」貝讯給資料輸出控制器520,告知任務已士成 ==2。包含吻分謂存完成= 520從儲另包含_個寫人埠’資料輸出控制器 定的暫=:Γ擇:務’接著根據著色器描繪内容所指 資出所有的輪出 ,、、俊將貝枓达至執行單元輸出404。 別符給IiTiH面ί24輸出執行單元42〇a完成之任務識 控制單元2〇6 11早70 206 ’任務識別符會通知EU集合 新的任務給該有執行緒資源’可指派 每塊, 使用一運I —盥 平向里《數的位置,著色器 —常數緩衝器位置,其令,索 數的暫二或接近32位元不具正負號的整數常 面方塊己憶體控制器504是執行緒控制器506的介 提取可執行著ίΐ'Γ緒控制器讀取請求(如從指令記憶體 榡幾表r去色),指令快取記憶體控制器504會杳找 子進行擊中勤 取言己憶於指令快取記憶體控制器504的快 取記恃體Ιο"轉中’如果所欲請求的指令將從u快 匕體姻或記憶體1G6提取則表示不t,如果擊中, 21 1344795 而同時沒有從執行單元輸入402發出的請求,則指令快取 έ己憶體控制器504即可同意請求,這是因為指令快取記憶 體控制器504的指令快取記憶體只有一個讀寫埠,而執行 單元輸入402具有最高之優先權;相反地,如果不中,而 L2快取記憶體408内有可取代的區塊並有空間存在EUDp FIFO 514 ’則指令快取記憶體控制器504可同意請求。於 一實施例中,指令快取記憶體控制器5〇4的快取記憶體包 含3 2組,每一組有4個區塊,每一個區塊帶有2位元狀態 訊號,可代表三種狀態,分別是無效、載人、或有效狀態, 在區塊载人L2資料之前,區塊是「無效」狀態,料候 L2資料時’是「載入」狀態,當完全载入L2資料時,則 成為「有效」狀態。 、
透過。EUDP路徑犯可對述部暫存器檔㈣6進行讀 寫’執行單元輸人4〇2做為進人資料與執行單元的介 面,於-實施例中,執行單元輸入4〇2包含一 8項目 先出緩衝器以緩衝進人資料,執行單⑽人術亦可將資 ==令快T憶,制器5〇4的指令快取記憶體及常 、·益508,執仃κ輸人搬也可保留著色器内容。 送至出广4做為將輸出資料從執行單元_ 單元30^1早疋2〇6、L2快取記憶體4〇8、及寫回 一4項’於—實施例中,執行單元輸出姻包含 含多種功:: 6的資料,執行單元輸出彻包 月匕’ °以仲裁指令快取記憶體讀取請求、資料輸
22 1344795 • 出寫入請求、EUDP讀/寫請求。 , 制暫存器㈣M0用於儲存輸入、輸出、以及暫存 .· 倾’於—實關中’共用暫存器檔案51〇包含8記憶頁 (ban_ 128 X 128位林存器檔案及—讀一寫和一讀寫 槔’一讀一寫谭係供EUDp 512使用,用於指令執行啟動 的讀寫存取’偶執行緒共享記憶頁〇、2、*、6,奇執行緒 . 貝1J共早"己憶頁1、3、1、7,執行緒控制器506配對不同執 4丁緒的指令,亚確認共用暫存器檔案的記憶體沒有讀或寫 • 記憶頁衝突。 讀寫槔則供執行單元輸入4〇2及資料輸出控制器52〇 ㈣,以載人初始執行緒輸入資料以及將最終執行緒輸出 寫至EU集合控制單元資料緩衝器及u快取記憶體4〇8或 . 其他模組,執行單元輪入402及執行單元輸出4〇4共享一 讀寫1/04,於—實施例中,寫人比讀出具有更高的優先 • 權,512位元輸入資料進入4個不同的記憶頁,以避免將 資料載入共用暫存器檔案510時發生衝突,2位元通道索 引、資料與512位元對齊基準位址(aligned base address)— 起通過以指定輸入資料的開始記憶頁,舉個例子,如果開 始通道索引為1’則記憶頁丨載入從最低有效位元(least significant bit ’ LSB)起算的第一個128位元,下一個128 位元則載入記憶頁2,以此類推,假設執行緒基準記憶頁 補償為〇,最後一個128位元則載入記憶頁〇,請注意執行 緒ID的兩個最低有效位元用於產生一記憶頁補償,以隨機 排列每一個執行緒的開始記憶頁位置。 23 1 1344795 CRF暫存器索引及執行緒id可用於建立一獨—無二 的邏輯位址’以標籤配對(tag matching)共用暫存器槽案 510的項寫資料’舉個例子,位址可以排成128位元,就 跟共用暫存器擋案記憶頁的寬度一樣,藉由結合8位元的 CRF暫存器索引以及5位元的執行緒ID,可以建立獨—無 二的13位元位址,每一個1〇24位元行有一個標籤,每一 行則有兩個512位元項目(字元),每一字元儲存於4個記 憶頁中,並將CRF索引的兩個最低有效位元加入目前執行 緒的έ己憶頁補償,以建立記憶頁選擇。 ,標籤配對方法可讓不同執行緒的暫存器共享共用暫存 益樓案510 ’有效利用記憶體,EU集合控制單元206記錄 共用暫存ϋ職5丨〇的記憶體使隸度,確㈣程執行單 兀420a的新任務時有足夠的空間。 檢查目前執行緒的目標CRF索引佔全部CRF暫存器 的大在執行緒控制器郷著手進行執行緒及著色器執
:之二’輸入資料就應該存放於共用暫存器檔案510中, 緒執行結束,賴輸出控制器52()從共用暫存器樓 茶51〇碩取輪出資料。 行單元之實施例具有内含解碼系統的 勺人第五_說明一 EUDP512之實施例,eudP512 =敫^,案526、多工器528、向量浮點(FP)單元532、 ^器邏輯單元(ALU)534、特殊目的單元说、多 2〇〇包含540、以及解碼系統2〇0,解碼系統 個或多個CAVLC單元530,可以解碼一個或多
24 1344795 個串流,舉個例子,單一 CAVLC單元530可以解竭單— 串流’兩個CAVLC單元530 (如虛線所示,但為簡潔之故 未繪出其連接關係)可以同時解碼兩個串流等等,為了、、支 楚說明,之後的敘述僅針對使用單一 CAVLC單元530的 解碼系統200之操作,其原則可推衍至超過一個 單元。 別间r/7不 一 ^解碼單元 530、向量浮點單元532、向量ALU 534、特殊目的單元说 的-些平行㈣路徑’每—個單元均可根據接收到的指八 執行對應的運算’暫存器檔案526接收運算元(: SRC1及SRC2),於—實施例中,暫存器權案526 ;= 五A圖所不之共用暫存職㈣G、述部暫存器檔案 及/或純量暫存輯案518,請注意於某些實施例中,亦 可使用更多的運算元運算(魏)賴線M 开、 530〜536接收運算訊號的手段’目前訊號線⑽連^^
的二指令解叫 月t* ) Λ卩虎、以及目前却缺次丨丨 徑(可以包含寫回階段)末端的多工 選二二料路 的輸出結果’送至暫存器樓案,輸出暫;=f 包含-目標元件’可以是暫存器槽案526 2 = 凊注意,於-實_中,當來源及目存裔, 件,指令的位元具有來源及目標元件c 來自/达至適當暫存器檔案的資料。 /、夕工态處理
25 1344795 ::匕’執盯早“加可以視為一多階管 = 解碼運算於; ^生布要延遲好讓CAVLC解碼執
與某些實施例中,解碼系統利 伽同時解碼兩個位元流’舉個例子’根據—個匕= 解碼糸統可以使用兩個資料路徑(如新增另—C m〇i同時進行兩個串流的解碼’當然也可解碼較多 串流(那麼就會使用較多或較少的資料路徑),办 =到夕個串流,某些解碼系統·並不限制同時解碼了 ,夕卜在某些實施例中,單—c胤^元53(^= 多重同時串流解碼。 執仃 雨個實把例中,當解碼系統細使用兩個資料路徑、 =行緒便可以同時運行’舉個例子,在兩
匕例中,限制執行緒的數量為_,第—執行緒(如^ 、,者〇 )指派給解碼系統2〇〇力第—記憶頁(即CAVL =),第二執行緒(如執行緒υ則指派給解碼系統二 :弟二記憶頁(即第五Β圖的虛線啊單元 : 實施例中,兩個❹個執行緒可以運行於單—記憶頁^ 外’雖然此處顯示解碼系統咖是内嵌於EUDp 512,亦= 包含其他的元件,像是EU集合控制單元内的邏輯電 26 1344795 路。 現已s兒明執行早το 420a、EUDP 512、以及CAVLC單 元530的某些實施例,下面簡單解釋用於h.264 CAVLC運 算内谷的解碼系統’已知CAVLC程序編碼與巨圖塊 (macroblock)或部分巨圖塊有關的信號之層級(levd,大 小)’知道這個層級有多常(如多少週期)重複(run,運作), 就不需要對母一位元進行編碼,從位元流緩衝器獲得並解 析(parse)此類資訊,當解碼系統200的解碼引擎使用了緩 衝器内的資訊’則資料會再補充進去,解碼系統2〇〇從位 元流抽出内含層級(level)及運作(run)係數的巨圖塊資訊, 反轉編碼程序,然後重建訊號。解碼系統2〇〇從位元流緩 衝器獲得巨圖塊資訊並解析串流,以獲得層級及運作係數 值’暫時儲存於層級陣列及運作陣列,接著讀出這些層級 陣列及運作陣列(如巨圖塊内之區塊的4 χ 4區塊像素), 然後清空層級陣列及運作陣列準備進行下一個區塊,根據 H.264標準,使用軟體處理每一個4X4區塊可以建立完整 的巨圖塊。 已說明解碼巨圖塊資訊的一般運算,下列敘述提出於 CAVLC解碼程序的内容中之解碼系統2〇〇的各種元件,可 將付合實際應用的各種變形列入考慮,熟悉此技藝者可知 下列所使用的許多術語(如各參數的名稱)是出自H.264 規格’為了簡潔之故不再贅述,除非是有助於暸解所述的 不同程序及/或元件,才會再做進一步之說明。 第六A圖至第六c圖是說明解碼系統200之方塊圖,
27 1344795 其中繪出之解碼系統200具有單一 CAVLC單元530(於第 六A圖至第六C圖’所使用之CAVLC單元530可與解碼 系統200互換)’因此於實施例中,解碼系統200可解媽單 一位元流’同樣的原則可應用至具有多個CAVLC單元的 解碼系統200,可同時解碼多個(如兩個)串流。簡單地 說,第六A圖是CAVLC單元530的選擇元件,第六B圖 則5兒明CAVLC單元提供的串流緩衝器功能,第六c圖說 明CAVLC單元530的内容記憶體(包含暫存器)功能, 第六D圖說明CAVLC解碼的表單結構。雖然下列敘述是 有關巨圖塊解碼的内容,但是此原則可應用至各種圖塊解 碼0 請參閱第六A圖,CAVLC單元530包含數個硬體模 組’有係數符記(coeff—token)模組610、層級碼 (CAVLC_LevelCode)模組 612、層級(CAVLC_Level)模組 614、層級 0(CAVLC_L0)模組 616、零層級(CAVLC ZL)模 組618、運作(CAVLC一Run)模組62〇、層級陣列 (LevelAiray)622、以及運作陣列(RunArray)624,解碼系統 還包含移位暫存器(SREG)-串流緩衝器/直接記憶體存取 (DMA)引擎602 (亦見於第六B圖,之後稱為DMA引擎 模組)、總暫存器606、區域暫存器608、以及第六c圖中 的巨圖塊相鄰内容(mbNeighCtx)記憶體604 (於一實施例 中,mbNeighCtx記憶體包含96位元暫存器,可以是著色 器寫入的3個32位元暫存器),另外有些暫存器未繪出。 CAVLC單元530與執行單元42〇a的介面包括一個或 28 1344795
多個目標騎排域應的㈣ϋ (如DST暫存ϋ)、兩個 來源匯流排及對應的暫存@…兩個 L从次制 飞仔益〔SRC1、SRC2),目標匯流排 上的—貝枓可以直接朗接(如經由中間快取球體 器^緩邮、綠憶體)傳送至圖形處理單元m内部或 4的視nfl處理單it,目標匯流排上的資料可以是微軟的 DX API格式或其他格式,這些資料包含係數、巨圖塊參
數、動作資訊、及//或IPCM取樣或是其他資料,CAVLC
單兀530還包括由位址匯流排和資料匯流排組成的記憶體 介面’從位難流排得到位址後,便可以藉由從資料匯流 排得到的資·行位元流#_存取,於—實施例中,資 料匯流排上的資料可以包括未加密視訊流,其中包括各種 訊號參數及其他資料與格式,於某些實施财,可以使用 載入一儲存操作來存取位元流資料。
在開始說明CAVLC單元530的各元件之前,簡單說 明一下有關CAVLC解碼的執行單元42〇a之整個操作,通 常,根據切片(slice)形式,驅動軟體128 (第一圖)準備 CAVLC著色器並將其載入執行單元42〇a,該cavlc著色 态使用標準指令組加上coeff_token、CAVLC Leve丨Code、 CAVLC_Leve卜 CAVLC—LO、CAVLC—ZL、及 CAVLC Run 指令,可以進行位元流之解碼,這裡命名的原則是各模組 會發出相同名稱的指令,另外,在層級陣列622及運作陣 列624還有跟讀取操作及清除操作有關的 READ—LEVEL RUN 及 CLR LEVEL一RUN 指令,於—實 施例中,在發出其他指令之前,CAVLC著色器執行的第一
29 1344795 指令是INIT_CAVLC及INIT一ADE指令,這兩個指令使 CAVLC單元530開始CAVLC解碼一位元流,並將位元流 從串流解碼點開始載入FIFO緩衝器,稍後將說明這兩個 指令’因此CAVLC單元530提供了解析位元流、初始化 解碼硬體及暫存器/記憶體結構、以及層級—運作 (level-run)解碼,所述H.264 CAVAC解碼程序功能將於稍 後解釋,先從位元流緩衝器的操作開始。 關於解析位元流’從記憶體介面的資料匯流排接收位 元流,然後由SREG串流緩衝器/DMA引擎618進行緩 衝’切片資料解析階段提供位元流解碼,位元流(如NAL 位元流)包括一張或多張圖片,將其切割成圖檔頭(header) 及許多切片(slice),一張切片通常包含一系列的巨圖塊,於 一實施例中,外部程序(即CAVLC單元53〇外部)解析 NAL位元流、解碼切片檔頭、傳送指向該切片資料(如切 片開始處)的指標,通常,驅動軟體128從切片資料處理 位元流,因為這是應用程式及API提供的功能,指向切片 資料位置的指標傳遞還牽涉到切片資料的第一位元組位址 (如RBSPbyeAddress )和指出位元流開始或標頭位置(如 sREGptr)的位元補償指標(如一個位元或多個位元),位 元流的初始化將於稍後解釋,於某些實施例中,可以利用 主處理器(如第-圖的中央處理單^ 126)處理外部程序, 以提供圖片解碼及切片標頭解碼,與某些實施例中,因為 解碼系統2GG從圖片進行Η·264位元流解析,而 解碼操作^:轉㈣㈣從塊著手進行,於某些實施 30 例中’因為CAVLC單it的可程式特性,可以於任何階段 進行解碼。
吻參閱第六B圖,其為CAVLC單元53〇的SREG串 流緩衝器/DMA引擎602的選擇元件部分及其他元件之 方塊圖’其包含運算元暫存器661及⑹,分別接收srci 與SRC2值,再傳遞至暫存器656及667,CAVLC邏輯電 路660就是第六A圖的模組及元件,不過沒有包括SREG 串机緩衝器/DMA引擎602、mbNeighCtx記憶體604、總 暫存器606、以及區域暫存器6〇8,SREG串流緩衝器/ D=A引擎618包含内部位元流緩衝器,於一實施例 中:為BigEndian格式之32位元暫存器及8個128位元暫 存器驅動軟體128發出的初始化指令於開始時設定SREG 串緩衝器/DMA引擎602,一旦啟動,便自動管理sreG 串流緩衝器/DMA引擎602的内部緩衝器6〇2b,SREQ φ 流緩衝器/DMA引擎602保留待解析位元的位置。 於一實施例中,SREG串流緩衝器/DMA弓丨擎602使 用兩個暫存器,一個快速32位元正反器與一個較慢512 或1024位元έ己憶體,位元流會使用位元,移位暫存器6〇2a 以位元進行操作,而位元流緩衝器602b以位元組進行操 作,可以節省能源。通常移位暫存器6〇2&運算的指令會使 乂 °午位元(如1〜3位元)’當移位暫存器6iga使用超過 位70組的資料,資料(位元組片段)將從位元流緩衝器 60孔傳送給移位暫存器6〇2a,然後緩衝器指標會減去傳送 的位兀組數量,當SREG串流緩衝器/DMA引擎6〇2的
S 31 1344795 DMA弓I擎偵洲到使用256位元或更多位元時,便從記憶體 k取256位元填滿位元流緩衝器6〇2b,如此cavIX單元 53〇實行了一個簡單的循環緩衝器(256位元片段χ 4), 以追縱位元流緩衝器6〇2b並進行填充,於某些實施例申可 以使用單-緩衝H,不過—個循環緩衝器需要更複雜的指 標計算來跟上記憶體的速度。 利用初始化指令達成與内部緩衝器6〇2b互動,稱為 INIT—BSTR指令’於一實施例中,INIT—BSTR指令(可由 驅動軟體128發出)與INIT—CAVLC (或_ADE )指令幾乎 同時發出’形成延遲(stall) ’直到位元流資料進入緩衝器 602b,一旦資料到達緩衝器602b,解除延遲狀況開始後面 的程序,之後,如果緩衝器的儲存狀況低於預定門檻,SREG 位元流緩衝器/DMA引擎602的DMA引擎會繼續提取位 元流資料存入緩衝器602b。如果已知位元流位置的位元組 位址及位元補償,INIT_BSTR指令將資料載入内部位元流 緩衝器602b,並開始管理程序,每一次呼叫處理切片資料 均會發出下列格式之指令: INIT BSTR offset, RBSPbyteAddress 這個指令用於將資料載入SREG串流缓衝器/DMA 引擎602的内部緩衝器602b,於一實施例中,SRC2暫存 器663提供位元組位址(RBSPbyteAddress),而SRC1暫存 器661提供位元補償,如此,可以使用下列通用之指令格 式: INIT_BSTR SRC2, SRC1, 32 其中,這個指令中的SRC1以及SRC2及其他訊號是對應 内部暫存器661及663的值’但是不限於這些暫存器,於 一實施例中,使用256位元組排列之記憶體提取來存取位 元流資料,並將其寫入緩衝暫存器並傳送至SREG串流緩 衝器/DMA引擎602的32位元移位暫存器6〇2a,於一實 施例中,在這些暫存器或緩衝器進行運算之前,位元流緩 衝器602b内的資料是以位元組方式排列,此資料排列可藉 由排列指令實施,亦稱之為ABST指令,ABST指令會排 列位元流緩衝器602b内的資料,在解碼過程中,排列位元 (如填充位元)最後將被丟棄。 當移位暫存器602a使用資料,内部緩衝器6〇2b便會 填充資料,換句話說,SREG串流緩衝器/dma引擎6〇2 的内部緩衝器602b類似以3為模(m〇(jui〇)之循環緩衝器, 將資料輸入SREG串流緩衝器/dma引擎6〇2的32位元 暫存器602a,CAVLC單元53〇 (如CAVLC邏輯模組66〇) 可以使用READ指令從移位暫存器6〇2a讀取資料, 指令之格式如下: READ DST, SRC1, 其中DST對應於—輸出或目標暫存器,於—實施例中, SRC1暫存器661包含不具正負號的整數值n,經過站处 指令,從移位暫存器6〇2a獲得n位元,當從32位 暫存器6〇2a消耗了 256位元的資料(如解碼一個或多個語 法成分),自動開始提取動作以獲得另一個256位元 料’將其寫人内部緩衝器嶋的暫存器,接著進入移位^ 存器602供下一循環使用。
於某些實施例中,如果對應於一符 器602a的資料已被使用了預定數量的‘位H ⑽收到任何資料,則。二: 序無關之執二與 使用SREG串流緩衝器/舰引擎6〇2的祕 可以減少所需的緩衝器數量,以補償記憶體延遲(例如, 於某些圖形處理單元中,料三百多週期),當使用了位元 流,可以請求紅排錢_位元流資料,如果位元流資 料太少使得位元流緩衝H 6G2b有向下溢位的風險(例如已 知讓訊號從CAVLC單元530流至處理n管_週期數), 可傳遞延遲信號給處理料線,暫停操作,等候^料 位元流緩衝器602b。 ' 另外’ SREG串流緩衝器/DMA引擎6〇2原本便有處 理錯誤位元流的能力,舉個例子,因為位元流錯誤,有可 月b又有偵測到切片結尾記號,這種偵測錯誤可能會導致解 碼完全錯誤,並用到後來的圖樣或切片的位元,SREG串 "il緩衝器/DMA引擎602記錄使用的位元數,如果使用的 位元數大於預設的門櫪值(可針對每一切片改變),則結束 處理程序並將除去的信號送到處理器(如主處理器),然後 處理器執行編碼嘗試從錯誤中回復。 兩個有關位元流存取的指令為INPSTR及INPTRB指 令’ INPSTR及INPTRB指令用於偵測是否在切片或巨圖 34 U44795 塊中有出現特別的樣式(pattern,如資料開始或、结束樣式), 不需進行位元流就能開始讀取位元流,於一實施例中,指 令順序為INPSTR、INPTRB、然後是READ指令,INPSTR 指令包含下列格式: INPSTR DST, 於一實施例中,檢視位元流並將移位暫存器602a的最 高有效16位元送至目標(DST)暫存器的較低16位元,目標 暫存器的較高16位元包含sREGbitptr值,資料不會從移位 暫存器602a移出做為運算結果,可以根據下式例示虛擬碼 施行指令: MODULE INPSTR (DST)
OUTPUT [31:0] DST
DST = {ZE (sREGbitptr), sREG [msb: msb-15]}; ENDMODULE 與位元流有關的另一個指令是INPTRB指令,檢視原 始位元組順序酬載(raw byte sequence payload,RBSP)尾端 位元(如位元組排列資料流),INPTRB指令用於讀取位元 流緩衝器602b,可為下列格式: INPTRB DST. 於INPRB運算中,沒有從移位暫存器6〇2b移出位元, 如果移位暫存器602b的最高有效位元包含ι〇〇(非限定), 則包含了 RBSP停止位元,剩下的位元組就都是零位元, 可以根據下式例示虛擬碼施行指令: MODULE INPTRB(DST) 35 1344795 OUTPUT DST; REG [7:0] P; P = sREG [msb: msb-7];
Sp = sREGbitptr; T [7:0] = (P » sp) « sp; DST[l] = (T = = 〇x80)? 1: 0;
DST[0] = ! (CVLC_BufferBytesRemaining > 〇); ENDMODULE READ指令用於排列位元流緩衝器602内的資料。 現已說明CAVLC單元530的位元流緩衝器操作,再 來是CAVLC運算的初始化,尤其是初始化記憶體、暫存 器結構以及解碼引擎(如CAVLC邏輯電路660),在切片 起始處’於解碼對應於第一巨圖塊的語法成分之前,初始 化暫存器結構、總暫存器606、區域暫存器608、以及 CAVLC解碼引擎,於一實施例中,驅動軟體128發出 INIT_CAVLC指令進行這個初始化動作,INIT_CAVLC指 令可以具有下列指令格式: INIT_CAVLC SRC2, SRC1 其中,SRC2包含切片資料待解碼之位元數目,將這個值 寫入内部 CVLC_bufferBytesRemaining 暫存器: SRC1 [15:0] = mbAddrCurr, SRC1 [23:16] = mbPerLine, SRC 1 [24] = constrained intrajpredflag, SRC1 [27:25] = NAL_unit_type (NUT),
36 1344795 SRCl [29:28] = chroma_format_idc (於一實施例中, Chr〇ma_fonnaUdc值為1時對應4:2:0格式,於其他實施 例可使用其他取樣機制) SRC1 [31:20]=未定義 關於INIT一CAVLC指令’將SRC1值寫入總暫存器606 的對應欄位,利用INIT指令,另將SRC2值寫入内部暫存 器 (如 CVLCbufferByteRemaining ) , CVLC—bufferByteRemaining暫存器用於恢復錯誤位元流, 舉個例子,解碼開始時,CAVLC單元53〇 (如SREG位元 流緩衝器/DMA引擎602)針對一切片記錄有關位元流中 的緩衝位元,位元流使用後,CAVLC單元53〇計數並更新 CVLC—bufferByteRemaining值’如果這個值低於〇,這表 示緩衝器或位元流有錯誤,此時迅速終止處理,並返回應 用程式控制或驅動軟體128控制,進行恢復。 請參閱第六C圖,iNIT_CAVLC指令也可初始化 CAVLC單元530的各儲存結構,如mbNeighCtx記憶體 6M、左側mbNeighCtx暫存器684、目前mbNeighCtx暫存 器686,於一實施例中,mbNeighCtx記憶體610的巨圖 塊基準相鄰内容記憶體排列成一記憶體陣列,以儲存有關 的資料’目前mbNeighCtx暫存器祕用於儲存 目刖解碼之巨圖塊’而左側mbNeighCtx暫存器684用於 儲存先前解碼之(左側)巨圖塊,另外,利用上方指標683 左側指標685、及目前指標687 (在第六c圖中以箭頭表 不)指向mbNeighCtx記憶體604、左側mbNeighCtx暫存
37 1344795 器684、以及目前mbNeighCtx暫存器686,當解碼目贫 巨圖塊時’解碼之資料儲存於目前mbNdghCtx暫:= 680,當已知CAVLC解碼之内容性暂& 子态 門今f生質時,根據 CAVLC—TOTC指令從前次解碼巨圖塊時所蒐集之資訊來 解碼目前的巨圖塊,亦即左側巨圖塊儲存於左側 mbNeighCtx暫存器684並利用左侧指標685進行指向而 INIT—CAVLC指令用於初始化與目前巨圖塊(如 mbNeighCtx記憶體陣列604之元素)相鄰之巨圖塊有關的 上方及左側指標683及685,舉個例子,左側指標685可 以设為0而上方指標683可以設為1,另外,ΙΝΓΓ CAVLC 指令還會更新總暫存器606。
上方巨圖塊儲存於陣列元素[i] 681令並利用上方指標6幻 進行指向。 於一實施例中’ mbNeighCtx記憶體604包含具有12〇 個元素之陣列,標示為 mbNeighCtx[0]、mbNeighCtx[l]... mbNeighCtx[119]’每一圖片寬度最多能儲存12〇個巨圖塊 (因HDTV為1920 x 1080像素),熟悉此技藝者可利用不 同大小的其他陣列結構。 舉個例子,要判斷相鄰巨圖塊(如左侧巨圖塊)是否 存在(有效)’ CAVLC_TOTC指令必須進行一運算(如 mbCurrAddr % mbPerLine ) ’檢查結果是否為〇’於一實施 例中’進行下列算式: 〇 = {mbCurrAddr%mbPerLme) 〇 = mbCurrAddr - mbCurrAddr mbPerLine xmbPerLine r c 38 1344795 mbCurrAddr代表對應於待解碼二進位符號的目前巨圖塊 位置,mbPerLine代表每一列的巨圖塊數量,上面的計算 用到一除法、一乘法、以及一減法。 考慮下式: mbCurrAddr e [〇: max MB -1] 其中,maxMB是8192,而mbPerLine = 120,可利用乘法 及由儲存於晶片上記憶體的表單(如12〇χ η位元表)杳 找之(Ι/mbPerLine)進行除法’如果mbCurrentAddr是13位 元,則使用13x11乘法器,於一實施例中,將乘法運算的 結果取整數,儲存較上方的13位元’進行13 χ 7的乘法運 算,儲存較低的13位元,最後進行13位元的減法運算以 決定“a”,整個運算程序需要2個週期,可以儲存這個結 果給其他運算使用,每當mbCurrAddr改變就計算一次。 於某些實施例中不進行模數(modulo)運算,改以執行 單元(如執行單元420a ’ 420b等等)内的著色器邏輯電路 提供第一個mbAddrCurr值’其位於第一切片之第一行, 舉個例子,這個著色器邏輯電路可以進行下列計算: mbAddrCurr = absoluteMbAddrCurr — n x mbPerLine 使用CWRITE指令可以「移動」mbNeighCtx記憶體 604的内容’ CWRITE指令的格式可以是: CWRITE SRC1, 其中 ’ SRC1 [15:0] = mbAddrCurr, CWRITE指令從目前 mbNeighCtx暫存器686的適當欄位複製到mbNeighCtx[] 結構 6〇4 的上方 mbNeighCtx[i]以及左側
39 mbNeighCtx[i-l],當(mbAddrCun* % mbPerLine = = 0),左 側mbNeighCtxLeft684標記為不存在(如初始化成〇)’可 以利用CWRITE指令「移動」mbNeighCtx記憶體6〇4、區 域暫存器608、以及總暫存器606的内容,舉個例子, CWRITE指令移動mbNeighCtx記憶體604的相關内容到 第i個巨圖塊的左側及上方區塊(如mbNeighCtx[i]或目前 巨圖塊)’並清空mbNeighCtx暫存器686,如前所述,與 mbNeighCtx記憶體004相關的兩個指標是左側指標685及 上方指標683 ’ CWRITE指令之後,上方索引增加1,而目 前巨圖塊的内容則移至陣列604的上方位置及左侧位置, 上述系統可以減少記憶體陣列的讀取/寫入埠的數量至一 個讀取/寫入埠。 利用INSERT指令可以更新mbNeighCtx記憶體604、 局部暫存器608、以及總暫存器606的内容,INSERT指令 的格式可為: INSERT DST, #Imm, SRC1 於此INSERT指令,#Imm包含10位元數字,資料的前5 位元寬度和較高5位元指定將插入資料的位置,輸入參數 具有下列格式:
Mask = NOT(0xFFFFFFFF«#Imm[4:0])
Data = SRC 1 & Mask SDATA = Data«#Imm[9:5] SMask = Mask«#Imm[9:5] 輸出DST可以下式表示: 1344795 DST = (DST & NOT(sMask)) I SDATA 舉個例子,可利用INSERT指令(如INSERT $mbNeighCtxCurrent_l,#ImmlO, SRC1 )寫入目前巨圖塊, 這個操作不會影響左側指標685及上方指標683 (亦即只 寫入目前位置)。 INSERT指令可以寫入目前mbNeighCtx 686,左側指 標685指向的陣列元素與相鄰(相鄰於目前mbNeighCtx) 陣列元素(即mbNeighCtx[i-l])相同,當發出CWRITE指 令’目前mbNeighCtx結構的全部或一些内容會複製到左 側指標685及上方指標683所指向的元素,同時上方指標 增加1(如每一行巨圖塊的模數值)’在複製操作的同時(或 之後),以0值清空目前mbNeighCtx陣列元素。 保留於mbNeighCtx記憶體604的資料結構如下: mbNeighCtxCurrent[01:00] :2^: mbType mbNeighCtxCurrent[65:02] : 4’b : TC[16] mbNeighCtxCurrent[81:66] : 4’b : TCC[cb][4] mbNeighCtxCurrent[97:82] : 4’b : TCC[cr][4] 菖執行CWRITE指令,會更新mbNeighCtx[]相鄰資料以及 初始化目前mbNeighCtx 686。 現已描述CAVLC單元530使用的内容記憶體結構, 接下來說明CAVLC單元530及CAVLCJTOTC指令如何利 用相鄰内容資訊計算TotalCoeff(TC),TotalCoeff用來決定 要使用哪一個CAVLC表來解碼符號,通常CAVLC解碼是 利用H.264規格書的可變長度解碼表(之後稱為cAVu:
41 1344795 表)’其中根據先前解碼符號之内容來決定用於解碼的 CAVLC表’因此’每-個符號可能會用到不同的cavlc 表,第六D圖顯示一個基本的表單結構,其為可變尺寸2〇 陣列,提供一個「表單」陣列(每—個表單對應一個符號), 而每一個符號都是霍夫曼編碼,霍夫曼編碼存成下列表單 結構: struct Table { unsigned head; struct table { unsigned val; unsigned shv; }table[]; }Table[]; 下面描述根據各前置碼(prefix coding)的配對 (MatchVLC功能)方法,通常CAVLC表分成可變長度部分 和固定長度部分,因此利用固定尺寸索引查找可以簡化配 對,於MatchVLC功能中,進行READ操作不會從移位暫 存器602a移出位元流,READ操作與前面說明的READ指 令(用於位元流緩衝器602b)不同,後者是針對位元流的。 於matchVLC功能中’從位元流緩衝器602b複製一些位元 (fixL)’接著於指定表單中查找’指定表單中的每一個項目 包含一係數對(dublet ’如值與位元數),這個位元數可用 於處理位元流。 42 1344795 FUNCTION MatchVLC(Table, maxldx) INPUT Table; INPUT maxldx;
Idxl = CLZ(sREG); //count number of leading zeros
Idxl = (Idxl > maxldx)? maxldx : Idxl; fixL = Table[Idxl].head; SHL(sREG, Idxl+#1); //shift buffer Idxl+1 bit left
Idx2 = (fixL)? 0 : READ(fixL); (val, shv) = Table[Idxl][Idx2]; SHL(sREG, shv); return val;
ENDFUNCTON
第六D圖是前述表單結構的例示2D陣列之方塊圖, 用於解釋CAVLC解碼内容中之MatchVLC功能,這個例 〒是H.26,規格書吃患9-5(nC = -1):
Coeff—token TrailingOnes TotalCoeff Head Value Shift 1 1 1 0 33 0 01 0 0 0 0 0 001 2 2 0 66 0 000100 0 2 2 2 2 000101 3 3 99 2 000110 1 2 34 2 000111 0 1 1 2 000010 0 4 1 4 1 000011 0 3 3 1 ; ^ -;ϊ 0000010 3 ., . .-1 .1¾ -¾ ...-.ίν·' * • _、w i >· · t... ,, ·.... : C . 1 i' : V. ,i.i .: 0000011 1 - « . …-.八' 's ·· . . f >. : Λ考..夂 35::.:v ;::: —— I1 :
43 1344795 〇, {{33,0}},
〇,{{〇,〇}}, 〇, {{66, 0}}, 2, {{2,2}, {99,2}, {34,2}, {1,2}}, L {{67, 1}, {35, i}}, L {{68, 1},{36, i”, 〇,{{!〇〇,〇}} };
Table9-5[8] 上述虛擬碼可以表示成第六D圖的2D表單,利用這 個表單結構,上述MatchVLC功能可以用於CAVLC解碼, MatchVLC功能會計算位元流中從最高位起連續〇的數目 (count leading zero,CLZ),以存取對應已知語法成分的表 單;另外,當CLZ值大於macldx,則MatchVLC功能啟 動參數化清除(parameterized clear zero)操作,然後 maxidx 回復(在苐六D圖的表單中為〇〇〇〇〇〇〇 )。MatchVLC功能 以及表單結構的另一個好處便是不需要多個指令來進行處 理,只要下列的 MatchVLC 片段:Idxl = CLZ(sREG); //count
44 number of leading zeros, and Idxl = (Idxl > maxldx)? maxldx : Idxl。利用下列MatchVLC片段移除已使用的位 元:SHL(sREG,Idxl+#1); //shift buffer Idxl+1 bit left。利用 下列MatchVLC片段讀取子陣列標頭:fixL = Table[Idxl].head,and Idx2 = (!fixL)? 0 : READ(fixL)。前方 連續〇的數目可能相同,但是尾端位元的大小不同,於一 實施例中可利用CA SEX-type狀態敘述(case statement)(使 用較多記憶體但是較簡單的碼結構)。 利用(val,shv) = Table[Idxl][Idx2]以及 SHL(sREG,shv) 從表單得到真實值’也可知道這個語法成分使用的實際位 元數’從位元流移出這些位元,然後將語法成分值放回目 標暫存器。 前面已描述位元流解析、初始化解碼引擎及記憶體結 構、以及VLC配對方法及表單結構,現回到第六A圖描 述CAVLC解碼引擎(如CAVLC邏輯電路660)及程序, 一旦載入位元流、解碼引擎、記憶體結構、以及暫存器, 驅動軟體128發出CAVLC—TOTC指令致能coeff一t〇ken模 組610,CAVLC_TOTC指令格式可為: 、 CAVLC—TOTC DST, S1, 其中S1和DST分別為輸入暫存器及内部輸出暫存器,具 有下列格式: ^ SRC1 [3:0] = blkldx SRC1 [18:16]-blkCat SRC1 [24] = iCbCr 45 s 1344795 剩下的位元未定義,輸出格式如下: DST [31:16] = TrailingOnes DST [15:0] = TotalCoeff 因此’ coeff—token模組610接收對應於mbCurrAddr、 mbType(表示色度通道是否有在處理,如icbCr)、以及 blkldx (如區塊索引,因為圖形可能切成許多區塊)的資 訊,當存取位元流緩衝器6〇2b之一巨圖塊,blkIdx表示特 疋位置處理的疋8x8像素區塊或是4X4像素區塊,這類 資汛是由驅動軟體128所提供,coeff—token模組61〇包含 一查找表(look-up table) ’根據前述輸入c〇effJ〇ken模組 610的查找表得到尾端i(Traiiing〇nes)及全體係數 (TotalCoeff),尾端1表示一列中有多少i ,全體係數則表 示從位元流拉出之資料片段有多少運作/層級係數對, TrailingOnes 以及 TotalCoeff 將分別輸入 CAVLC Leve丨模 組614及CAVLC—ZL模組618,TrailingOnes亦同時輸入 CAVLC一L0模組616’其對應從位元流缓衝器6〇2b取出之 第一層級(如DC值)。 CAVLC—level模組614記錄符號的字尾長度(如尾端 1的數目),並結合LevelCode計算儲存於層級陣列622及 運作陣列624的層級值(level[idx]),CAVLC_Level模組614 根據CAVLC—LVL指令運算’ CAVLC_LVL指令的格式如 下: CAVLC_LVL DST, S2, SI, 其中:
46 1344795 51 = Idx (16-bit), 52 = suffixLength (16-bit), and DST = suffixLength (16-bit). suffixLength表示字元碼長度,來自驅動軟體128的輸入會 提供指定suffixLength的資訊,另外,於一實施例中,因 為更新了 suffixLength值,DST和S2可以由同樣的暫存 器取得。 這裡亦可使用轉遞暫存器(保留特定模組於内部產生 之資料),如第六B圖之F1 665及F2 667 ’ 一個指令及對 應的模組是否使用轉遞暫存器會於指令中用轉遞旗標表 示,代表轉遞暫存器的符號有F1 (使用轉遞來源1之值, 於一實施例中可以指令中的位元26表示)以及F2 (使用 轉遞來源2之值,於一實施例中可以指令中的位元27表 示),如果使用轉遞暫存器,CAVLC_LVL指令會有下列例 示格式: CAVLC_LVL.F1.F2 DST, SRC2, SR1, 其中,如果F1或F2設為1 ’則指定的轉遞來源將成為輸 入,轉遞暫存器F1對應於CAVLC_Leve丨模組614所產生 的層級索引(level[Idx]) ’經過一增量(increment)模組後輸入 多工器630,轉遞暫存器F2對應於CAVLC_Level模組614 所產生的suffixLength,並將輸入多工器628,多工器603 及多工器628的其他輸入還有EU暫存器輸入(第六a圖 中標示為EU),說明如下。 CAVLC—Level模組614還有另一個輸入levelCode,是
47 1344795 由 CAVLC_LevelCode 模組 612 所提供,CAVLC_LevelCode 模組612及CAVLC_Level模組614聯合運算解碼層級值 (在調整大小(scaling)之前的變換係數(transf〇rm coefficient)值),致能 CAVLC—LevelCode 模組 612 的指令 格式如下: CAVLC LC SRC1, — , 其中,SRC1 =suffixLength (16-bit),如果使用轉遞暫存器 F1 665,則指令表示如下: CAVLC_LVL.F1 SRC1, 如果設定F1 ’則轉遞SRC1將做為輸入,配合第六a圖, 如果设疋 F1 (如 FI = 1 ) ’ 則 CAVLC_LevelCode 模組 612 使用轉遞SRC1值(如CAVLC_Level模組614的 suffixLength)做為輸入,不然(如F1 = 〇),EU暫存器之 值將做為輸入。 現在回到 CAVLC_Level 模組 614,suffixLength 輸入 可以經由多工器628從CAVLC_Level模組614轉遞,也可 以經由EU暫存器提供至多工器628,另外Idx輸入同樣可 以經由多工器630從CAVLC—Level轉遞(可以藉由增量模 組進行增量或自動增量),也可以經由EU暫存器提供至多 工器630。CAVLC_Level模組614還直接從 CAVLC—LevelCode 模組 612 接收 levelCode 輸入,除了傳 送給轉遞暫存器的輸出,CAVLC_Level模組614還提供層 級索引(level[idx])輸出給層級陣列622。 如前所述’將TrailingOnes輸出(如DC值)傳送至 48 1344795
CAVLC一L0模組616 ’藉由下列指令致能cAVLC_L〇模組: CAVLCLVLO SRC, 其中,SRC = trailingOnes(coeff_token),CAVLC一L〇 模組
616的輸出包括輸出給層級陣列622的層級索引 (Level[Idx]) ’係數值編碼成正負號(sign)與大小 (magnitude),CAVLC—L0模組616提供係數的正負值, CAVC_Level模組614提供的大小值與CVLC_L0模組616 提供的正負值結合,寫入層級陣列622,利用層級索引 (level[idx])指定寫入位置,於一實施例中,係數的每—子 區塊疋4x4矩陣(區塊是8x8),還不是掃描(raster)順序, 這個陣列稍後轉換成4x4矩陣,換句話說解碼的係數層級 及運作並不是掃描格式,利用層級一運作資料,可以重建 4x4矩陣(但疋為Z字掃描順序)’然後重新排列成掃描順 序的4 X 4矩陣。
將coeff_token模組610的輸出TotalCoeff傳送給 CAVLC—ZL模組618 ’藉由下列指令致能c AVLC一ZL模組 618 : 、’ CAVLC_ZL DST, SRC1,
其中 ’ SRC1 = maxNumCoeff(16-bit)而 DST
ZerosLeft( 16-bit) ’ maxNUmC〇eff(H.264 標準)做為指令的來 源值,換句話說,maxNumCoeff是由軟體設定的,於某此 實施例中’ maxNumCoeff儲存於硬體中,變換係數編碼成 (層級,運作)係數對,代表編碼成〇的係數(層級)數目, CAVLC—ZL 模組 618 提供兩個輸出 ZerosLeft 及 Reset(reset
49 1344795 =0)給多工器640及642,多工器_亦從CAVLC Run 模組620接收轉遞暫存器^,多工器642從CAvu: Run 模組620接收增量(、經由增量模級)的轉遞暫存器之值ρι。 CAVLC—Run模組620分別從多工器64〇及⑷接收 ZerosLeft及Wx輸入’並輸出運作索引(Run[Idx])至運作陣 列624,如前所述,因騎使用運作·長度編碼進行更進一 步的壓縮,因此係數編碼成(層級,運作)對,舉個例子, 假設具有數值10121215 19 1 1 1 0 0 0 0 0 0 1 0,會編碼 成(10,0)(12,1)(15,0)(19,吼2)(0,5)(1,0)_,這種字元碼 通常比較短’索引便是層級索引的對應索引,藉由下列指 令致能CAVLC Run模組620 : CAVLC_RUK DST, S2, S1, 其中’因為已更新ZerosLeft值,因此DST及S2可從同的 暫存器取得’ CVLC_Run的不具正負號數值如下: 51 = Idx( 16-bit), 52 = ZerosLeft( 16-bit), DST = Zerosleft( 16-bit) 由第六A圖可知’如果使用轉遞暫存器,cavlc_run 指令的格式如下: CAVLC.F1.F2 DST, SRC2, SRC1, 其中,如果設定F1或F2,就表示對應的轉遞來源將做為 輸入。 至於兩個暫存器陣列’層級陣列622對應於層級,而 運作陣列624對應於運作,每一個陣列都包括16個元素, (V Ί 層級陣列622的每一個元素都包含16位元具正負號之值, 而運作陣列624的每一個元素都包含4位元不具正負號之 值,利用下列指令分別從運作陣列624及層級陣列622讀 取運作及層級值: READ LRUN DST, 其中,於一實施例中,DST包括4個128位元的連續暫存 ,(如EU臨時或共用暫存器)’這個操作會讀取cavlc 單元530内的層級暫存器622及運作暫存器624,並將其 儲存於目標暫存器DST,當讀取運作並將其儲存於暫存器 中,運作值會轉換成16位元不具正負號之值,舉個例子, 月’J 2個暫存器保留16個16位元層級(亦即陣列儲存第一 筆16個係數)值,而第三及第四暫存器則保留16個 位元運作值,如果超過16個係數,將其解碼至記憶體,於 —實施例中,依照下列順序將值寫入:於第一暫存器中, 最低有效16位元包含LEVEL[0]、位元丨6_3丨包含LEVEL[ 1 ] 等等,以此類推直到位元112-127包含LEVEL[7];於第二 暫存器中最低有效I6位元包含LEVEL[8].·.,運作值亦使 用同樣的排列方法。 用於清除運作陣列624及層級陣列624暫存器的另一 個指令格式如下: CLRLRUN. 前述解碼系統200 (如CAVLC單元53〇)的軟體(著色器 私式)以及硬_作(如模組)可以利用下列虛擬馬表示: 51 2 1344795
Residual_block_cavlc( coeffLevel, maxNumCoeff) {
CLR LEVEL RUN if( TotalCoeff( coeff token) > 0) { if( TotalCoeff( coeff—token) > 10 && TrailingOnes( coeffjoken) < 3 suffixLength = 1
Else suffixLength = 0 CAVLC_levelO(); for( I = TrailingOnes(coeff_taken); I < TotalCoeff( coeff_token ); i-H- ){ CAVLC_levelCode(levelCodef suffixLength); CAVLC^level(suffixLength, i,levelCode)
CAVLC—ZerosLeft(ZerosLeft, maxNumCoeff) for( i = 0; i < TotalCoeff( coeff token ) — 1; i++ ) { CAVLC—run(i, ZerosLeft) LEVEL RUN (level, run) run[ TotalCoeff( coeff token) - 1 ] = zerosLeft coeffNum = -1 for( i = TotalCoeflf( coeff token ) - 1; i >= 0; i-)( coeffNum += run[ i ] + 1 coeffLeveir coeffNum ] = level[ i ]
應強調的是,本發明所舉的上所實施例或「較佳」實 鉍例僅為可能之施行範例,僅用以清楚說明本發明之原 理,即便對上述實施例施以變化和修冑,然皆不脫此令所 述系統及方法之精神和原則,所有此等修飾及變化應涵括 於本案之範圍内,受如附申請專利範圍保護。
52 1344795
【圖式簡單說明】 每裡所揭露實關的各方觀點可參考下咖心獲得更深 入讀解’圖式巾的元件縣蚊其尺找例,僅用於清 楚說明本發明之原則’各圖中相似的標號代表相對應的部 分。
第-圖:_處理器系統實施例之方塊圖,其中可施行多 種解碼系統(及方法)實施例。 第二圖:例示處理環境之方塊圖,其中可施行多種解碼系 統實施例。 第二圖:第二圖例不處理環境内之選擇元件方塊圖。 第四圖:第二圖與第三圖例示處理環境内之計算核心方塊 圖’其中可施行多種解碼系統實施例。 第五A圖:第四圖計算核心内之執行單元的選擇元件方塊 圖’其中可施行多種解碼系統實施例。
第五B圖:執行單元資料路徑之方塊圖’其中可施行多種 解碼系統實施例。 第六A圖:第五圖所示解碼系統實施例之方塊圖。 第六B圖:第六A圖解碼系統的位元流緩衝器實施例之方 塊圖。 第六C圖:第六Α圖解碼系統之内容記憶體結構配合相關 暫存器實施例之方塊圖。 第六D圖:用於CAVLC解碼的解碼系統200所使用表單 結構實施例之方塊圖。 53 1344795 【主要元件符號說明】 本案圖式中所包含之各元件列式如下: 104顯示介面單元 U0記憶體介面單元 118匯流排介面單 124系統記憶體 128驅動軟體 202圖形處理器 iUU圖形處理器系統 元 106區域記憶體 114圖形處理單元 122晶片組 126中央處理單元 200解碼系統 —。 204計算核心 观2單^集合控制及頂點/串流快取記憶體單元 :線 302紋理過渡單元 30S 3%命令流處理器 =二己憶體存取單* 4Q8U_“= 413 ^體介面件哉器412執行單元;'合 5〇4指令快取記憶體控制器執仃早凡 514執行單元資料路徑先進先出料路經
54 516述部暫存器檔案 518純量暫存器檔案 520資料輸出控制器 524執行緒任務介面 526暫存器檔案 528多工器 1344795 530 CAVLC單元 532向量浮點單元 534向量整數算術邏輯單元 536特殊目的單元 538多工器 540暫存器檔案 542運算訊號線 544目前訊號線 602移位暫存器-串流緩衝器/直接記憶體存取引擎 604巨圖塊相鄰内容記憶體 606總暫存器 608區域暫存器 610係數符記模組 612層級碼模組 614層級模組 616層級0模組 618零層級模組 620運作模組 622層級陣列 624運作陣列 626、628、630、640、642 多工器 660CAVLC邏輯電路 661、663運算元暫存器 665、667轉遞暫存器 681陣列元素 683上方指標 684 左側 mbNeighCtx 685左側指標 686 目前 mbNeighCtx 687目前指標 658反饋接線 55

Claims (1)

1344795 年Μ,.,叫年2月25日修正替換頁 十、申請專利範圍: 1. 一解碼系統,其係包含: 一—軟體可程式核心處理單元,其具有執行一著色器之 一内容適應性可變長度編碼(c〇mext_adaptive vaHable length coding’ CAVLC)單元,該著色器施行一視訊流之 CAVLC解碼並提供一解碼資料輪出, 其中該CAVLC解碼係使用硬體配合軟體的方式施 行,且該C AVLC單元更包含一直接記憶體存取(direct memory access’ DMA)引擎模組,其内包含一位元流緩衝 器以及一 DMA引擎,該DMA引擎模組因應該著色器針對 每一切片執行之一指令,當已使用該位元流緩衝器内的預 定數量之位元,自動重複填入該預定數量之位元,該位元 對應於該視訊流。 φ 2.如申請專利範圍第1項所述之系統,其中該CAVLC解 碼係以圖形處理單元編程之内容配合施行於一圖形處理單 元資料路徑内之硬體所完成。 3.如申請專利範圍第1項所述之系統,其中該CAVLC單 元更包含一係數符記(coeff—token)模組,用以接收巨圖塊資 訊,因應該著色器之一第一指令(CAVLC_TOTC),提供尾 端1資訊及全體係數資訊。 S 56 1344795 ___ 100年2月25日修正替換頁 4. 如申請專利範圍第3項所述之系統,其中該CAVLC單 元更包含一層級(CAVLC_Level)模組,用以接收該尾端1 . 資訊及層級碼資訊,因應該著色器之一第二指令 (CAVLC一LVL),提供字尾長度資訊及層級索引(Level[Idx]) 資訊。 5. 如申請專利範圍第4項所述之系統,其中該CAVLC單 φ 元更包含一層級碼(CAVLC一LevelCode)模組,用以接收該 字尾長度資訊,因應該著色器之一第三指令(CAVLC_LC), 提供該層級碼資訊給該層級模組。 6‘如申請專利範圍第5項所述之系統,其中該層級碼模組 從一轉遞暫存器或一執行單元暫存器接收該字尾長度資 訊。 • 7.如申請專利範圍第5項所述之系統,其中該層級碼模組 從一轉遞暫存器或一執行單元暫存器接收該字尾長度資訊 及该層級索引資訊,該層級索引資訊係經過增量運算。 8·如申請專利範圍第4項所述之系統,其中該CAVLC單 兀更包含一層級〇(CAVLC一L0)模組,用以接收該尾端1資 讯,因應該著色器之一第四指令(CAVLC—LVL〇),提供第二 層級索引(Level[Idx])資訊給一層級陣列。 57 1344795 100年2月25日修正替換頁 9. 如申請專利範圍第8項所述之系統,其中該CAVLC單 元更包含一零層級(CAVLC ZL)模組,用以接收該全體係數 資訊及一最大數目係數資訊,因應該著色器之一第五指令 (C AVLC_ZL) ’提供一左方0資訊及一重置值給第一多工器 及第二多工器。 10. 如申請專利範圍第9項所述之系統,其中該CAVLC單 元更包含一運作(CAVLC_Run)模組,用以從該第一多工器 及該第二多工器接收該左方0資訊及第二索引資訊,因應 該著色器之一第六指令(CAVLC_RUN),提供一運作索引 (Run[Idx])資訊給一運作陣列。 11. 如申請專利範圍第1〇項所述之系統,其中該第一多工 器及該第二多工器分別從第一轉遞暫存器及第二轉遞暫存 器接收該左方〇資訊及該第二索引資訊。 12. 如申請專利範圍第1〇項所述之系統,其中該層級陣列 及該運作陣列因應該著色器之一第七指令(READ_LRUN) 提供一解碼層級值及一解碼運作值,並因應該著色器之一 第八指令(CLR_LRUN)而清空。 13. 如申請專利範圍第1項所述之系統’其中該CAVLC單 元使用一指令内之位元,判斷儲存在一内部暫存器的前一 次運算結果是否可用,或是一來源運算元中之資料是否可 S 58 1344795 __ 、 100年2月25日修正替換頁 供一個或多個模組於目前運算中使用。 .. 14.如申請專利範圍第1項所述之系統,其中該CAVLC單 元因應該位元流緩衝器内有向下溢位之可能,延遲該DMA ' 引擎模組。 15. 如申請專利範圍第1項所述之系統,其中該DMA引擎 模組用於記錄該位元流緩衝器内之已使用位元數目,並因 應偵測到該位元數目大於一預定值,暫停該位元流緩衝器 運算,並將控制權轉移至一主處理器。 16. —種解碼方法,其係包括步驟: 將一著色器載入具有一 CAVLC單元之一可程式核心 處理單元中; 執行該CAVLC單元上之該著色器,以CAVLC解碼一 視訊流;以及 提供一解碼資料輸出; 其中該方法更包括步驟:因應該著色器針對每一切片 執行之一指令,當已使用該位元流缓衝器内的預定數量之 位元,自動重複填入該預定數量之位元,該位元對應於該 視訊流。 17. 如申請專利範圍第16項所述之方法,其中該CAVLC 解碼係以圖形處理單元編程之内容配合施行於一圖形處理 59 1344795 100年2月25日修正替換頁 單元資料路徑内之硬體所完成。 '-— 18. 如申》月專利$!固第16項所述之方法,更包括步驟: „玄CAVLC單元之—係數符記(c〇eff_t〇ken)模組接收巨 圖塊資訊; 因應該著色器之U令(CAVLC_TOTC),提供尾 端1資訊及全體係數資訊; φ 該CAVLC單元之一層級(CAVLC_Level)模組接收該尾 端1資訊及層級碼資訊; 因應該著色器之一第二指令(CAVLC一LVL),提供字尾 長度資訊及層級索引(Level[Idx])資訊; 該CAVLC單元之一層級碼(cAVLC LevdCode)模組 接收該字尾長度資訊;以及 ‘ 因應該著色器之一第三指令(CAVLC一LC),提供該層級 碼資訊給該層級模組。 19. 如申請專利範圍第18項所述之方法,其中該層級碼模 組從一轉遞暫存器或一執行單元暫存器接收該字尾長度資 訊及該層級索引資訊,該層級索引資訊係經過增量運算。 20. 如申請專利範圍第μ項所述之方法,更包括步驟: 該CAVLC單元之-層級〇 (CAVLC—L0)模組接收該尾 端1資訊;以及 因應該著色器之一第四指令(CAVLC—LVL0),提供第二 1344795 100年2月25日修正替換頁 層級索引資訊(Level[Idx])給一層級陣列。 21. 如申請專利範圍第20項所述之方法,更包括步驟: 該CAVLC模組之一零層級(CAVLC_ZL)模組接收該全 體係數資訊及一最大數目係數資訊; 因應該著色器之一第五指令(CAVLC—ZL),提供一左方 0資訊及一重置值給第一多工器及第二多工器; 該CAVLC單元之一運作(CAVLC—Run)模組分別從該 第一多工器及該第二多工器接收該左方〇資訊及第二索引 資訊;以及 因應該著色器之一第六指令(CAVLC-RUN),提供一運 作索引(Run[Idx])給一運作陣列。 22. 如申請專利範圍第21項所述之方法,其中該第一多工 器及該第二多工器分別從第一轉遞暫存器及第二轉遞暫存 接收該左方0資訊及該第二索引。 23. 如申請專利範圍第21項所述之方法’其中該層級陣列 及該運作陣列因應該著色器之一第七指令(READ_LRUN) 提供一解碼層級值及一解竭運作值。 24.如申請專利範圍第21項所述之方法,其中該層級陣列 及该運作陣列因應該著色器之一第八指令(CLR_LRUN)而 清空。 1344795 100年2月25日修正替換頁 25.如申請專利範圍第16項所述之方法,更包括步驟: 該CAVLC單元使用一指令内之位元,判斷儲存在一内 部暫存器的前一次運算結果是否可用,或是一來源運算元 中之資料是否可供一個或多個模組於目前運算中使用。 26. 如申請專利範圍第16項所述之方法,更包括步驟: 因應該位元流緩衝器内有向下溢位之可能,延遲使用 該位元流緩衝器内之該位元。 27. 如申請專利範圍第16項所述之方法,更包括步驟: 記錄該位元流緩衝器内之已使用位元數目,並因應偵 測到該位元數目大於一預定值,暫停該位元流緩衝器運 算,並將控制權轉移至一主處理器。 28. —解碼系統,其係包含: 一軟體可程式核心處理單元,其具有執行一著色器之 一内容適應性可變長度編碼(context-adaptive variable length coding,CAVLC)單元,該著色器施行一視訊流之 CAVLC解碼並提供一解碼資料輸出, 其中該CAVLC解碼係使用硬體配合軟體的方式施 行,該CAVLC單元使用一指令内之位元,判斷儲存在一内 部暫存器的前一次運算結果是否可用,或是一來源運算元 中之資料是否可供一個或多個模組於目前運算中使用。 62 1344795 ____ 100年2月25日修正替換頁 ------ 29. 如申請專利範圍第28項所述之系統,其中該CAVLC * 解碼係以圖形處理單元編程之内容配合施行於一圖形處理 . 單元資料路徑内之硬體所完成。 30. 如申請專利範圍第28項所述之系統,其中該CAVLC 半元更包係數符記(coeff_token)模組,用以接收巨圖塊 資訊,因應該著色器之一第一指令(CAVLC_TOTC),提供 鲁尾端1資訊及全體係數資訊。 31. 如申請專利範圍第30項所述之系統,其中該CAVLC 單元更包含一層級(CAVLC_Level)模組,用以接收該尾端1 資訊及層級碼資訊,因應該著色器之一第二指令 ^ (CAVLC_LVL),提供字尾長度資訊及層級索引(Level[Idx]) J 資訊。 4 φ 32.如申請專利範圍第31項所述之系統,其中該CAVLC 單元更包含一層級碼(CAVLC_LevelCode)模組,用以接收 該字尾長度資訊,因應該著色器之一第三指令 (CAVLC一LC),提供該層級碼資訊給該層級模組。 33.如申請專利範圍第32項所述之系統,其中該層級碼模 組從一轉遞暫存器或一執行單元暫存器接收該字尾長度資 訊。 63 1344795 _____ 100年2月25日修正替換頁 34. 如申請專利範圍第32項所述之系統,其中該層級碼模 • 組從一轉遞暫存器或一執行單元暫存器接收該字尾長度資 訊及該層級索引資訊’該層級索引資訊係經過增量運算。 35. 如申請專利範圍第31項所述之系統,其中該CAVLC 單元更包含一層級〇(CAVLC一LO)模組,用以接收該尾端1 資訊,因應該著色器之一第四指令(CAVLC_LVLO),提供第 鲁 二層級索引(Level[Idx])資訊給一層級陣列。 36. 如申請專利範圍第35項所述之系統,其中該CAVLC 單元更包含一零層級(CAVLC一 ZL)模組’用以接收該全體係 ’ 數資訊及一最大數目係數資訊’因應該著色器之一第五指 j 令(CAVLC_ZL),提供一左方0資訊及一重置值給第—多工 J 器及第二多工器。 Λ φ 37.如申請專利範圍第36項所述之系統,其中該CAVLC 單元更包含一運作(CAVLC_Run)模組,用以從該第—多工 器及該第二多工器接收該左方〇資訊及第二索引資訊,因 應該著色器之一第六指令(CAVLC_RUN),提供—運作索引 (Run[Idx])資訊給一運作陣列。 3,如申請專利範圍第37項所述之系統,其中該第—多工 :及該第二多工器分別從第一轉遞暫存器及第二轉遞暫存 器接收該左方〇資訊及該第二索引資訊。 64 S 1344795 100年2月25日修正替換頁 39. 如申請專利範圍第37項所述之系統,其中該層級陣列 及該運作陣列因應該著色器之一第七指令(RE AD_LRUN) 提供一解碼層級值及一解碼運作值,並因應該著色器之一 第八指令(CLR_LRUN)而清空。 40. 如申請專利範圍第28項所述之系統,其中該CAVLC 單元更包含一直接記憶體存取(direct memory access,DMA) 引擎模組,其内包含一位元流緩衝器以及一 DMA引擎, 該DMA引擎模組因應該著色器針對每一切片執行之一指 令,當已使用該位元流緩衝器内的預定數量之位元,自動 重複填入該預定數量之位元,該位元對應於該視訊流。 41. 如申請專利範圍第40項所述之系統,其中該CAVLC 單元因應該位元流緩衝器内有向下溢位之可能,延遲該 DMA引擎模組。 42. 如申請專利範圍第40項所述之系統,其中該DMA引 擎模組用於記錄該位元流緩衝器内之已使用位元數目,並 因應偵測到該位元數目大於一預定值,暫停該位元流緩衝 器運算,並將控制權轉移至一主處理器。 43. —種解碼方法,其係包括步驟: 將一著色器載入具有一 CAVLC單元之一可程式核心 65 處理單元中; 執行該CAVLC 視訊流;以及 單元上之該著色器 100年2月25日修正替換頁 以CAVLC解碼一 提供一解碼資料輸出; 其中財法包括㈣:該CAVIX單元使用—指令内之 斷儲存在一内部暫存器的前一次運算結果是否可 :’或疋一來源運算元令之資料是否可供-個或多個模,且 於目前運算巾使用。 44. 如申請專利範圍帛43項所述之方法,其中該CAVLC ,碼係以圖形處理單^編程之内容配合施行於—圖形處理 單元資料路徑内之硬體所完成。 45. 如申明專利範圍第43項所述之方法,更包括步驟: «玄CAVLC單元之一係數符記(c〇eff_t〇ken)模組接收巨 圖塊資訊; 因應該著色器之一第一指令(CAVLC_TOTC),提供尾 端1資訊及全體係數資訊; 該CAVLC單元之一層級(CAVLc_Level)模組接收該尾 端1資訊及層級碼資訊; 因應該著色器之一第二指令(CAVLC_LVL),提供字尾 長度資訊及層級索引(Level[Idx])資訊; 該CAVLC單元之一層級碼(CAVlc—LevelCode)模組 接收該字尾長度資訊;以及 S 66 1344795 100年2月25日修正替換頁 因應該著色器之-第三指令(CAVLC_lc^^^— 碼資訊給該層級模組。 46. 如申請專利範圍第45項所述之方法,其中該層級碼模 組從一轉遞暫存器或一執行單元暫存器接收該字尾長度資 汛及该層級索引資訊,該層級索引資訊係經過增量運算。 47. 如申請專利範圍第45項所述之方法,更包括步驟: 該CAVLC單元之一層級0 (CAVLC—L〇)模組接收該尾 端1資訊;以及 因應該著色器之一第四指令(CAVLC_LVL〇),提供第二 層級索引資訊(Level[Idx])給一層級陣列。 48. 如申請專利範圍第47項所述之方法,更包括步驟: 該CAVLC模組之一零層級(cAVLC—ZL)模組接收該全 體係數資訊及一最大數目係數資訊; 因應該著色器之—第五指令(CAVLC_ZL),提供一左方 及一重置值給第—多工器及第二多工器; 該CAVLC單元之一運作(CAVLC—Run)模組分別從該 第-多工器及該第二多工器接收該左方〇資訊及第二索引 資訊;以及 ” 因應該著色器之—第六指令(CAVLC一RUN),提供一運 作索引(Run[Idx])給一運作陣列。 67 1344795 100年2月25日修正替換頁 49.如申請專利範圍第48項所述之方法,其中該第一多工 器及該第二多工器分別從第一轉遞暫存器及第二轉遞暫存 器接收該左方0資訊及該第二索引。 50. 如申請專利範圍第48項所述之方法,其中該層級陣列 及該運作陣列因應該著色器之一第七指令(READ_LRUN) 提供一解碼層級值及一解碼運作值。 51. 如申請專利範圍第48項所述之方法,其中該層級陣列 及該運作陣列因應該著色器之一第八指令(CLR_LRUN)而 清空。 52. 如申請專利範圍第43項所述之方法,其中更包括步驟: 因應該著色器針對每一切片執行之一指令,當已使用 該位元流緩衝器内的預定數量之位元,自動重複填入該預 定數量之位元,該位元對應於該視訊流。 53. 如申請專利範圍第52項所述之方法,更包括步驟: 因應該位元流緩衝器内有向下溢位之可能,延遲使用 該位元流緩衝器内之該位元。 54. 如申請專利範圍第52項所述之方法,更包括步驟: 記錄該位元流緩衝器内之已使用位元數目,並因應偵 測到該位元數目大於一預定值,暫停該位元流緩衝器運 算,並將控制權轉移至一主處理器。 68 1344795 年'^月>5修正本 十一、圖式: --- 邮丨画
69 1344795
第二圖 1344795 310 Mlllii &卦 描df SB -Π鄭 /5 ΕΕ 12 Ρ鄭 /5 S圧 12 308 /5 C 12 J1 J2 Am 4 Η /5 C12 Ί 0 林 Τ νοΜΛ /512 νοΜΛ /512 ΚΙ K2 W X L2>FS sllllcljsfi h C D β ¾ /5 0 12 /5 12 PS /5 12 /5 12
Λ 302 Ml M2 408 -200 lt«§t/5 E F G H N -204 304 306 驰U1JI /256
!![¥?_渖雜酆 Λ /512 000^.$00 茄銻EU#,缕^謀# ys(截 /5 VG圧 12 -208 EU»D>Hsa塒冲 -206 -202 71 1344795
S 72 1344795
isffilil5JI 73 1344795 ❿
S刀C2 SFRC1 s 74 1344795
614 CAVLC LEVEL
TRAILINGONES ^ LEVELCODE CAVLCILEVELCODE TRAILINGONES 602 SSG册鉼!|豳雜/ DMAulll 俯 _h_ +1
COEF-nITOKEN ' MBCURRADDR MBTYPE ICBCR BLKIDX
READ LEVEL RUN σια, TOTALCOEFF 、610 CAVLC ZL LEVEL[IDX] MAXNUMCOEFF CAVLC L0 '616
-Sg- -M- 11^ fcf M*JT— 'in J5i f»T CLR LEVEL RUN
LE<EL【DX】 Mbneighbctx、 _筠111§}勐雜' .604 -606 608 530 75 1344795 M>hBil
76 1344795 mT^Cl!
W-室— 皿s茄硇 683 mbNeighotx 【0】 mbNeighotx 【1】 mbNeighotx 【i_1】 mbNeighotx Ξ 681 mbNeighotx 【118】 mbNeighotx 【1191 -604 77 1344795 Ο 1 2 3 HADll 12 34,2 & 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 CO ο ο ο σ> σ> ο 99,2 IV) Ν) CO _^ _1. CO αι σ> CO σ> Ο) 00 _λ. ο ο ο rdx2 78 O o o N5 _λ. _λ. Ο Idxlafja s
TW96120899A 2006-06-08 2007-06-08 Decoding of context adaptive variable length codes in computational core of programmable graphics processing unit TWI344795B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US81182106P 2006-06-08 2006-06-08

Publications (2)

Publication Number Publication Date
TW200803526A TW200803526A (en) 2008-01-01
TWI344795B true TWI344795B (en) 2011-07-01

Family

ID=38899303

Family Applications (4)

Application Number Title Priority Date Filing Date
TW96120728A TWI354239B (en) 2006-06-08 2007-06-08 Decoding system unit
TW96120726A TWI428850B (zh) 2006-06-08 2007-06-08 解碼方法
TW096120896A TWI348653B (en) 2006-06-08 2007-06-08 Decoding of context adaptive binary arithmetic codes in computational core of programmable graphics processing unit
TW96120899A TWI344795B (en) 2006-06-08 2007-06-08 Decoding of context adaptive variable length codes in computational core of programmable graphics processing unit

Family Applications Before (3)

Application Number Title Priority Date Filing Date
TW96120728A TWI354239B (en) 2006-06-08 2007-06-08 Decoding system unit
TW96120726A TWI428850B (zh) 2006-06-08 2007-06-08 解碼方法
TW096120896A TWI348653B (en) 2006-06-08 2007-06-08 Decoding of context adaptive binary arithmetic codes in computational core of programmable graphics processing unit

Country Status (2)

Country Link
CN (4) CN101072353B (zh)
TW (4) TWI354239B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI650164B (zh) * 2013-05-21 2019-02-11 史克威爾 艾尼克斯控股公司 資訊處理設備,用於控制其之方法及程式
US11733895B2 (en) 2021-03-31 2023-08-22 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
US11748011B2 (en) 2021-03-31 2023-09-05 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8156410B2 (en) * 2008-03-05 2012-04-10 Himax Technologies Limited Fast debugging tool for CRC insertion in MPEG-2 video decoder
US8686921B2 (en) 2008-12-31 2014-04-01 Intel Corporation Dynamic geometry management of virtual frame buffer for appendable logical displays
CN101577629B (zh) * 2009-05-14 2011-05-25 北京邮电大学 组播网络中基于图着色的编码向量动态分配方法
CN101908200B (zh) * 2009-06-05 2012-08-08 财团法人资讯工业策进会 具电源闸控功能的绘图处理系统及方法
US8681162B2 (en) * 2010-10-15 2014-03-25 Via Technologies, Inc. Systems and methods for video processing
GB2488159B (en) * 2011-02-18 2017-08-16 Advanced Risc Mach Ltd Parallel video decoding
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9231616B2 (en) * 2011-08-05 2016-01-05 Broadcom Corporation Unified binarization for CABAC/CAVLC entropy coding
CN103037213B (zh) * 2011-09-28 2016-02-17 晨星软件研发(深圳)有限公司 布林熵解码器及影像播放系统的布林熵解码方法
CN108391128A (zh) 2011-11-08 2018-08-10 三星电子株式会社 用于对视频进行解码的设备
EP2831720A4 (en) * 2012-03-30 2015-12-09 Intel Corp PREFERRING MEDIA DEVICES WITH DETERMINED FUNCTIONS
US9451258B2 (en) * 2012-04-03 2016-09-20 Qualcomm Incorporated Chroma slice-level QP offset and deblocking
CN104303506B (zh) * 2012-05-29 2017-08-01 寰发股份有限公司 视频数据的自适应采样点偏移的处理装置及方法
US9196014B2 (en) * 2012-10-22 2015-11-24 Industrial Technology Research Institute Buffer clearing apparatus and method for computer graphics
CN103813177A (zh) * 2012-11-07 2014-05-21 辉达公司 一种视频解码系统和方法
US9947084B2 (en) 2013-03-08 2018-04-17 Nvidia Corporation Multiresolution consistent rasterization
CN107037984B (zh) * 2013-12-27 2019-10-18 威盛电子股份有限公司 数据储存装置及其数据写入方法
US9455743B2 (en) * 2014-05-27 2016-09-27 Qualcomm Incorporated Dedicated arithmetic encoding instruction
DE102015115605A1 (de) * 2014-09-16 2016-03-17 Jeffrey A. Bolz Techniken zur Weiterleitung von Abhängigkeiten in einer API
US10205957B2 (en) 2015-01-30 2019-02-12 Mediatek Inc. Multi-standard video decoder with novel bin decoding
US10250912B2 (en) * 2015-02-17 2019-04-02 Mediatek Inc. Method and apparatus for entropy decoding with arithmetic decoding decoupled from variable-length decoding
CN104869398B (zh) * 2015-05-21 2017-08-22 大连理工大学 一种基于cpu+gpu异构平台实现hevc中的cabac的并行方法
GB2542162B (en) * 2015-09-10 2019-07-17 Imagination Tech Ltd Trailing or leading digit anticipator
US9537504B1 (en) * 2015-09-25 2017-01-03 Intel Corporation Heterogeneous compression architecture for optimized compression ratio
US10467006B2 (en) * 2015-12-20 2019-11-05 Intel Corporation Permutating vector data scattered in a temporary destination into elements of a destination register based on a permutation factor
US10375395B2 (en) 2016-02-24 2019-08-06 Mediatek Inc. Video processing apparatus for generating count table in external storage device of hardware entropy engine and associated video processing method
CN106921859A (zh) * 2017-05-05 2017-07-04 郑州云海信息技术有限公司 一种基于fpga的cabac熵编码方法与装置
CN107277505B (zh) * 2017-05-19 2020-06-16 北京大学 基于软硬件分区的avs-2视频解码器装置
CN107242882A (zh) * 2017-06-05 2017-10-13 上海瓴舸网络科技有限公司 一种b超显示辅助设备及其控制方法
CN114449277A (zh) * 2017-12-08 2022-05-06 谷歌有限责任公司 用于系数代码化的上下文推导的方法和设备
TWI674558B (zh) * 2018-06-12 2019-10-11 財團法人工業技術研究院 數值陣列資料影像處理裝置、數值陣列資料影像處理方法及色碼表產生方法
CN109818855B (zh) * 2019-01-14 2020-12-25 东南大学 一种NDN中支持pipeline模式获取内容的方法
CN110458120B (zh) * 2019-08-15 2022-01-04 中国水利水电科学研究院 一种复杂环境下不同车型识别方法及系统
CN111028135B (zh) * 2019-12-10 2023-06-02 国网重庆市电力公司电力科学研究院 一种图像文件修复方法
CN112582009B (zh) * 2020-12-11 2022-06-21 武汉新芯集成电路制造有限公司 单调计数器及其计数方法
CN114816434B (zh) * 2022-06-28 2022-10-04 之江实验室 一种面向可编程交换的硬件解析器及解析器实现方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7742544B2 (en) * 2004-05-21 2010-06-22 Broadcom Corporation System and method for efficient CABAC clock
EP1599049A3 (en) * 2004-05-21 2008-04-02 Broadcom Advanced Compression Group, LLC Multistandard video decoder
KR100612015B1 (ko) * 2004-07-22 2006-08-11 삼성전자주식회사 컨텍스트 적응형 이진 산술 부호화 방법 및 그 장치
US7800620B2 (en) * 2004-11-05 2010-09-21 Microsoft Corporation Optimizing automated shader program construction

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI650164B (zh) * 2013-05-21 2019-02-11 史克威爾 艾尼克斯控股公司 資訊處理設備,用於控制其之方法及程式
US11733895B2 (en) 2021-03-31 2023-08-22 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
US11748011B2 (en) 2021-03-31 2023-09-05 Silicon Motion, Inc. Control method of flash memory controller and associated flash memory controller and storage device
TWI828085B (zh) * 2021-03-31 2024-01-01 慧榮科技股份有限公司 快閃記憶體控制器的控制方法、快閃記憶體控制器以及儲存裝置

Also Published As

Publication number Publication date
CN101072349A (zh) 2007-11-14
CN101072353B (zh) 2013-02-20
CN101072353A (zh) 2007-11-14
TWI348653B (en) 2011-09-11
TW200813884A (en) 2008-03-16
TW200803526A (en) 2008-01-01
TWI428850B (zh) 2014-03-01
TW200809689A (en) 2008-02-16
CN101072349B (zh) 2012-10-10
CN101072350A (zh) 2007-11-14
CN101087411A (zh) 2007-12-12
CN101072350B (zh) 2012-12-12
TWI354239B (en) 2011-12-11
TW200821982A (en) 2008-05-16

Similar Documents

Publication Publication Date Title
TWI344795B (en) Decoding of context adaptive variable length codes in computational core of programmable graphics processing unit
US7623049B2 (en) Decoding of context adaptive variable length codes in computational core of programmable graphics processing unit
US7656326B2 (en) Decoding of context adaptive binary arithmetic codes in computational core of programmable graphics processing unit
US7626518B2 (en) Decoding systems and methods in computational core of programmable graphics processing unit
US20220138286A1 (en) Graphics security with synergistic encryption, content-based and resource management technology
US20070296613A1 (en) Decoding Control of Computational Core of Programmable Graphics Processing Unit
US10706608B2 (en) Tree traversal with backtracking in constant time
TWI428852B (zh) 著色器處理系統與方法
US10217183B2 (en) System, method, and computer program product for simultaneous execution of compute and graphics workloads
US6507898B1 (en) Reconfigurable data cache controller
US20110243469A1 (en) Selecting and representing multiple compression methods
TW201428678A (zh) 多執行緒處理單元內之可程式繫結
JP2010040041A (ja) 1マイナス・ドット積の値を単一パスで計算する浮動小数点実行ユニット、ならびに関連する方法、装置、デバイス、およびプログラム
CN101807161A (zh) 流式传输直接线程间缓冲区封包的方法、装置、片上网络
EP4163796A2 (en) Atomic handling for disaggregated 3d structured socs
CN117546152A (zh) 用于加速流送数据变换操作的电路和方法
US20230057492A1 (en) Interleaving of variable bitrate streams for gpu implementations
AU739533B2 (en) Graphics processor architecture
US20230195388A1 (en) Register file virtualization : applications and methods
US20220301228A1 (en) Variable width interleaved coding for graphics processing
AU728882B2 (en) Compression
NL2029297B1 (en) Graphics security with synergistic encryption, content-based and resource management technology
US11327687B2 (en) Encoding data arrays
AU744329B2 (en) Data normalization circuit and method
CN117501301A (zh) 对压缩进行纵向扩展和横向扩展