TW200813884A - Decoding of context adaptive binary arithmetic codes in computational core of programmable graphics processing unit - Google Patents

Decoding of context adaptive binary arithmetic codes in computational core of programmable graphics processing unit Download PDF

Info

Publication number
TW200813884A
TW200813884A TW96120896A TW96120896A TW200813884A TW 200813884 A TW200813884 A TW 200813884A TW 96120896 A TW96120896 A TW 96120896A TW 96120896 A TW96120896 A TW 96120896A TW 200813884 A TW200813884 A TW 200813884A
Authority
TW
Taiwan
Prior art keywords
decoding
cabac
bit
module
unit
Prior art date
Application number
TW96120896A
Other languages
English (en)
Other versions
TWI348653B (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 TW200813884A publication Critical patent/TW200813884A/zh
Application granted granted Critical
Publication of TWI348653B publication Critical patent/TWI348653B/zh

Links

Landscapes

  • Image Generation (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Processing (AREA)

Description

200813884 九、發明說明: 【發明所屬之技術領域】 本發明係有關於資料處理系統,尤指可程式之圖形處 理系統及方法。 【先前技術】 電腦綠圖乃是以電腦產生圖像、影像或其他圖形或· 像資訊之一門藝術和科學,目前的繪圖系統多包含數個< 面,例如微軟的Direct3D介面及OpenGL等等,如此可方 執行特定作業系統(如微軟的WINDOWS)的電腦上控讳 諸如圖形加速器或圖形處理單元(graphics prQeessin unit,GPU)等的多媒體硬體,圖像、影像之產生常被稱j 「描繪成像(rendering)」,此類操作的細節一般是由圖形力 速器進行,於三維(3D)電麟圖中,構成場景中物件表迁 ^或物體)之幾何形狀經轉變騎素(圖形單元 :於晝面緩衝區(frame buffer)中,接著顯示於顯; =質二或:群都有與表面外觀有關的特定视^ 義成物件或物:群的描等等’這些可⑽ 度及耗能’現已發展出許‘。== 200813884 車父少的位元數產生較佳影像的品質,例如g 264於準(又 稱為ISO動晝專家群組MPEG-4第十部)是一種^壓縮數 位視訊編碼標準,與MPEG-2相容之編碼相比,Η·264相 容之編碼僅需要差不多三分之一的位元數,即可儲存同樣 視頻品質的視訊,Η.264標準提供兩種熵(entr〇py)解碼程 序’》別疋内谷適應性二進位算術編碼(c〇ntext_adapHve binary arithmetic coding,CABAC)以及内容適應性可變長 度編碼(context-adaptive variable length coding,CAVLC), 關於CABAC,其解碼運算通常是依序處理,需要大量的 计异以得到範圍、補償、内容(c〇ntext)資訊等參數,目前 CABAC解碼結構可滿足消費者的部分需求,但是在設計 上仍有其限制。 【發明内容】 本發明揭露一種内容適應性二進位算術編碼 (context-adaptive binary arithmetic coding,CABAC)之解碼 系統及方法(之後簡稱為解碼系統),運用於圖形處理單元 (graphics processing unit,GPU)内之多執行緒(multithread) 平行計算核心,簡單地說,於一實施例中,本系統包含一 軟體可程式核心處理單元,其内具有一 CABAC單元以執 行一著色器(shader),該著色器可以執行視訊流的CABAC 解碼,並提供一解碼資料輸出。 方法實施例則包括將著色器載入具有CABAC單元之 6 200813884 ^式核心處料元,⑽从執行該著色⑽CABAC解 -視讯流,亚提供一解碼資料輸出。 ,、、、驾本技藝人士於檢視以下圖式及詳細說明之後,當 i f演出其他系統、方法、特徵及優點,所有此等推演的 二、•方法、特徵及優綱屬本發明之範®,受到如附申 言月專利範圍之保護。 【實施方式】 本發明揭示了多種内容適應性二進位算術編碼 —咖酬化c〇_ 系統及方法(之後將通稱為解碼系統),於一實施例中,解 碼系統係内嵌於圖形處理單元㈣沖化pro·—她, GP聊可程式、多執行緒、平行計算核心、之_個或多個執 行單元中,利用軟體結合硬體之方式來達成解碼功能,亦 即視訊解碼是以圖形處理單元編程(pr〇gramming)的内容 (context)配合施行於圖形處理單元資料路徑内的硬體所完 成,舉個例子,解碼運算或方法係由具有擴充指令集 (extended instruction set)的著色器(shader,如頂點著色 裔)、圖形處理單元的執行單元資料路徑、以及用於cabac 處理環境中的自動管理位元流緩衝器及内容模型分析 (context modeling)之附加硬體所共同完成,不像已知的舊 有系統,僅具有單純硬體或單純軟體之CABAC處理方 法’因此或多或少會遇到於先前技術中所提到的問題。 7 200813884 另外,自動位元流緩衝器具備一些優點,例如,一旦 位元"丨L緩衝裔的直接記憶體存取(此㈣mem〇ry咖咖, DMA)引擎得知位元流的位置(位址),便會自動管理位元 流而不需要進一步的指令,這樣的機制就跟傳統的微處理 器或數位U虎處理器(digkai sjgnai pr〇cess〇r,dsp)不同, 位兀流管理不再代表大量的間接費用,再則,透過記錄已 使用的位元數里,位元流緩衝器機制可以偵測和處理錯誤 的位元流。 本案解碼系統的另一個優點是可以減少指令延遲 (patency),因為CABAC解碼是非常連續的動作,不易利用 夕執行緒,因此在各種實施例中就會使用一種轉 減少等待延遲,例如暫存器轉遞㈣ister fGrwardii= ^
步解釋,便疋深管(deep-pipeline)及多執行緒處理器無法以 同一執行緒在每一週期執行指令,有些系統利用一般轉遞 (general fomarding),是藉由檢查前次產生的運算元 (fperand)位址以及指令運算元位址(如果相同,則使用前 次產生運算元),此種一般轉遞需要複雜的比較及多工動 作。在某些解碼純實施射’會使用不同的轉遞方式, 不管是利用前次計算結果(如保留在内部暫存器)還是來 ,運算元的資料,均·指令中的位元(例如總共2位元, 每-運算元使用〗位元)來編碼,藉由這種方式,可以減 少整體的延遲,改善處理器管線的效率。 訊標準部門(intemational 這裡描述的解碼系統可以利用已知的國際電信聯盟通
Telecommunication Union 8 200813884
Telecommunication Standardization Sector,ITU-T) H.264 標 準,根據執行從圖形處理單元晝面緩衝器記憶體或主處理 斋(如中央處理單元(central processing unit,CPU))記憶 體所接收到的一個或多個指令組(如藉由預載入(prel〇ad) 等已知機制或是快取失敗等),多種解碼系統實施例即可進 行運算。 第一圖係圖形處理器系統〗〇〇實施例之方塊圖,其中 介紹了解碼系統及方法,於某些實施方式中,圖形處理器 系統100可為電腦系統,其中,圖形處理器系統1〇〇可包 含由顯示介面單元(display interface unit,DIU) 104驅動的 顯示裝置102以及區域記憶體i〇6 (可包含顯示緩衝器、 晝面緩衝器、紋理緩衝器、命令緩衝器等等),區域記憶體 106可以晝面緩衝器或儲存單元取代,區域記憶體透 過一個或多個記憶體介面單元(mein〇ry interface unit, MIU)110 連接至圖形處理單元(graphics processing unit, GPU)114,於一實施例中,記憶體介面單元11()、圖形處理 單元114、顯示介面單元1〇4三者連接至高速週邊組件互 連(peripheral component interconnect express,PCI-E)扭容之 匯流排介面單元(bus interface unit,BIU)118,於一實施例 中,匯流排介面單元118可以使用圖形位址重繪表(graphics address remapping table,GART),當然也可使用其他記憶 體繪圖機制,圖形處理單元114包含解碼系統200,稍後 會針對此部分作進一步的說明,雖然於某些實施例中將圖 形處理單元元114内的解碼系統200晝成一個元件,但是 9 200813884 圖形處理器系統100的繪 解碼系統200其實可以包含更多 示或未繪示元件。 匯流排介面單元;查拉s R A + 連接至日日片組122 (如北橋晶片 組)或開關,晶片细A人 • 、 匕δ介面電路(interface electromcs),以增強從中央
Unit,C導26(又稱主 / 兀(副W P_SSing / ^ 处里為)接收到的訊號,並分離從 糸統記憶體124進出的^士骑访认 ^ ^ L ㈤的仏旒與從輪出入(I/O)裝置進出的訊 號,雖然這裡提到PCI_E匯户挑
η 排協定,不過也可使用其他 的連接及/或通財絲溝通域理1、㈣形處理單元 114 (如PCI、專用高速匯流排等),系統記憶體124還包 =動軟體la ’可利財央處理單元126將指令組或命 々傳送給圖形處理單元114内的暫存器。 在某些實施例中可再另外配置圖形處理單元,利用 PCI-E匯流排協定或其他通訊協定經由晶片組122連接至 第-圖的其他元件,於—實施例中,圖形處理單元可 以包含第-圖的所有树’ #然亦可剔除、新增或改變某 些兀件’例如’可另外增加連接至晶片多且122的南橋晶片 組0 請參閱第二圖,其為例示處理環境之方塊圖,其中應 用-解碼系統200 ’圖形處理單元114包含一圖形處理器 202,圖形處理器202貝,j包含多個執行單元㈣咖⑽也, EU)和t算核心2〇4,於一實施例中,計算核心2〇4包含内 後於執行單元資料路徑(executi〇n _ _摊,腦別的 解碼系統2GG,該資料雜分配至—個❹㈣行單元, 200813884 圖形處理器202還包含執行單元集合(executi〇n unit p〇〇1) 控制及頂點/串流快取記憶體單元2〇6(以後稱為EU集合 控制單元206)以及具有固定功能邏輯(例如,包含三角 形設定單元(triangle set-up unit,TSU)、柵格-圖塊產生器 (span_tile generator,STG)等)的繪圖管線2〇8,計算核心 204包含聯合的多個執行單元,以符合不同著色器程式的 著色裔任務之計算要求,所述著色器程式可包含頂點著色 器、幾何著色器、及/或像素著色器,使繪圖管線2〇8能 處理資料,计异核心204的著色器能進行解碼系統2〇〇的 大邛刀功能’下面將詳細說明圖形處理器的實施例,接著 說明解碼系統200的細節。 解碼系統可以硬體、軟體、韌體或其組合等方式實施, 於較佳實施例中,解碼系統200可包含硬體或軟體,利用 下列已知技術或其組合,例如:具有邏輯閘而可對資料信 唬進行邏輯功能的離散邏輯電路、具有適當組合邏輯閘的 才寸殊應用集成電路(applicati〇n specific integrated circuit, ASIC )、可程式化閘極陣列(programmable gate array, PGA )、~ 式可程式化閘極陣列(field programmable gate array,FPGA)等等元件。 睛茶考第三圖及第四圖,其為圖形處理器2〇2實施例 %擇元件之方塊圖,如前所述,解碼系統2〇〇可以是圖形 處理器202内的著色器,另外加上擴充指令組及其他硬體 元件,以下將說明圖形處理器202及對應程序之實施例, 雖然第二圖與第四圖並未繪出圖形處理所用到的全部元 200813884 弟—圖,可程式處理環境的中心為計算 心204 ’其包含解碼系統綱並可處理各種 可以執行或映射多種著色器程式,如頂點‘ :”程式等’多執行緒處理器的計算核心綱可以 在早一時脈週期内處理多個指令。
於第三圖中,圖形處理器202的相關元件包含計算核 心綱、紋理過濾單幻02、像素打包元件3〇4、命令流處 理為306、寫回單幻〇8、以及紋理位址產生器則,第三 圖中的EU集合控制單元2〇6也包含頂點快取記憶體及/ 或串流快取記憶體,另外,第三_紋理過濾、單元302提 供紋素(texel)資料給計算核心2〇4 (輸入a及B),於某些 實施例中,紋素資料為512位元資料。 像素打包元件304提供像素器著色輸入(ps輸入,輸 入C和D)給計算核心204,輸入同樣是512位元資料格 式,另外,像素打包元件3〇4向EU集合控制單元206請 求像素著色器任務,而EU集合控制單元206便會提供指 疋執行單元號碼(EU#)及執行緒號碼(執行緒#)給像素打包 元件304,因為像素打包元件304及紋理過濾單元302是 已知的技術,這裡便不再贅述,雖然第三圖顯示像素及紋 素封包為512位元之資料封包,但是可依各實施例根據圖 形處理器202所需的效能改變其大小。 命令流處理器306提供三角形頂點索引給EU集合控 制單元206,於第三圖的實施例中,索引為256位元之資 12 200813884 料,EU集合控制單元206組合從串流快取記憶體接收到的 頂點著色器輸入,並將這些資料送至計算核心204 (輸入 E); EU集合控制單元206亦組合幾何著色器輸入,並將 這些資料送至計算核心204 (輸入F) ; EU集合控制單元 206另外控制執行單元輸入(EU輸入)4〇2及執行單元輸出 (EU輸出)404 (第四圖),換句話說,EU集合控制單元2〇6 控制計算核心204的各輸入流與輸出流。 經過處理之後,計算核心2 〇 4提供像素著色器輸出(p s 輸出,輸出J1與J2)給寫回單元308,像素著色器輸出包 括色彩資訊,例如紅/綠/藍/透明度(RGBA)資訊,關於 實施例中的資料結構,像素著色器輸出可以是兩條512位 凡之資料流,其他實施例亦可使用其他的位元寬度。
除了像素者色器輸出,計异核心204亦會輸出紋理座 標(TC,輸出K1及K2)給紋理位址產生器310 ,其中包 括UVRQ資訊,紋理位址產生器31〇向計算核心2〇4的 L2快取記憶體408發出紋理描述符號請求(τ#請求,輸入 X) ’然後計算核心204的L2快取記憶體4〇8會輸出紋理 描述符號資料(τ#資料,輸出w)給紋理位址產生琴31〇, 因為紋理位址產生器310及寫回單元3〇8是已知的技術, ,此這裡不再贅述,再則,雖然畫中顯示urvq&rgba 是512位元之資料,但是此參數亦可隨不同實施例而做變 化,於第三圖的實施例中,匯流排分成兩條512位元通道, 同時傳輪4個像· 位元RGBA色彩值及128位元 13 200813884 繪圖管線208包含固定功能之圖形處理功能,例如,
因應從驅動軟體發出之繪製一三角形的命令,頂點資訊通 過計算核心204内的頂點著色器邏輯元件以進行頂點轉 換,物件將從物件空間種換成工作空間及/或螢幕空間的 二角开>,二角形通過計异核心204到達繪圖管線208的三 角形设定單元,結合圖元後進行已知的任務,例如產生邊 界盒(bounding box)、楝選(culling)、產生邊緣功能(edge function generation)及三角形層級剔除(triangle rejection)等,接著三角形設定單元再將資料傳遞至繪圖管 線208中具有圖塊產生功能的栅格及圖塊產生單元,因 此,資料物件被分割成圖塊(例如8χ8、16χ16等),並且傳 遞至其他的蚊功能單^,進行深度(z_值)處理,例如 ζ·值之高階(同樣的程序在高階時使用的位缝比低階少) 剔除’織將z-值傳回計算核心綱的像素絲器邏輯元 件’以根據所做理及管線資料騎像素著色器功能,叶 算ί心綱將ί處理之值輸出至位於_管線208内之目 標早兀’目標早7L在各快取記憶體將更_部值之前進行 α測試及模板測試。 請注意計算核心204的L2快取記憶體408以及EU , 合控制單元施之間有512位元的頂 (spm)資料的傳輸(輸入G) 皿1 y乃外,卄异核心204輸出! 個512位_师取記蝴vc)寫人 給:EU集合控制單元施做進一步的處理。出及 請參閱第四圖,其顯示計算核心綱的其他元侧 200813884
關元件’計算核心204包含具有—個或多個執行單元 420a〜4施(以後通稱執行單元伽)的執行單元集合(eu 集合)412,每-個執行單元可以在—個時脈週期内處 理多個指令,因此,執行單元集合化在尖峰時可以同時 f幾乎同時處理多個執行緒,儘管第四圖騎出8個執行 單兀(EU0〜EU7)’但是並不表示限制其數量為8,於立他 實施例可以增加或減少數量,其中至少一個執行單元⑷ 如ETO^Oa)具有-解碼系統2〇〇,詳細說明如下。 計算核心204純含錢、财取衫(me_y _ss MXU)4G6 ’記憶體存取單^撕藉由記憶體介面仲 裁為410與L2快取記憶體4〇8連接,L2快取 從即集合控制單元2〇6接收頂點快取記憶體溢出資料(輸 入G),亚提供頂職取記憶體溢出㈣( =控制單元挪,另外,L2快取記憶體彻從紋理;J 產生器3U)接收紋理描述符號請求(τ#請求,輸入 因應接收_辑求,提供紋理描述符號資料(Τ#資料, 輸出W)給紋理位址產生器31〇。 、 記憶體介面仲裁器410提供了區域視訊記憶體(如金 面緩衝器或區域記憶體觸)的控制介面,匯流排介面ς π 118則提供了系統的介面’其可為pci_E匯流排,纪 體介面仲裁器410和匯流排介面單元118做為記憶體及; 絲記憶體搁之_介面,料些實施财,u快^ f思體408藉由記憶體存取單元 ° 以及匯流排介面單元118連接,;e::= 15 200813884 會把從L2快取記憶體姻及其他區塊得到的虛擬記憶體 位址轉換成實際記憶體位址。 此體;I面仲裁$ 41〇提供L2快取記憶體的記憶體 存取(如讀/寫存取),可提取指令/常數/資料/紋理、 直接記憶體存取(如載入/儲存)、索引暫存存取、暫存器 祕出、頂點快取記體内容溢出等等。 , ^算核心204還包含執行單元輸入(EU輸入)402和 _ ^仃單兀輸出(EU輸出)姻’分別用於提供執行單元集 “12的輸入以及接收執行單元集合412的輸出,執行單 ^輸入搬和執行單元輸出404可以是交換開關(刪sbar) 或匯流排,或是其他已知的輸人及輸出機制。 ^執行單元輸入402從EU集合控制單元獅接收頂點 者色器輸人(輸人E)以及幾何著色II輸人(輸人F),、缺 後將資訊提供給執行單元集合M2,讓各執行單元42〇去 處理;另外’執行單元輸入4〇2接收像素著色器輸入(輸 • 及D)及紋素封包(輸人a及B),並將這些封包傳 运至執行單元集合412 ’讓各執行單it 42G去處理;再者, 執行單元輸入402從L2快取記憶體4〇8 取),織在錢時將处資訊提供給執行 第四圖實施例的執行單元輸出404會分成偶輸出4〇4a 和可輸出404b,執行單元輸出4〇4和執行單元輸入搬一 樣可為交換開關或匯流排,或是其他已知的架構,執行單 兀偶輸出404a處理偶執行單元伽、撕、條、 的輸出,喊行單元奇輪處理奇執行單元働、 16 200813884 4施、鹽、观的輸出,總而言之,兩 他和娜共同接收執行單元集合化的輪出,如= 及刪A資料,這些輪出可傳回L2快取記憶體猶,或= 從計异核心、2G4經由:η及j2輸出至寫回料 γ 由Κ1及Κ2輸出至紋理位址產生器31〇。 或疋! 4 ^行單元集合412的執行單元流通常包含數個層級, 如描以容層級、執行緒或任務層級、指
ί任=:Γ每:執行單元420可能准許兩個二内 合八中利用位70旗標或其他機制識別其描缘内容 2這個内容的任務開始之前,從.即集合控制單元寫 二?:資訊可為著色器種類、輸入/輸 各常數= ^ 420 . 21 ^令。於貝_巾,每-執行緒根據程式計數器提取一 EU集合控制單元206類似總任務 (data-driven)紐(如輸人職_了諸、像素、幾貝何= 動 :口執,20内的適當執行緒,舉例來說 ? 制^獅指派-個執行緒給執行單元集合412的執= = 420内的-個空執行緒位置,當—執行緒已開始 戈其他元件或模組(根據著色器種類)所 輪入的貧料會放置在共用暫存緩衝器中。 所 通常圖形處理器202使用可程式頂點、幾何、及像素 17 200813884 緩衝器,不再把這些元件當成具有不同設計及指令組的各 別固疋功月而各別執行或操作這些元件,而是取 合的執仃單70 42Ga、42Gb...42Gn 3己合統-指令組執 订除了執仃單70 42(^(這個執行單元包含解碼系統2〇〇, ,此具有額外的功能)之外,每一個用於程式運算的執行 ^ 420之设計與結構均相同,於一實施例中,每一個執 二單兀42〇可以進仃多執行緒運算,當頂點著色器、幾何 者色器、像素著色器等產生不同的著色器任務,這些著色 器任務將送至個別的執行單元420去執行,於一實 中,解碼系統細可使用一頂點著色器,與其他執行單元 同,例如,執行單元42〇a使用-解碼系統, 乂疋,、他執仃早疋(如第四圖之侧b)所沒有的,因為 碼系統200管理一個或多個對應的内部缓衝器 % 係藉由接線祀及執行單元輸入搬自記憶體存= 元406取得資料。 于取早 當生成了個別的任務,E U集合控制單元2 〇 6 些任務給不_行單元的可職行緒矛^ ^集合控制單元細再管理相關執行緒的釋放,二矛:點 ::’EU集合控制單元施負責指派頂點著色器、幾何 色益及像素著色器的任務給執行單元樣的執行緒 δ己錄相關的任務及執行緒,具體來說,Eu : 施會有所有執行單元樣的執行緒及記憶體的= 裡不多做說明),EU集合控制單元施會乂 緒指派給哪—個任務使用、知道哪—個執行緒的任 18 200813884 要釋放、知道佔用多少的共用暫存器檔案記憶體 (register file memory register)、知道每一個執行=—:器 可用空間。 丁早兀有多少 因此,如果已將一個任務指派給一個執行的一 420a ’ EU集合控制單元2〇6會將這個執行緒如 中,然後將全部的共用暫存器播案記憶體減去每 '綠 緒用掉的暫存器檔案機體(f00tpring)數量 j執行 著色器、幾何著色器及像素著色器的狀 一個著色純段可以有不_機體大小,例如,^ 器執行緒可以要| 1〇個共用暫存器檔案暫存二^色 色器執行緒可以僅要求5個暫存器。 素著 當一執行緒完成其被指派的工作,運 行單元420便會發出一訊號給Eu ^ _仃、,者的執 集合控制單…會更新資源表二= 用,,行緒共用暫存器標案空間的數量 間,當所有的執行緒都處於忙碌中或所n: 案記憶體都已分配完(或是保留的暫存器空間^存= 容納額外的執行緒),則該執行單元420算是已、系:隹 合控制單元206不會再指派新的執行緒給該執^單=集 …母一個執行單元内部亦有一個執行 以管理或標註每-個執行緒是在使时(或了 可用的,就這一點而言,於一者於 丁中)或疋 執行解嶺細的功能時制】=著色器正 止幾何著色器舆像素著色器在此二6可以防 19 200813884 第五A圖說明具有前述圖形處理器202及計算核心 204特徵的執行單元420a,其包含内嵌有解碼系統200的 執行單元資料路徑512,具體來說,第五A圖是一執行單 το 420a的方塊圖,於一實施例中,其包含指令快取記憶體 控制器504、與指令快取記憶體控制器5〇4連接的執行緒 4工希J 506緩衝态508、共用暫存器槽案(comin〇n register
file ’ CRF)51〇、與執行緒控制器5〇6及缓衝器5〇8及共用 暫存裔檔案510連接之執行單元資料路徑(Εϋ data patti, EUDP)512、執行單元資料路徑先進先出、緩衝器(行如β如 t FIFO)514、述部暫存器槽案register , )516 、、屯里暫存态槽案(scalar register file,SRF)518、 貝料輸出控制器520以及執行緒任務介面524,如前所述, 執行單兀420從執行單元輸入4〇2接收輸入,然後提供輸 出給執行單元輸出404。 ^執行,控制器506提供整個執行單元42〇a的控制功 能’包括管理每一個執行緒及判斷功能,例如決定如何執 行t執行緒,EUDP 512包含解碼系統200,可進行各種的 計算,包含像是浮點運算計算邏輯單元㈣hmetie _ umt ’ ALU)、移位邏輯功能等邏輯電路。 口…1料輸出控制器52G可將完成之資料移至某些與執行 接=例如EU集合控制單元2°6的 狄二、 ' —寫回單元308等等,EUSP512傳送「任 Ί i制為520包含儲存部分,以儲存完成的任務(如 20 200813884 2::,分選擇任務,接著根據著 :: 疋的暫存器位置,從丑用蕲六。0认也 μ谷所才日 資料項目,梦德脾心暫存“案510讀出所有的輸出 ' ^目’然後將讀送至執行單元輪出撕。 別符給=!=24^㈣42Ga完成之任務識 栌制置-/、σ拴制 ’任務識別符會通知eu集合 “住:06有一特定執行單元内有執行緒資源,可指派 新的任務給該執行單元(如4施)。 ㈠曰派 實施例中,緩衝器爾(如常數緩衝器)可以分 ^個區塊,每—個區塊有16個128位元水平向量常數 的位置,菩多哭枯田、咬卜卜 J里书数 位詈: 鼻元與一索引存取一常數緩衝器 ^^ 以是包含%位元或接近32位元不具 正負旒的整數常數的暫存器。 7决取。己|^體控制器5〇4是執行緒控制器鄕的介 有執行緒控制器讀取請求(如從指令記憶體 换订著色器碼),指令快取記憶體控制器5〇4會查找 仏戴表(树出),進行擊中/不中⑽/miss)測試,舉個例 子’如果請求的指令位於指令快取記憶體控制器5〇4的快 取此體中則表示擊中,如果所欲請求的指令將從Μ快 取記憶體408或記憶體⑽提取則表示不巾,如果擊中, 而同B心又有攸執行單元輸入4〇2發出的請求,則指令快取 記憶體控制器504即可同意請求,這是因為指令快取記憶 ,控制器504的指令快取記憶體只有一個讀寫埠,而執行 單7G輸入4〇2具有最高之優先權;相反地,如果不中,而 21 200813884 L2快取記憶體408内有可取代的區塊並有空間存在EUm> FIFO 514 ’則指令快取記憶體控制器504可同意請求。於 一實施例中,指令快取記憶體控制器504的快取記憶體包 含32組,每一組有4個區塊,每一個區塊帶有2位元狀態 訊號,可代表三種狀態,分別是無效、載入、或有效狀態, 在區塊載入L2 f料之前,區塊是「無效」狀態,當等候 L2資料日守,疋「載入」狀態,當完全載入L2資料時,則 成為「有效」狀態。
透過fUDP路徑512可對述部暫存器槽案516進行讀 寫’執行單元輸人4G2做為進入資料與執行單it 42〇a的介 面,於一實施例中’執行單元輸人402包含一 8項目先進 先出緩衝器以緩衝進入資料,執行單元輸入術亦可將資 料达至指令快取記憶體控制器5〇4的指令快取記憶體及常 數緩衝器。爾’執行單元輸人搬也可保留著色器内容。 執行早兀輸出姻做為將輸出資料從執行 控制單元寫、L2快取記憶體彻、及寫回 早7G 、"面,於一實施例中,執行單元輸出4〇4包含 :4項目絲先崎_,肋接收仲贿求,並緩衝輸 ίί二ί合控制單元2%的資料,執行單元輸出404包 =種功m讀裁齡絲記龍讀取 出寫入請求、EUDP讀/寫請求。 、科輪 共用暫存器檔案510用於儲存輸入 資料’於-實施例中,共用暫存器檀㈣心: ㈣的m X 128位元暫存器播案及一讀一寫和二 22 200813884 埠,一項一寫埠係供EUDP 512使用,用於指令執行啟動 的讀寫存取,偶執行緒共享記憶頁〇、2、4、6,奇執行緒 則共享圮憶頁1、3、5、7,執行緒控制器5〇6配對不同執 行緒的指令,並確認共用暫存器檔案的記憶體沒有讀或寫 备己憶頁衝突。 讀寫埠則供執行單元輸入402及資料輸出控制器52〇 使用,以載入初始執行緒輸入資料以及將最終執行緒輸出 寫至EU集合控制單元資料緩衝器及L2快取記憶體4〇8或 其他模組,執行單元輸入402及執行單元輸出4〇4共享一 讀寫I/O #,於一實施例中,寫入比讀出具有更高的優先 權,512位元輸入資料進入4個不同的記憶頁,以避免將 資料載入共用暫存器檔案510時發生衝突,2位元通道索 引資料與512位元對齊基準位址(aligned base address)— 起通過以指定輸入資料的開始記憶頁,舉個例子,如果開 始通道索引為卜則記憶頁1載入從最低有效位元(least significant bit,LSB)起算的第一個 128 位元,下一個 128 位70則載入記憶頁2,以此類推,假設執行緒基準記憶頁 補償為0,最後一個128位元則載入記憶頁〇,請注意執行 緒ID的兩個最低有效位元用於產生一記憶頁補償,以隨機 排列每一個執行緒的開始記憶頁位置。
CRF暫存器索引及執行緒Π)可用於建立一獨一無二 的邏輯位址’以標籤配對(tag matching)共用暫存器構案51〇 的讀寫資料,舉個例子,位址可以排成128位元,就跟共 用暫存器檔案記憶頁的寬度-樣,ϋ由結合8位元的CRF 23 200813884 暫存器索引以及5仿 13位元位址,每—個二:丁緒1D,可以建立獨-無二的 有兩個犯位元項目(字^行有—個標籤’每一行則 中,並將CRF旁引的母一字元儲存於4個記憶頁 記憶頁補償,個最低有效位元力认目前執行緒的 只補1貝从建立記憶頁選擇。 器檔=對二法可讓不同執行緒的暫存器共享共用暫存 丘用效利用記憶體,EU集合控制單元206記錄
Γ 420子㈣案51G的記髓使用程度,確鋪程執行單 兀420a的新任務時有足夠的空間。 私-目兩執行緒的目標CRF索引佔全部crf暫存器 的大^ ’在執^緒控制器5G6著手進行執行緒及著色器^ ^之4,輸入貢料就應該存放於共用暫存器檔案510中, 田執行、、者執行結束,資料輸出控制器52〇從共用暫存器構 案510讀取輸出資料。 河述執,單元之f施例具有时解碼祕的 EUDP 512,第五B圖說明一 EUDP 512之實施例,EUDP 512 包3暫存斋檔案526、多工器528、向量浮點(FP)單元532、 向里整數异術邏輯(ALU)單元534、特殊目的單元5%、多 工器538、暫存器檔案54〇、以及解碼系統2〇〇,解碼系統 2〇〇包含一個或多個CABAC單元530,可以解碼一個或多 個串流,舉個例子,單一 CABAC單元53〇可以解碼單一 串流,兩個CABAC單元530 (如虛線所示,但為簡潔之 故未繪出其連接關係)可以同時解碼兩個串流等等,為了 清楚說明,之後的敘述僅針對使用單一 CABAC單元53〇 24 200813884 ,解碼祕200之操作’制财推迪超過—紅 單元。 如圖所示,EUDP 512白人# η 已3對應於CABAC解碼單元 530、向量浮點單元532、向量彻單元別、特殊目:單 元536的一些平行資料路徑,每一個單元均可根據接收到 的指令執行對應的運算,暫存器擋案526接收運算元(標 不為SRC1及SRC2),於—實施例中,暫存器 Φ =五A〆圖所示之共用暫存器檔案51〇、述部暫存器播案 5i6、及/或純量暫存器樓案518,請注意於某些實施例 I,亦可使用更多的運算元運算(功能)訊號線% ^元53㈣6接收運算訊號的手段’目前訊號線⑽連 时至多工☆ 528 ’可傳送編碼成指令之當前值,供每一個 p 530〜536進行小整數值的整數運算,指令解碼器(未 提,運算元、運算(功能)訊號、以及目前訊號, 念枓路徑(可以包含寫回階段)末端的多工器538選擇正 路㈣輸出結果’送至暫存㈣案54(), 案540包令一日栌^从 π 飞什时才田 ^目“件’可以是暫存器播案526或其他暫 4、注意’於一實施例中’當來源及目標暫存器包含 =同70件’指令的位元具有來源及目標s件選擇,供多工 為處理來自/送至適當暫存ϋ檔案的資料。 因此’執行單元42〇a可以視為一多階管線(如4階管 :’士,有4個算術邏輯單元)’ CABAC解碼運算於4個 :二中發生’需要延遲好讓CABAC解碼執行緒動作, 牛歹,子,當位元流缓衝器發生向下溢位(underfl〇w)、等 25 200813884 候初始化内容記鋪、隸將位福载人fif〇緩衝器及 sREG暫存ϋ⑽後轉)、及/或處理咖已超過預 檻時間等,可以在執行階段加入延遲。 如前所述’與某些實施例中,解碼系統2〇〇利用單一 執行單元420a同時解碼_位元&,舉個例子,根據_個 擴充指令組^解碼系統可以使用兩個資料路徑(如新增另 CABAC單元530)同時進行兩個串流的解碼,當然也 可解碼較多或較少的串流(那麼就會使賴多或較少的、資 料路徑)’當牵涉到多個串流,某些解碼系統綱並不限二 同時解碼,另外,在某些實施例中’單一 cabac單元娜 可以執行多重同時串流解碼。 於貝施例中,當解碼系統200使用兩個資料路徑、 兩個執行緒便可關時運行,舉個例子,在兩串流解ς實 知例中’限制執行緒的數量為兩個,第一執行緒(如執行 緒〇)指派給解碼系統200的第一記憶頁(即CABAc單 凡=30)’第二執行緒(如執行緒丨)則指派給解碼系統加〇 的第一s己憶頁(即第五B圖的虛線CABAC單元),於某些 實施例中,兩個或多個執行緒可以運行於單一記憶頁,另 外:雖然此處顯示解碼系統2〇〇是内嵌於£11〇1>512,亦可 包含其他的元件,像是EU集合控制單元2〇6内的邏輯電 路。 現已說明執行單元420a、EUDP512、以及CABAC單 元53〇的某些實施例,下面簡單解釋CABAC解碼,然後 说明解碼系統200的一些實施例,通常H.264 CABAC解 26 200813884 碼私序可以包括解析弟一$吾法成分的編碼位元流、初如化 第一語法成分的内容變數及解碼f丨擎、以及二進位化 (binarization),然後,針對每一個二進位解碼,程序還包括 獲得一内容模型(content model)以及二進位解碼各组法成 分’直到獲得有意義的字碼(codeword)配對,更進一+解 釋,解碼系統200解碼語法成分,而每一語法成分可以代 表量化係數、動作向量、及/或預測模式、或其他有關巨 圖塊(macroblock)的參數’用以表示影像或視訊的特殊圖場 (field)或圖框(frame),每一個語法成分可以包含一系列的一 進位符號或二進位值,騎-個二進位符齡被解碼成^ 或1值’解碼系統2〇〇根據輸入二進位符號的發生機率控 制輸出位元長度。 工 已知當某些符號(稱為主要符號)比其他符號更容易 發生時,CABAC編碼器可提供高效率編碼方法,這些主 要符號可以較小位元/符號比進行編碼,編碼器持續⑽ 進入貧料的頻率統計資料,適#地調整編碼演 内容模型^有較高可能性的二進位符號稱為高可能=號 :=symbGl ’ M⑼’㈣他符號則為低可 ΪΓ _: ίsymbo1 ’LPS) ’二進位符號與其内容模型 連結,母―⑽模型對應於LPS機率以及—Mps值。 為了決定每-個二進位符號,解碼系統扇 或接收一對應範圍、補償及肉突y 、 號種類和相鄰圖塊(如目前、付 巨圖塊)決疋的内谷而從複數個可能的環境模型中選擇, 27 200813884 内容辨識符(context identifier)可經由内容模型決定,從而 得到MPS值以及驗解碼程式_碼脾之目前狀態,範 圍則表不一個區間,每經過一次二進位解碼就會縮小一次 範圍。 、
區間分為兩個子範圍,分別對應Mps值和Lps機率, ,範圍及已知内容模型所指定的LPS機率相乘可得Lps子 範,’將範_去LPS子範_可得MPS子範圍,補償 則^決謂碼二進位值的鮮,通f是從編碼位元流中取 出财9位元進行初始化,對於—已知的二進位符號解碼及 内谷模型,如果補償小於MPS子範圍,則二進位值為鹏 值,下-次解碼所使用的範圍便為Mps子範圍,相反地, =進位,則為LPS,將MPS值的反值放在相關的内容模型 *同WF個㈣便設為LPS子範圍,解碼程序的結果 :.、、:連串的二進位值,將用於判斷此串值是否符合有意義 概要敘述解碼系統綱的運算與cabac解碼的關 係’下列敘述提出於CABAC解碼程序_容巾之解碼系 ^的。種7〇件’可將符合實際應用的各種變形列入考 f # ^°下騎使用的許多術語是出自 所、:為了㈣之故不再贅述,除非是有助於瞭解 所述^同程序及/或元件,才會再做進—步之說明。 A圖至第六F圖是說明解碼系統及相關元件 之/圖\其中緣出之解碼系統具有單- CABAC單 -(於第八A圖至第六F圖,所使用之cabac單元 28 200813884 530二解碼系統2⑻互換),因此於實施例中,解碼系統 200可解,單_位元流,同樣的原則可應用至具有多個 CA^AC單元的解碼系統2〇〇,可同時解碼多個(如兩個) 瓜簡單地說,第六A圖是解碼系統200的選擇元件, 第/、=圖則為第六A圖選擇元件加上其他元件的功能方塊 第六C圖則為說明解碼系統細提供的串流緩衝器功 此之方塊圖,第六D圖與第圖是說明解碼系統2〇〇的 内谷圯fe體功能之方塊圖,而第六£圖是說明用於解碼一 巨圖塊的例tf機制之方塊圖,雖然下列敘述是有關巨圖塊 解碼的内容,但是此原則可應用至各種圖塊解碼。 明參閱弟六A圖’解碼系統200包含CABAC單元 530 ’ CABAC單元530具有CABAC邏輯模組66〇以及記 憶體模組650,於一實施例中,CABAC邏輯模組66〇包含 三個模組,分別是CABAC單元530内的二進位化(bind) 模組620、取得内容(GCTX)模組622、以及二進位算術解 碼(BARD)引擎624,BARD引擎624更包含狀態索引 (pStateldx)暫存器 602、MPS 值(valMPS)暫存器 604、碼長 範圍(codlRange)暫存器606、以及碼長補償(c〇dl〇ffset^ 存器608,CABAC單元530的記憶體模組65〇包括巨圖塊 相鄰内容(mbNeighCtx)記憶體610 (亦稱為内容記憶體陣 例(context memory array))、區域暫存器612、總暫存器 614、以及移位暫存器(SREG)•串流緩衝器/直接記憶體存 取(DMA)引擎618 (亦稱為DMA引擎模組,將於第六c 圖中做進一步之說明),另外還有未繪出之暫存器,於—實 29 200813884 施例中,mbNeighCtx記憶體610包含如第六D圖之陣列 結構,之後會有更進一步之說明,記憶體模組650還包含 二進位字串暫存器616。 CABAC單元530與執行單元420a的介面包括目標匯 流排628、兩個來源匯流排(SRC1 632和SRC2 630)、命 令及執行緒資訊匯流排634、以及延遲/重置匯流排636, 目標匯流排628上的資料可以直接或間接(如經由中間快 取記憶體、暫存器、緩衝器、或記憶體)傳送至圖形處理 翁單元114内部或外部的視訊處理單元,目標匯流排628上 的資料可以是微軟的DX API格式或其他格式,這些資料 包含係數、巨圖塊芩數、動作資訊、及/或IpCM取樣或 疋其他貧料,CABAC單元530還包括由位址匯流排638 和貧料匯流排640組成的記憶體介面,從位址匯流排638 得到位址後,便可以藉由從資料匯流排64〇得到的資料進 仃位兀流讀的存取,於—實施例中,資料匯流排64〇上 • ❾胃料可以包括未加密視訊流,其中包括各種訊號參數及 其他貝料與格式,於某些實施例中,可以使用載入—儲存 操作來存取位元流資料。 在開始說明CABAC單元53〇的各元件之前,簡單說 曹 M CABAC ^^it 420a ^ it 苇根據切片(slice)形式,驅動軟體⑽(第一圖)準備 CABAC著色态亚將其載入執行單元4施,該著 色器使用鮮指令組加上BIND指令、gctx指令、以及 RD才曰7可以進行位元流之解碼,因| cmAC單元 30 200813884 530使用的内容表(context table)可以根據切片種類改變, 所以每一切片均要載入,於一實施例中,在發出其他指令 箣’ CABAC著色器執行的第一個指令包含iNT—CTX和 INIT一ADE,這兩個指令使CABAC單元530開始解碼一 CABAC位元流,並將位元流從串流解碼點開始載入F正〇 緩衝為’稍後將說明這兩個指令。 關於解析位元流,從記憶體介面的資料匯流排64〇接 收位元流,然後由SREG串流緩衝器/DMA引擎618進行 秦 緩衝,切片資料解析階段提供位元流解碼,位元流(如nal 位疋流)包括一張或多張圖片,將其切割成圖檔頭(header) 及許多切片(slice) ’ 一張切片通常包含一系列的巨圖塊,於 一實施例中,外部程序(即CABAC單元53〇外部)解析 NAL位元流、解碼切片檔頭、傳送指向該切片資料(如切 片開始處)的指標’硬體(加上軟體)可以從圖形解析圧%^ 位^流m實施例中,CABAC編碼僅出現於切 片資料與巨圖塊,通常,驅動軟體128從切片資料處理位 元流,S為這是應餘式及API提供的功能,指向次 料位置的指標傳遞還牽涉到切片資料的第—位元組位Z (如RBSPbyeAddress)和指出位元流開始或標頭位置士 ^ SREGpt〇的位元補償指標(如一個位元或多個位元),^ * 元流的初始化將於稍後解釋,於某些實施例中,可以利用 ^處理器(如第-圖的中央處理單元126)處理外部程 提供圖片解碼以及切片標頭解碼,與某些實施例中 解碼系統20G的可程式特性,可以於任何階段進行解碼: 200813884 凊爹閱第六C圖,其為CABAC單元530的SREG串 流缓衝1§、/^]\^㈣618賴擇元件部分及其他元件之 方塊圖,其包含·元暫存ϋ 662及664,分別從匯流排 632及630接收SRC1與SRC2值,再傳遞至暫存器咖 及668 ^其他元件則如有關第六A圖之說明,除非說明需 要,為簡潔之故不再贅述,SREG串流緩衝器/DMA引擎 618包含内部位元流緩衝器618七,於一實施例中可為 BigEndian格式之32位元暫存器及_ 128位元暫存器: 驅動軟體發it{的初始化指令於開始時蚊SREG串流緩衝 器/DMA引擎618, -旦啟動,便自動管理戲心串流緩 衝态/DMA引擎618的内部緩衝器618b,SREG串流緩衝 二/DMA引擎618保留待解析位元的位置,於一實施例 中’ SREG串流緩衝器/DMA引擎618使用兩個暫存器, 一個快速32位元正反器與一個較慢512或1〇24位元記憶 體,位元流會使用位元,移位暫存器618a以位元進行操 作,而位元流緩衝器618b以位元組進行操作,可以節省能 源通系移位暫存裔618a運算的指令會使用少許位元(如 \〜3位元),當移位暫存器618a使用超過一位元組的資料, 貧料(位元组片段)將從位元流緩衝器618b傳送給移位暫 存器618a,然後緩衝器指標會減少傳送的位元組數量,當 SREG串流緩衝器/DMA引擎618的DMA引擎偵測到使 用256位元或更多位元時,便從記憶體提取256位元填滿 位兀流緩衝器618b,如此CABAC單元530實行了 一個簡 單的循環缓衝斋(256位元片段X 4),以追蹤位元流緩衝 32 200813884 恭618b並進行填充,於某些實施例中可以使用單一緩衝 器’不過一個循環緩衝器需要更複雜的指標計算來跟上記 憶體的速度。 利用初始化指令達成與内部緩衝器618b互動,稱為 画T—BSTR指令,於一實施例中是由驅動軟體128發出 INIT一 BSTR指令以及其他之後說明的指令,如果已知位元 流位置的位元組位址及位元補償,INIT一BSTR指令將資料 載入内部位元流緩衝器618b,並開始管理程序,每一次呼 秦 叫處理切片資料均會發出下列格式之指令·· INIT—BSTR offset, RBSPbyteAddress 這個指令用於將資料載入SREG串流緩衝器/DMA 引擎618的内部緩衝器618b,SRC2暫存器664提供位元 組位址(RBSPbyteAddress),而SRC1暫存器662提供位元 補償,如此,可以使用下列通用之指令格式: INIT一BSTR SRC2,SRC1, 其中,這個指令中的SRC1以及SRC2及其他訊號是對應 ⑩ 内部暫存器662及664内的值,但是不限於這些暫存器, 於一實施例中,使用256位元排列之記憶體提取來存取位 元流資料,並將其寫入緩衝器暫存器並傳送至SREG串流 , 緩衝器/DMA引擎618的32位元移位暫存器618a,於一 v 實施例中,在這些暫存器或緩衝器進行運算之前,位元流 緩衝器618b内的資料是以位元組方式排列,此資料排列可 藉由排列指令實施,亦稱之為ABST指令,ABST指令會 排列位元流缓衝器618b内的資料,在解碼過程中,排列位 33 200813884 元(如填充位元)最後將被丟棄。 當移位暫存器618a使用資料,内部緩衝器618b便會 填充資料,換句話說,SREG串流緩衝器/DMA引擎618 的内部緩衝器618b類似以3為模(m〇dul〇)之循環緩衝器, 並輸入SREG串流緩衝器/DMA引擎618的32位元暫存 器618a,CABAC邏輯模組660可以使用rEAD指令從移 位暫存器618a讀取資料,READ指令之格式如下: READ DST, SRC1, 其中DST對應於一輸出或目標暫存器,於一實施例中, SRC1暫存器662包含不具正負f虎的整數值n,經過仙仙 ,令,從移位暫存器618a獲得n位元,當從32位元暫存 器618a消耗了 256位元的資料(如解碼一個或多個語法成 分),自動開始提取動作以獲得另一個256位元的資料,將 其寫入内部緩衝器618b的暫存器,接著進人移位暫存器 618a供下一循環使用。 w 。於某些實施例中’如果對應於一符號解碼之移位暫存 器618a的資料已被使用了預定數量的位元或位元組,二 部緩衝器6勵沒有再接收到任何資料,則cabac邏輯模 組660可以經由延遲/重置匯流排_進行延遲,以便執 行其他的執賴(例如與CABAC解碼料無關之執 緒)’像是頂點著色器操作。 使用SREG串流緩衝器/DMA引擎618 # dma 可以減少所需賴_數量,關償記憶體賴(例如, 於某些圖形處理單元中,會到三百多週期),當使用了位元 34 200813884 流’可以請求流入排在後面的位元流資料,如果位元流資 料太少使得位元流緩衝器618b有向下溢位的風險(例如已 知讓訊號從CABAC單元530流至處理器管線的週期數), 可傳遞延遲信號給處理器管線,暫停操作,等候資料到達 位元流緩衝器618b。 蠢
另外’ SREG串流緩衝器/DMA引擎618原本便有處 理錯誤位元流的能力,舉個例子,因為位元流錯誤,有可 能沒有偵測到切片結尾記號,這種偵測錯誤可能會導致解 碼完全錯誤,並用到後來的圖樣或切片的位元,sreg串 流緩衝ϋ/DMA引擎618記錄烟驗元數,如果使用的 位元數大於預設的門檻值(可針對每一切片改變),則結束 處理程序並將除去的信號送到處理器(如主處理器),然後 處理器執行編碼嘗試從錯誤中回復。 /請同時參閱第六A圖與第六㈣,進一步說明caba 單元53〇的功能,尤其是初始化解碼引擎(即bard引含 域組伽)及内容變數’在切片起始處,於解碼對應a 弟-巨圖塊的語法成分之前,初始化内容狀態以及bar 模組624,於-實施例中,驅動軟體i28發出兩個^ mIT—ctx以及INIT_ADE進行這個初始化 们令纽動CABAC解碼模式並初綠 ,或夕_谷表(㈣端儲存或儲存於 是麵),丽_CTX指令可以具有 INIT—CTX SRC2, SRC1 運算元SRC1具有 因應INIT一CTX指令’根據位元位置 35 200813884 與 H.264 巨圖塊參數有關的值:cabac_init_idc、mbPerLine、 constrained—intra_pred一 flag 、NAL—unit—type (NUT)、 MbaffFlag 等,請注意 constrained_intrajpred_flag、 NAL_unitJ;ype (NUT)、以及 MbaffFlag 對應於 H.264 巨圖 塊參數,另外,根據位元位置,運算元SRC2具有下列值: SliceQPY 以及 mbAddrCurr,進一步解釋,執行 INIT_CTX 指令(即初始化CABAC内容表)需要cabac_init_idc以及 sliceQPY (如量化)參數,不過,要初始化整個CABAC # 引擎需要三個指令,即INITJBTSR、INIT_CTX、以及 INIT—ADE,因此,SRC 1及^ SRC2 (如全"部64 4立兀或兩 個32位元)中的可用位元可以傳遞其他用於CABAC相鄰 内容的參數,因此兩個來源暫存器SRC1 662以及SRC2 664可以包含下列值: SRC1[15:0] = cabac—initidc, SRC 1 [23:16] = mbPerLine SRC 1 [24] = constrained—intra_pred—flag ❿ SRC1 [27:25] = NAL—unit—type (NUT)
SRC1[28] = MbaffFlag SRC1[31:29]=未定義 , SRC2[15:0] = SliceQPY • SRC2[31:16] = mbAddrCurr
SliceQPY的值是用於初始化位元流缓衝器618b内之一狀 態機(未繪出)。 雖然前文已討論各種已知之圖形與切片參數,另外提 36 200813884 供一些關於CABAC單元530之參數,於一實施例中, cabac一init—idc的疋義疋針對未編碼為i_picture⑴和切換 I_picture(SI)之切片(I),換句話說,cabac—init_idc只能針對 P、SP以及B切片進行定義,當接收到J和SI切片, cabac—initjdc為預設值,舉個例子,當欲初始化將進46〇 個内谷(如I以及SI切片),可以將cabac—丨仙-说設為3 (因為根據H.264規格’ cabac一init—idc的值只能是〇〜2), 致能2位元指示該切片為I或si。 參 CABAC單元530也可以使用INIT—CTX指令初始化 區域暫存器612以及mbNeighCtx記憶體610陣列結構或 元件,如與暫存相鄰巨圖塊有關之暫存器,請參閱第六D 圖,於一實施例中,mbNeighCtx記憶體610位於圖的上方, mbNeighCtx記憶體610的巨圖塊基準相鄰内容記憶體排列 成一記憶體陣列,以儲存有關巨圖塊列的資料, mbNeighCtx記憶體610包含陣列元素他漸处仏队i,R i,i+l,…119]601,每一個元素可儲存一列12〇個巨圖塊中 籲 的一個巨圖塊(因HDTV為ΐ92〇 χ ι〇8〇像素),目前 mbNeighCtx 603用於儲存目前解碼之巨圖塊,而左側 mbNeighCtx 605用於儲存先前解碼之(左側)巨圖塊,另 , 外,利用指標607a、6〇7b和607c (在第六D圖中以箭頭 • 表不)指向暫存器603、6〇5和陣列元素601,當解碼目前 之巨圖塊日守,解碼之資料儲存於目前的,當 已知CABAC解碼之内容性質時,根據前次解碼巨圖塊時 所蒐集之貧訊來解碼目前的巨圖塊,亦即左侧巨圖塊儲存 37 200813884 於左侧mbNeighCtx 605並利用指標607b進行指向,而上 方巨圖塊儲存於陣列元素[i]中並利用指標6〇7c進行指向。 繼續解釋初始化指令,INIT—CTX指令用於初始化與 目前巨圖塊(如mbNeighCtx記憶體610陣列之元素)相 鄰之巨圖塊有關的上方及左侧指標607c及607b,舉個例 子’左侧指標607b可以設為〇而上方指標可以設為},另 外,INIT一CTX指令還會更新總暫存器614。 關於初始化内容表,因應呼叫INIT一CTX,CABAC單 元530建立一個或多個内容表,亦稱為ctx—TABLE,於 一實施例中,内容表可以是4x460 x 16位元表(8位元給 m,8位元給η,具正負號的值)或其他資料結構,内容表 的每一個項目包含從pStateldx暫存器602及valMPS暫存 器604存取之pStateldx值及valMPS值。 INIT—ADE指令起始化BARD模組624,亦稱為解碼 引擎,於一實施例中,完成INIT一BTSR指令後呼叫 画T—ADE,於執行INIT一ADE指令之後,CABAC單元530 建立兩個暫存器,分別是C0CjlRange暫存器6〇6以及 codlOffset暫存器608,伴隨下列指令或數值: codlRange = 0x01FE 以及 codlOffset = ZeroExtend (READ(#9)5 #16) 於一實施例中,這些變數可以是9位元數值,關於 codlOffset指令,從位元流缓衝器618b讀取9位元,〇延 伸(zero-extended)則儲存於16位元c〇dl〇fftet暫存器608 中’某些實施例亦可使用其他數值。BARD模組624使用 38 200813884 =存於暫存& 6G6及6G8之數值,以決定要輸出〇或卜 虽一進位解碼完成,這些值將進行更新。 „除了初始化C〇dlRan辟暫存器606以及codloffset暫存 时608,INIT-ADE操作同時初始化二進位字串暫存器 6於貝把例中,一進位字串暫存器616可以是%位 元暫存器,從BARD模組624接收每一輸出位元,當然亦 _ 可使用其他尺寸之暫存器。 、當巨圖塊編碼成I—PCM資料,BARD模組624也會被 初始化’已知I一PCM資料包含像素資料,根據Η·264規格, 亚沒有將轉換或預測模型應用至原始視訊資料,舉個例 子,I一PCM可應用至無損編碼。
已描述與解析位元流及初始化各種解碼系統元件有關 的架構及指令,下面將描述有關二進位化、取得模型資訊 及内容、以及根據模型及内容進行解碼的程序,通常 CABAC單元530用於取得解析語法成分(Syntax eiement, SE)所有可能的二進位化,或是經由模組620及BIND ⑩ 指令至少取得模型資訊,CABAC單元530更經由GCTX 模組622及GCTX指令得到已知語法成分的内容,並根據 内容及模型資訊,讓BARD模組624及BARD指令實行運 ^ 算解碼,實際上,呼叫GCTX/BARD指令、輸出一位元給 ^ 二進位字串暫存器616直到發現配合已知語法成分之有意 i子碼專兩步驟會構成一迴圈,亦即於一實施例中,每一 次解碼二進位值之後,提供對應的解碼位元給二進位字串 暫存器616,接著GCTX模組622讀回二進位字串暫存器 39 200813884 的内容,直到發現配合的字碼。 這裡更詳細解釋使用單一 CABAC單元530的解碼系 統架構,請再同時參閱第六A圖與第六B圖,驅動軟體 128發出的BIND指令會致能611^1)模組62〇,於一實施例 中,BIND指令具有下列格式: BIND DST,#Imml6, SRC1, 其中,DST對應於DST暫存器652,#Imml6對應於16位 元目前數值,而SRC1對應輸入暫存器SRC1 662,BINd 運异的輸入包含語法成分(SE,包含16位元目前數值imm) 以及内容區塊種類(ctxBlockCat),語法成分可以包含任何 符合H.264規格的語法成分種類(如MB1ypeIia、
MBSkipFlagB、IntraChromaPredMode 等等),哞叫 BIND 指令會使得驅動軟體128從儲存在記憶體(如晶片上記憶 體或遠端記憶體)中的表單(或其他資料結構)讀取語法 成分’並取得語法成分索引(SEIdx),該語法成分索引用於 存取其他表單或資料結構,以獲得各巨圖塊參數。 於一實施例中,DST暫存器652包含32位元暫存器, 具有下列格式:位元〇_8 (ctxIdxOffset)、位元1卜18 (maxBinldxCtx)、位元 21-23 (ctxBlockCat)、位元 24-29 (ctxIdxBlockCatOffset)、以及位元 31 (bypass flag),這些數
值(如 ctxIdxOffset、maxBinlndxCtx 等等)會傳送至 GCTX 模組622用作内容模型分析之用,在此實施例中,任何未 定義的剩下位元可以是〇,根據語法成分索引與 ctxBlockCat的配對結果,ctxIdxBlockOfftet可從遠端儲存 200813884 或儲存於晶片上記憶體之表單或其他資料結構獲得,表一 說明一非限定實施例之表單内容: 表一
codeNum (k) Coded_block_pattem Intra一4x4 Inter 0 47 0 1 31 16 2 15 1 3 0 2 4 23 4 5 27 8 6 29 32 7 30 3 8 7 5 9 11 10 10 13 12 11 14 15 12 39 47 13 43 7 14 45 11 15 46 13 16 16 14 17 3 6 18 5 9 19 10 31 20 12 35 21 19 37 22 21 42 23 26 44 24 28 33 25 35 34 26 37 36 27 42 40 28 44 39 29 1 43 30 2 45 31 4 46 32 8 17 33 17 18 34 18 20 41 200813884 35 20 24 36 24 19 37 6 21 38 9 26 39 22 28 40 25 23 41 32 27 42 33 29 43 34 30 44 36 22 45 40 25 46 38 38 47 41 41 如果接收到未定義之ctxBlockCat,則CABAC單元530 可以將未定義參數當成0,所以將ctxIdxBlockOffset當成0 值0 呼叫BIND也會使得重置信號(Rst_signal)從BIND模 組620輸出至BARD模組624,說明如下。
為了說明BIND模組620的各種輸入與輸出,這裡提 出至少一實施例說明BIND模組620之操作,哞叫BIND 模組620,則BIND模組620取出語法成分,並且經由軟 體k供a吾法成分索引(SEIdx),利用語法成分索引, 模組620查找表單以獲得maxBjnidxCtx、ctxIdxOffset、以 及bypassFlag的對應數值,這些查找值會暫時儲存在dst 暫存器652的預先定義位元配f,另外,利用語法成分索 亏丨及ctxBlockCat,BIND模組620進行第二次表單查找(如 從遠端記鍾或⑼上記憶體)频得。刷畑⑽㈣的 數值,第一次的查找值也是暫時儲存在DST暫存器 中,因此決定值將用於建立DST暫存器、652,做為^位 元數值輸出目標。 42 200813884 針對某些語法成分,可利用其他的資訊(語法成分與 ctxBlockCat除外)開始Η·264解碼操作,舉個例子,像是 SigCoeffFlag以及lastSigCoeffFlag、儲存在巨圖塊鄰近内 容記憶體610的陣列元素裡的值、以及輸 入ctxBlockCat值等巨圖塊參數,均可用來決定巨圖塊是圖 場編碼或是圖框編碼,根據圖形是圖場編碼或是圖框編 碼,則SigCoeffFlag以及lastSigCoeffFlag會有不同的編 碼,於某些實施例中,即使是不同的語法成分,這些旗標 . 也使用同樣的語法成分數目,然後利用 mb—field一decoding—flag ( mbNeighCtx[l]攔位)來區分。 除了上述所列有關BIND模組620的功能,於第六b 圖中,BIND模組620還與binldx暫存器654、多工器單元 656及/或轉遞暫存器666及/或668 (在第六c圖中為 F1)連接,多工器單元650會根據各輸入提供輸出SRC1 (如暫存器SRC1内的值)給GCTX模組622。 至於標示為F1的轉遞暫存器,當BIND (或GCTX) 鲁 指令產生結果,便會將結果寫入目標暫存器(如DST暫存 器652)及/或標示為F1的轉遞暫存器666及668,一個 指令及對應的模組(如GCTX模組622或BARD模組624) . 疋否使用轉遞暫存器666及668會於指令中用轉遞旗標表 ^ 示’代表轉遞暫存器666及668的符號有F1 666 (使用轉 遞來源1之值,於一實施例中可以指令中的位元26表示) 以及F2 668 (使用轉遞來源2之值,於一實施例中可以指 令中的位元27表示),資料會分別轉遞至GCTX模組622 43 200813884 以及BARD模組624 ’說明如下。 W面已說明BIND模組620及相關程序,這裡將戈 關於GCTX模組622及GCTX指令如何取得已知模型的 容及二進位索引,簡單地說,GCTX模組622的輪入包含 maxBinldxCtx、binldx、以及 CtxIdx〇ffset,GCTX 模組 使用CMdxOffset及binldx值來計算CtxIdx之值(為輪出, 代表内容索引)。 ^ GCTX指令的範例格式如下: • GCTX DST,SRC2, SRC 1, 其中SRC1對應於多工器單元656的輸出值並儲存於暫存 器SRC1 662,而SRC2對應於DST暫存器652的輸出值 並儲存於暫存器SRC2 664,而DST對應於目標暫存器, 於一實施例中,各暫存器具有下列數值: SRC1 [7:0] = binldx ;如果目前語法成分包含一 codedBlockPattern,則SRC1的值(從多工器單元656 輸出,並做為GCTX模組622的輸入)可以是binidx * 暫存器654的值。 SRC1 [15:8]可以是 levelListldx (當計算 sigCoeffFlag、lastSigCoeffFlag)或是 mbPartldx (當 ’ 計算編碼區塊圖樣之Ref_Idx或binldx),亦即,當 . 語法成分是 sigCoeffFlag 或 lastSigCoeffFlag 時,多 工器單元656可以用來傳送levelListldx。 SRC1 [16]可以包含iCbCr旗標,當其值為0時,區 塊為Cb色度區塊,另外,SRC1 [16]可以包含L0/L1 44 200813884 值,如果是L0,其值為0,熟悉此技藝者從本發明 的内容可知L0/L1是用於運動補償預測之圖形參考 列表(LO = listO, LI = listl )。 SRC1 [21:20] = mbPartitionMode SRC2 [8:0]二 ctxIdxOffset SRC2 [18:16] = maxBinldxCtx SRC2 [23:31] = ctxBlockCat SRC2 [29:24] = ctxIdxBlockOffset 畚 SRC2 [31] = bypassFlag 再來,DST包括GCTX模組622的輸出並具有下列值: DST [15:00] = ctxldx DST [ 23:16] = binldx DST [ 27:24] = mbPartldx DST [29:28] = mbPartitionMode DST [30] = L0 ^ GCTX模組622可以與轉遞暫存器互相作用,因此使 用轉遞暫存器的指令格式可以是GCTX.F1.F2,其中jq及 F2分別代表使用轉遞暫存器666及668,亦即,在指令編 碼中有兩位元(F1及F2)’如果缺少一個或兩個轉遞旗標, 則代表丨又有使用轉遞暫存器,如果有設定這些位元(例如 δχ成1),則代表使用轉遞暫存器之值(内部產生值),否 則’就使用來源暫存器之值’因此,這個轉遞暫存器的护 徵在於當最早的指令發出時,將提供編譯器提示,:果: 有使用轉遞,職令在來源暫存器可能會遇到寫後^ 45 200813884 (read-after-write)風險。 對於GCTX指令,如果設定了重置信號Rst_Signal, 貝1J SRC1的值為〇 ’如果(F1 &rst—啦皿1),則srci的值會 是GCTX模組622内的值加卜不然SRC1會是從執行單 兀暫存器得到的binldx值,BIND模組620的輸出可以做 為SRC2的值,供GCTX及BARD指令使用,此時要等到 BARD指令使用轉遞暫存器後才會發出BIND指令,更進 一步解釋,Rst—Signal以及F1轉遞訊號將結合成一單一訊 _ 唬{F1,reset) (2位元訊號),表示輸入GCTX模組622的 SRC1值是包括binldx值或轉遞值,提供Rst—Signal的另 一個作用是清空並重置二進位字串616,並將binIdx暫存 器654重置為〇。 繼續討論GCTX模組622以及取得内容資訊,於一實 施例中,表二及表三列出㈣訊分別對應於地而迪⑶ 記憶體610及目前mbNeighCtx暫存器6〇3,如前所述,目 ^mbNeig,hCtx暫存器603包含目前巨圖塊的解碼輸出結 果,δ目鈾巨圖塊處理結束時,發出CWRITE指令,將目 前mbNeighCtx暫存器、603的資訊複製到心阶啡^記憶 體610陣列的對應位置,這個複製的資訊稍後會做為上方 - 鄰近值。 表二 transform size 8x8 flag mb field decode flag mb skip一flag_ Intra—chroma_pred—mode mb tvoe —數(位元) — 0 1 2 2 4:3 7:5 參數 46 200813884
codedBlockPattemLuma 4 11:8 codedBlockPattemChroma 2 13:12 codedFlagY 1 14 codedFlagCb 1 15 codedFlagCr 1 16 codedFlagTrans 8 24:17 refldx 8 32:25 predMode 4 36:33 表三 參數 位元數(位元) transform_size_8x8_flag 1 0 mbfielddecodeflag 1 1 mb一skip_flag 1 2 Intra_chroma_pred_mode 2 4:3 mbQpDeltaGTO 1 88 codedBlockPattemLuma 4 11:8 codedBlockPattemChroma 2 13:12 codedFlagY 1 14 codedFlagCb 1 15 codedFlagCr 1 16 codedFlagTrans 24 87:64 refldx 16 52:37 predMode 8 60:53 mb_type 3 63:61 於一實施例中,codedFlagTrans分成三段,例如前4 位元與ctxBlockCat為0或1時有關,較高4位元則與 ctxBlockCat為3或4有關,較高4位元還分成兩個部分, 較低2位元用於iCbCr二0時,而另2位元則用於iCbCr二1 時,預測模式(predMode)有三種選項:predLO == 0、predLl =^ NiPred = 2 ° 第六E圖顯示表二與表三中的refldx之一結構實施 47 200813884 例,refldx為重建圖形之用 構對記憶體及邏輯電路提供了最佳圖的形;=:個結 refldx結構包括第—列的巨輯6〇9'\圖 (押油㈣611 (圖中有4個)、L0/Ll值613、以^ = L0和L1值都有對岸的德户— 及母個 = 疋值_(大於0)615和 ^ ; ,雖然需要的是底部列的巨圖塊,通常 萬要存取的是上方相鄰巨圖塊_,巨圖塊 參
:,形成4個巨圖塊分割區611,對於每—個二 確疋觀613的值,但不是真實值,即觸L0及L1的 值是i或大於!即可,於—實施例中,藉由儲存2位元⑽ 仍和如617完成判斷,這2位元用於計算語法成分 (refldx)。 更進-步轉滅dx結構的域,便是進行了兩次最 佳化,如果進行一次最佳化,只有保留2位元(雖然參考 值通常比較大),CABAC單元530解碼refldx不需要其他 位元,解碼完整值並保留在執行單元暫存器或記憶體(如 L2快取記憶體408)中,第二次最佳化則只保留4個元素 (2個左侧及2個上方),這4個元素再次利用,並由 CWRITE指令將最終值寫入相鄰元素,因為目前 mbNeighCtx暫存器603只需要保留16位元,左側 mbNeighCtx暫存器605以及陣列010的上方mbNeighCtx 元素601只需要8位元,所以可節省記憶體,同時因為不 再元整地计异解碼參考值,改以較少位元的布林(B〇〇iean) 運算代替,亦節省了計算邏輯電路。 48 200813884 表四顯示包含的mb_type : 表四
Mb_type 名稱, 4fb000 SI 4Ab001 I_4x4 or I一NxN 4'b010 工 16x16 4,b011 I_PCM 4,bl00 P_8x8 4,bl01 B—8x8 4'bllO B_Direct_l6x16 4,blll Others 另外也可使用第六B圖沒有晝出或討論的暫存器,像 是mbPerLine ( 8位元,不具正負號)、mb—qp—delta ( 8位 元’具有正負號)、以及mbAddrCurr ( 16位元,目前巨圖 塊位址),對於AddrCurr,提供1920χ 1〇8〇陣列,雖然只 需要13位元,但某些實施例可使用16位元以增進16位元 計算效能。 總暫存器614也儲存有從上述暫存器得到的值(如 mbPerline、mb AddrCurr、以及 mb—qp—delta),亦即這些儲 存在總暫存器614的值也會儲存在其他暫存器,有助於硬 體設計’於一實施例中,總暫存器614包括32位元暫存器, 内部包括對應於 mbPerline、mb AddrCurr、以及 mb qp delta 的值,其他還有對應於NUT、MBAFF_FLAG、以及 chroma—format—idc 的值。 可以利用INSERT指令更新總暫存器614的各攔位, INSERT指令的格式可為: INSERT DST, #Imm,SRC1 49 200813884 於此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可以下式表示:
# DST = (DST & NOT(sMask)) I SDATA 利用INIT_CTX指令也可以將至少某些欄位(如NUT (NAL—UNIT—TYPE)、C (constrained—intra」)red—flag)、 MBAFF FLAG、mbPerLine、以及 mbAddrCurr)的值寫入 /初始化總暫存器614。 於一實施例中,區域暫存器612包含32位元暫存器, 其中包括對應於 b、mb_qp_delta、numDecodAbsLevelEql、 以及numDecodAbsLevelGtl的攔位,使用INSERT指令可 _ 以更新這些攔位,初始化區域暫存器612後,b = 0、 mb—qp—delta = 0、numDecodAbsLevelEql 二-1、以及 numDecodAbsLevelGtl = 0,使用下列格式的指令可以進行 • 初始化: , CWRITE SRC1, 其中,SRC 1 [15:0] = mbAddrCurr,CWRITE SRC1 更新總 暫存器614的mbAddrCurr攔位,CWRITE指令還有其他 的功能’於間早讨論相鄰元素結構及如何使用於解碼程序 50 200813884 後,將再做進一步的說明。 在CABAC解碼程序中,根據相鄰的巨圖塊(例如左 側及上方)預測及/或模式分析語法值,下面介紹幾種方 法,描述CABAC單元530如何決定左侧及上方相鄰巨圖 塊,以及決定這些巨圖塊是否存在,符號解碼階段利用 mbPerLine參數,如前所述,解碼程序使用鄰近值(如上 、 方或左側的巨圖塊或區塊),於一實施例中,BARD模組 624利用目前巨圖塊號碼及一列巨圖塊數量(mbperL㈣計 參 异下列式子,以计异出上方巨圖塊位址並確定左侧及上方 巨圖塊是否存在。 舉個例子,要判斷相鄰巨圖塊(如左侧巨圖塊)是否 存在(有效),必須進行一運算(如mbCurrAddr % mbPerLine),檢查結果是否為〇,於一實施例中,進行下 列算式: mbCurrAddr - x mbPerLine :[mbCurrAddr VombPerLine) mbCurrAddr mbPerLine
mbCurrAddr代表對應於待解碼二進位符號的目前巨圖塊 位置,mbPerLine代表每一列的巨圖塊數量,上面的計算 用到一除法、一乘法、以及一減法。 再進一步說明BARD模組624的解碼機制,請參閱第 六F圖,其顯示待解碼之圖形(16 χ 8巨圖塊,因此 mbPerLin=16),如果解碼巨圖塊35 (mbC雲nt為35, 巨圖塊36還未完全解碼),需要前次解碼之上方巨圖塊 及左側巨圖塊34的資料,上方巨圖塊的資訊可從 200813884 mbNeighCtx[i]獲得,其中 i = mbCuirent % mbPerLine,在 這個例子中,i = 35% 16 = 3,當目前巨圖塊解碼完畢,利 用CWRITE指令更新左侧mbNeighCtx暫存器605及陣列 中之 mbNeighCtx[i] 601。 於另一例子中,考慮下式: mbCurrAddr s [〇: maxMB-\] 其中,maxMB 是 8192 ’ 而 mbPerLine = 120,於一實施例 中,可利用乘法及由儲存於晶片上記憶體的表單(如12〇χ 11位元表)查找之(Ι/mbPerLine)進行除法,如果 mbCurrentAddr是13位元,則使用13 χΐΐ乘法器,於一實 施例中’將乘法運异的結果取整數,儲存較上方的位 元,進行13x7的乘法運算,儲存較低的13位元,最後進 行13位元的減法運鼻以決定 a ,整個運算程序需要2 個週期,可以儲存這個結果給其他運算使用,每當 mbCurrAddr改變就計算一次。 於某些實施例中不進行模數(modulo)運算,改以執行 單元(如執行單元420a,420b等等)内的著色器邏輯電路 提供第一個mbAddrCmr值,將其指派給第一切片之第一 行’舉個例子,這個著色器邏輯電路可以進行下列計算: mbAddrCurr = absoluteMbAddrCurr - n x mbPerLine 因為 Η·264 彈性巨圖塊順序(flexible macr〇bl〇ck ordering , FMO)模式有些複雜的相鄰結構,為了處理這些模式,要新 增解碼系統200的著色器以計算左侧/上方可用性,並載 入CABAC單元530的一個或多個暫存器,如果不載入 52 200813884 (off-loading)CABAC單元530,當致能所有η·264模式支 援符號解碼,可降低硬體的複雜性。 CWRITE指令從目前mbNeighCtx 603的適當欄位複製 到上方mbNeighCtx[]601以及左側mbNeighCtx[](如陣列 610中的左侧巨圖塊),根據mBaffFrameFlag (MBAFF)是 否設定以及目前與先前巨圖塊的解碼方式是圖場解碼或圖 框解碼專因素’將資料寫入特定的上方m]3NeighCtx[] 601 以及左側 mbNeighCtx[],當(mbAddrCurr % mbPerLine 二= . 0),左侧mbNeighCtxLeft 605則標記為不存在(如初始化 成0) ’可以利用CWRITE指令「移動」111|5]^6丨811(1^記憶 體610、區域暫存器612、以及總暫存器614的内容,舉個 例子,CWRITE指令移動mbNeighCtx記憶體610的相關 内谷到弟i個巨圖塊的左侧及上方區塊(如j^NeighCtxfi] 或目前巨圖塊),並清空mbNeighCtx暫存器603,如前所 述,與mbNeighCtx記憶體相關的兩個指標是左侧指標6〇7b 及上方指標607c,CWRITE指令之後,上方索引增加1, ❿ 而目前巨圖塊的内容則移至陣列的上方位置及左侧位置, 上述糸統可以減少記憶體陣列的讀取/寫入埠的數量至一 個讀取/寫入埠。 , 利用1NSERT指令可以更新mbNeighCtx記憶體610、 _ 區域暫存器612、以及總暫存器614的内容,舉個例子,
使用 INSERT 指令(如 INSERT #ImmlO,SRCl)可以寫入目前巨圖塊,之後的運算不會影 響左侧指標607b及上方指標6〇7c (只寫入目前位置)。 53 200813884 INSERT指令以及BARD模組624的更新將寫入 mbNeighCtx記憶體610的目前mbNeighCtx陣列元素6〇ι, 左侧指標607b指向記憶體610的元素,這個元素與相鄰的 陣列元素(相鄰於 mbNeighCtx 601,例如 mbNeighCtx[i-i]j 相同。 上面說明了有關取得内容及模型資訊,接下來說明 BARD模組624以及如何根據内容及模型資訊進行算述解 碼,BARD模組624受BARD指令操作,BARD指令的格 式可為: ° BARD DST,SRC2, SRC 1, 提供的一進位鼻術解碼彳呆作中’每一個二進位解碼形成單 一位元輸出,輸入參數如下: SRC1 = biuldx/ctxldx,這是 GCTX 模組 622 的輪出 SRC2 = bypassFlag,這是 BIND 模組 620 的輸出 如果使用轉遞暫存器,格式可為BARD.F1.F2,其中jq及 F2代表轉遞暫存器666及668,如果缺少一個或兩個轉遞 旗標,這表示沒有使用對應的轉遞暫存器,如前所述, BARD模組624會接收RST—Signal,而且在接收到訊號 後,會保留RST_Signal等到第一次呼叫BARD指令,然 後清空訊號。 … 運算時,BARD模組624從GCTX模組622接收内容 索引(ctxldx)值以及指向編碼位元流的目前位元解析位置 之指標(binldx),BARD模組624使用從c〇dl〇ffset暫存器 608以及codlRange暫存器606接收到的補償及範圍值,以 54 200813884 ^錄解碼引擎的目前區間(補償、補償+範圍)狀態、,BARD 松組624使用内容索弓丨來存取内容表(ctX-Table),依次 使用内谷表存取目前的可能性狀態pStateIdx及MPS值, pstateldx肖於讀取(從儲存在遠端記憶體或晶片上記憶體 之表單)LPS子範圍值、次一 Mps值、以及次一 Lps機 率0
根據MPS值的狀態、次一範圍及可能性資訊,BARD 模組624计异目前二進位符號的MPS值,BARD模組624 輸出一個二進位符號(位元或二進位數值,例如bG、br·· bn)給—進位字串暫存器616,然後針對下一個二進位值的 相同或不同内容重複這個程序,路徑如圖中所示的從二進 位字串616暫存器到GCTX模組622的反饋接線658,根 據MPS值的選擇,BARD模組624亦更新補償、範圍值、 以及次一二進位數值的可能性狀態,另外,BARD模組024 將目前MPS及可能性狀態寫入内容表,供後來的内容使 用。 關於轉遞暫存器666及668的使用,如果利用信號通 知轉遞’可以延遲或不延遲指令,舉個例子,從bind模 組620轉遞至GCTX模組622沒有延遲,所以在下一週期 即發出GCTX指令;而從GCTX模組622轉遞至BARD 模組624會用掉4個週期,如果在週期j發出GCTX指令, 則可能在週期(j+5)發出BARD指令,中間沒有指令的空位 則填入4個NOP ;從BIND模組620轉遞至BARD模組 624也沒有延遲;從BARD模組624轉遞至GCTX模組622 55 200813884 的話,如果在週期j發出BARD指令,則在週期(j+5)發出 GCTX指令;如果保留第二個二進位字串而用切換的方 式,從BARD模組624轉遞至BIND模組620也沒有延遲, 要保留第二個二進位字串,可能發出bard至bard ‘々成為;又有延遲的繞走(bypass)方式。
^應強調的是,本發明所舉的上所實施例或「較佳」實 施例僅為可能之施行範例,僅用以清楚說明本發明之原 理二即便對上述實補施以、變化和修飾,然皆不脫此中所 述系統及綠之精神和酬,所有此等修似變化應涵括 於本案之範圍内,受如时料利範關護。 【圖式簡單說明】 這裡所揭露實施_各方觀點可參考下觸式以獲得更深 入之瞭解1式巾的元件並未限定其尺寸_,僅用於清 ^明本發明之原^各圖中相㈣標號代表相對應的部 第-圖··圖形處理器系統實施例之方塊圖,其中可施 種解碼系統(及方法)實施例。 财處理環境之方㈣,其+可施行多種解碼系 第三圖:第二圖例示處理環境内之選擇元件方塊圖。 第四圖:第二圖與第三圖例示處理環境内之計算核心方塊 56 200813884 圖 —’其t可施行多種解碼系統實施例。 第五a圖:第四时算核心内 —,其t可施行多種解碼純實施例。70、梅元件方塊第五B圖:執行單元資料路之 解碼系統實施例。 鬼圖,其中可施行多種 ^六A圖··第五圖所示解碼系統實施例之 =六B圖:第六A圖解碼系統之方塊圖。‘ 弟六C圖:第六a圖解碼系統的位元流 塊圖。 第六D圖··第六A圖解碼系統之内容記 暫存器實施例之方塊圖。 第六£圖··應用第六A圖解碼系統之巨 例之方塊圖。 第六F圖··利用第六A圖解碼 機制之方塊圖。 蚊 圖 圖 緩衝器實施例之方 憶體結構配合相關 圖塊分割方式實施 例示巨圖塊解碼 【主要元件符號說明】 本案圖式中所包含之各s件列式如下: 1〇〇圖形處理器系統 1 〇4顯示介面單元 11()記憶體介面單元 118匯流排介面單元 102顯示袭置 106區域記憶體 H4圖形處理單元 122晶片組 57 200813884 124糸統s己憶體 126中央處理單元 128驅動軟體 200解碼系統 2〇2圖形處理器 204計算核心 2〇6執行單元集合控制及頂點/串流快取記憶體單元 繪圖管線 302紋理過濾單元 304像素打包元件 308寫回單元 402執行單元輸入 4〇6記憶體存取單元 41〇記憶體介面仲裁器 413接線 306命令流處理器 310紋理位址產生器 4〇4執行單元輸出 408 L2快取記憶體 412執行單元集合 420執行單元 504指令快取記憶體控制器 5〇6執行緒控制器 508緩衝器 51〇共用暫存器㈣犯執行單元資料路徑 514執行單元資料路徑先進先出緩衝器
516述部暫存器稽案⑽純量^器檔案 ,資料輸出控制器、似執行緒任務介面 526暫存器檔案 ^ ^ ns 532向量浮點單元 輯單元 530 CABAC 單元 534向量整數算術邏 536特殊目的單元 540暫存器檔案 544目前訊號線 6〇2狀態索弓丨暫存器 538多工器 542運算訊號線 601陣列元素 603 目前 mb]SfeighCtx 58 200813884 604高可能符號值暫存器 605 左侧 mbNeighCtx 606 碼長範圍暫存器 607指標 608 碼長補償暫存器 609巨圖塊列 610 巨圖塊相鄰内容記怜 611巨圖塊分割區 612 區域暫存器 613 L0/L1 值 614 總暫存器
615 Gtl 617 GtO 616二進位字串暫存器
618移位暫存^串流緩衝ϋ/直接記憶體存取引盤 620二進位化模組 622取得内容模組 624二進位算術解碼弓丨擎 628目標匯流排 632來源匯流排 636延遲/重置匯流排 640資料匯流排 652 DST暫存器 656多工器單元 660CABAC邏輯模組 664運算元暫存器 668轉遞暫存器 630來源匯流排 634命令及執行緒資訊匯流排 638地址匯流排 650記憶體模組 654 Binldx 暫存器、 658反饋接線 662運算元暫存器 666轉遞暫存器 59

Claims (1)

  1. 200813884 十、申請專利範圍: 1· 一解碼糸統,其係包含: 一軟體可程式核心處理單元,其具有執行一著色器之 内谷適應性一進位算術編碼(context-adaptive binary arithmetic ’ CABAC)單元,該著色器施行一視訊流之 CABAC解碼並提供一解碼資料輸出, 其中该CABAC解碼係使用硬體配合軟體的方式施行。 2·如申明專利範圍第i項所述之系統,其中該CABAC解 碼係以圖形處理單元編程之内容配合施行於一圖形處理單 元資料路徑内之硬體所完成。 具中該CABAC J 3·如申請專利範圍第1項所述之系統 __________ 兀更包含一二進位化(BIND)模組,用以接收包含第一語; 成分及-内容區塊類型之第一資訊,同時因應該bind°; 組執行該著色器之-第—指令,根據該第—#訊提供對7 7個或多敍圖塊參數之第二資訊,供内容模型分心 4.如3韻叙_,其_該MM 兀更包卜取得内容(GCTX)模組,用以接收 =GCTX模組執行該著色器之-第二指令「產Γ. -進位值及内容識別符,供二進位解碼之用。 200813884 :於-最高可能符號值二 === 元&申rj利範圍第4項所述之系統,其中該CABAC單 :位值二進ί算術解碼(bard)模組,用以接收該二進 •模組執行::::、―補償、以及-範圍,並因應該bard 人 為之—第三指令,解碼一二進位符號。 7元之包申Γ—專利範'第6項所述之系統’其中該CABAC單 蜆,並接供爭^位予串暫存器,以接收該解碼之二進位符 卫桅供更新内容資訊。 如申請專利範圍第7項 進位符 •暫存器用於接收代表/述之糸、、先’其中該二進位字串 •號。 安叹代表—解碼語法成分之複數個 .如申請專利範圍第i項所、 , 元根據-指令内之位亓逑糸統,其中該CABAC單 次運曾a# θ 70,判斷儲存在一内部暫存器的前一 供;用’或是-來源運算元中之資料是否可 個或多個模組於目前運算中使用。 如申叫專利範圍第1項所述之系統,其中該CABAC 61 200813884 ^ 直接 口己 ^ 體存取(direct memory access,DMA) 引擎模組,其内句冬丄 匕3 一位兀流緩衝器以及一 DMA引擎, 3 fMA引擎模組因應該著色器針對每一切片執行之一第 田已使用該位元流内的預定數量之位元,自動重 衩’、入相讀1之位元,該位元對應於該視訊流。 抑一如申明專利範圍第10項所述之系統,其中該CABAC 卓7〇因應該位元#嫁佐:口口 _Λ/ΓΑ , 爪緩衝崙内有向下溢位之可能,延遲該 DMA引擎模組。 12·如申請專利筋 擎用於記錄該項所述之系統’其中該DMA引 ㈣^内之已使用位讀目,並因應 算,並將控制權轉:暫停該位元流緩衝器運 ‘L二請=圍第1項所述之系統’更包含-内容記 記憶體陣列包人:t礎解碼及對應暫存器使用,其中内容 GCTX模組執,二啫存目前及相鄰巨圖塊的元素,因應一 據布林邏輯運者色器之-第五指令’該GCTX模組根 該暫存器移該内容記憶體陣列,其中包括數值從 ^至邊内容記憶體陣列。 14· ^種解竭^法,其係㈣㈣: 考色為载入具有一 CABAC單元之一可程式核心 62 200813884 處理單元中; 器,以CABAC解碼一 執行該CABAC單元上之該著色 視訊流;以及 提供一解碼資料輪出。 M 申明專利範圍第14項所述之方法,其中該CABAC 口口 rf以圖形處理單元編程之内容配合施行於- 圖形處理 早兀貧料路徑内之硬體所完成。 16·如申請專利範圍第14項所述之方法,更包括步驟: ,BIND拉組接收包含—語法成分及一内容區塊類型的 第一資訊;以及 ^ #因應該BIND模組執行該著色器之一第一指令,根據 名第資吼提供對應於一個或多個巨圖塊參數之第二資 訊,供内容模型分析之用。 .17·如申請專利範圍第16項所述之方法,更包括步驟·· GCTX模組接收該第二資訊;以及 因應該GCTX模組執行該著色器之一第二指令,產生 • 一二進位值及内容識別符,供二進位解碼之用,其中該内 , 容辨識符對應於一高可能符號(MPS)值或一低可能號(LPS) 機率。 18·如申請專利範圍第17項所述之方法,更包括步驟·· 63 200813884 一 BARD模組接收該二進位值及内容辨識符、一補 償、以及一範圍;以及 因應該BARD模組執行該著色器之一第三指令,解碼 一個或多個二進位符號。 19. 如申請專利範圍第18項所述之方法,更包括步驟: 一二進位字串暫存器接收該一個或多個解碼之二進位 * 符號,該一個或多個解碼之二進位符號代表一解碼之語法 || 成分;以及 提供更新内容資訊。 20. 如申請專利範圍第14項所述之方法,更包括步驟: 利用一指令内之位元,判斷儲存在一内部暫存器的前 一次運算結果是否可用,或是一來源運算元中之資料是否 可供一個或多個模組於目前運算中使用。 • 21.如申請專利範圍第14項所述之方法,更包括步驟: 當解碼程序已使用該位元流内的預定數量之位元,自 動重複填入該預定數量之位元,該位元對應於該視訊流。 22.如申請專利範圍第14項所述之方法,更包括步驟: 因應該位元流緩衝器内有向下溢位之可能,延遲該 DMA引擎模組。 64 200813884 23. 如申請專利範圍第21項所述之方法,更包括步驟: 記錄該位元流缓衝器内之以使用位元數目,並因應偵 測到該位元數目大於一預定值,暫停該位元流缓衝器運 算,並將控制權轉移至一主處理器。 24. 如申請專利範圍第14項所述之方法,更包括步驟: 根據布林邏輯運算寫入用於CABAC解碼之一内容記 憶體陣列,其中包括數值從做為該内容記憶體之暫存器移 轉至該内容記憶體陣列。 65
TW096120896A 2006-06-08 2007-06-08 Decoding of context adaptive binary arithmetic codes in computational core of programmable graphics processing unit TWI348653B (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
TW200813884A true TW200813884A (en) 2008-03-16
TWI348653B TWI348653B (en) 2011-09-11

Family

ID=38899303

Family Applications (4)

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

Family Applications After (3)

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

Country Status (2)

Country Link
CN (4) CN101072349B (zh)
TW (4) TWI348653B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9438933B2 (en) 2011-11-08 2016-09-06 Samsung Electronics Co., Ltd. Method and device for arithmetic coding of video, and method and device for arithmetic decoding of video

Families Citing this family (38)

* 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 晨星软件研发(深圳)有限公司 布林熵解码器及影像播放***的布林熵解码方法
WO2013147828A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Preempting fixed function media devices
US9451258B2 (en) * 2012-04-03 2016-09-20 Qualcomm Incorporated Chroma slice-level QP offset and deblocking
CA2863549C (en) * 2012-05-29 2018-12-04 Mediatek Inc. Method and apparatus for coding of sample adaptive offset information
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
WO2014188829A1 (en) * 2013-05-21 2014-11-27 Square Enix Holdings Co., Ltd. Information processing apparatus, method of controlling the same and program
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超显示辅助设备及其控制方法
EP3721630A1 (en) * 2017-12-08 2020-10-14 Google LLC Context derivation for coefficient coding
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 武汉新芯集成电路制造有限公司 单调计数器及其计数方法
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
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
EP1599049A3 (en) * 2004-05-21 2008-04-02 Broadcom Advanced Compression Group, LLC Multistandard video decoder
US7742544B2 (en) * 2004-05-21 2010-06-22 Broadcom Corporation System and method for efficient CABAC clock
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 (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9438933B2 (en) 2011-11-08 2016-09-06 Samsung Electronics Co., Ltd. Method and device for arithmetic coding of video, and method and device for arithmetic decoding of video
US9888261B2 (en) 2011-11-08 2018-02-06 Samsung Electronics Co., Ltd. Method and device for arithmetic coding of video, and method and device for arithmetic decoding of video
US9888263B2 (en) 2011-11-08 2018-02-06 Samsung Electronics Co., Ltd. Method and device for arithmetic coding of video, and method and device for arithmetic decoding of video
US9888262B2 (en) 2011-11-08 2018-02-06 Samsung Electronics Co., Ltd. Method and device for arithmetic coding of video, and method and device for arithmetic decoding of video
US9888264B2 (en) 2011-11-08 2018-02-06 Samsung Electronics Co., Ltd. Method and device for arithmetic coding of video, and method and device for arithmetic decoding of video

Also Published As

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

Similar Documents

Publication Publication Date Title
TW200813884A (en) Decoding of context adaptive binary arithmetic 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
US7626521B2 (en) Decoding control of computational core of programmable graphics processing unit
US7623049B2 (en) Decoding of context adaptive variable length codes in computational core of programmable graphics processing unit
TWI482117B (zh) 可程式視訊處理單元之系統與處理方法
TWI428852B (zh) 著色器處理系統與方法
US20140153635A1 (en) Method, computer program product, and system for multi-threaded video encoding
Abeydeera et al. 4K real-time HEVC decoder on an FPGA
CN107409229A (zh) 指示编码区域的结束的语法结构
JPH11298916A (ja) 画像処理装置
US20110261885A1 (en) Method and system for bandwidth reduction through integration of motion estimation and macroblock encoding
US8624896B2 (en) Information processing apparatus, information processing method and computer program
TW200826516A (en) Entropy processor for decoding
KR20230079414A (ko) 게이밍 애플리케이션들에서 딥 러닝 기반 예측을 이용한 레이턴시 관리
US20090158379A1 (en) Low-Latency Multichannel Video Port Aggregator
US8462848B2 (en) Method and system for intra-mode selection without using reconstructed data
Cho et al. Parallelizing the H. 264 decoder on the cell BE architecture
AU739533B2 (en) Graphics processor architecture
KR101693416B1 (ko) 영상 부호화 방법 및 영상 복호화 방법과 상기 방법을 이용한 영상 부호화 장치 및 영상 복호화 장치
TWI603616B (zh) 晶片內/晶片外記憶體管理
US9330060B1 (en) Method and device for encoding and decoding video image data
Juurlink et al. Putting It All Together: A Fully Parallel and Efficient H. 264 Decoder
Kim et al. Configurable high-performance video platform using multiple RISC clusters connected with separated data and control networks
Lee A Bus Data Compression Method on a Phase-Based On-Chip Bus