【技術(shù)領(lǐng)域】
本發(fā)明涉及幀間級(jí)并行視頻解碼系統(tǒng)。特別地,本發(fā)明涉及系統(tǒng)的數(shù)據(jù)再使用,以便減少帶寬消耗。
背景技術(shù):
近年來(lái),壓縮視頻已經(jīng)廣泛應(yīng)用于各種應(yīng)用,例如,視頻廣播、視頻流以及視頻存儲(chǔ)。由更新視頻標(biāo)準(zhǔn)使用的視頻壓縮技術(shù)變得更復(fù)雜且要求更多的處理功率。另一方面,基本視頻的分辨率變得匹配高分辨率顯示裝置的分辨率且滿足更高質(zhì)量的要求。例如,當(dāng)今,高清(hd)中的壓縮視頻廣泛用于電視廣播和視頻流。甚至超高清(uhd)視頻變?yōu)楝F(xiàn)實(shí),且各種基于uhd的產(chǎn)品在消費(fèi)市場(chǎng)可見(jiàn)。uhd內(nèi)容的處理功率的要求隨著空間分辨率快速增加。更高分辨率視頻的處理功率對(duì)于基于硬件以及基于軟件的實(shí)現(xiàn)是一個(gè)挑戰(zhàn)性的問(wèn)題。例如,uhd幀可具有3840x2160的分辨率,其對(duì)應(yīng)于每圖片幀8,294,440個(gè)像素。如果視頻以每秒60幀進(jìn)行俘獲,uhd將幾乎生成每秒5億像素。對(duì)于以yuv444顏色格式的彩色視頻源,將有150億個(gè)樣本在每秒中被處理。與uhd視頻關(guān)聯(lián)的數(shù)據(jù)數(shù)量是巨大的且對(duì)實(shí)時(shí)視頻解碼器提出巨大挑戰(zhàn)。
為了滿足高清、超高清分辨率和/或更復(fù)雜的編碼標(biāo)準(zhǔn)的計(jì)算功率要求,高速處理器和/或多個(gè)處理器已經(jīng)使用于執(zhí)行實(shí)時(shí)視頻解碼。例如,在個(gè)人計(jì)算機(jī)(pc)和消費(fèi)電子環(huán)境中,多核中央處理單元(cpu)可用于解碼視頻比特流。多核系統(tǒng)可以以嵌入系統(tǒng)的形式以便成本節(jié)省和便捷。在現(xiàn)有的多核解碼器系統(tǒng)中,控制單元通常配置多個(gè)核(core)(即,多個(gè)視頻解碼器內(nèi)核(kernel))以執(zhí)行幀級(jí)并行視頻解碼。為了協(xié)調(diào)由多個(gè)視頻解碼器內(nèi)核存取的存儲(chǔ)器,存儲(chǔ)器存取控制單元可以用于多個(gè)核與多個(gè)核之間共享的存儲(chǔ)器之間。
圖1a圖示了幀級(jí)并行視頻解碼的一般雙核視頻解碼器系統(tǒng)的框圖。雙核視頻解碼器系統(tǒng)100a包含控制單元110a、解碼器核0(120a-0)、解碼器核1(120a-1)以及存儲(chǔ)器存取控制單元130a??刂茊卧?10a可以用于指定解碼器核0(120a-0)以解碼一個(gè)幀,以及指定解碼器核1(120a-1)以并行解碼另一 幀。因?yàn)槊總€(gè)解碼器核需要存取儲(chǔ)存于存儲(chǔ)裝置(例如,存儲(chǔ)器)的參考數(shù)據(jù),存儲(chǔ)器存取控制單元130a連接到存儲(chǔ)器,并用于管理由兩個(gè)解碼器核存取的存儲(chǔ)器。解碼器核可以用于解碼對(duì)應(yīng)于一個(gè)或多個(gè)選擇視頻編碼格式的比特流,例如,mpeg-2、h2.64/avc以及新的高效視頻編碼(hevc)編碼標(biāo)準(zhǔn)。
圖1b圖示幀級(jí)并行視頻解碼的一般四核視頻解碼器系統(tǒng)的框圖。四核視頻解碼器系統(tǒng)100b包含控制單元110b、解碼器核0(120b-0)到解碼器核3(120b-3)以及存儲(chǔ)器存取控制單元130b。控制單元110b看用于指定解碼器核0(120b-0)到解碼器核3(120b-3)以并行解碼不同幀。存儲(chǔ)器存取控制單元130b連接到存儲(chǔ)器并用于管理由四個(gè)解碼器核存取的存儲(chǔ)器。
盡管任何壓縮視頻格式可用于hd或uhd內(nèi)容,由于更高的壓縮效率,更可能使用更新的壓縮標(biāo)準(zhǔn),例如,h2.64/avc或hevc。圖2a圖示支持hevc視頻標(biāo)準(zhǔn)的視頻解碼器200a的示范性系統(tǒng)框圖。hevc是由視頻編碼聯(lián)合合作組(jct-vc)開(kāi)發(fā)的新的國(guó)際視頻編碼標(biāo)準(zhǔn)。hevc是基于混合基于塊的運(yùn)動(dòng)補(bǔ)償?shù)念?lèi)dct變換的編碼架構(gòu)。壓縮的基本單元稱(chēng)為編碼單元(cu),是2nx2n的四方塊。cu可以最大cu(lcu)開(kāi)始,lcu在hevc中也稱(chēng)為編碼樹(shù)單元(ctu),且每個(gè)cu可以遞歸地分成四個(gè)更小的cu,直到到達(dá)預(yù)定義的最小尺寸。一旦完成cu分層樹(shù)的分割,每個(gè)cu根據(jù)預(yù)測(cè)類(lèi)型和pu分區(qū)進(jìn)一步分成一個(gè)或多個(gè)預(yù)測(cè)單元(pu)。每個(gè)cu或每個(gè)cu的殘值分成轉(zhuǎn)換單元(tu)樹(shù)以應(yīng)用二維(2d)轉(zhuǎn)換。
在圖2a中,輸入視頻比特流首先由可變長(zhǎng)度解碼器(vld)210a處理,以執(zhí)行可變長(zhǎng)度解碼和句法解析。解析的句法可對(duì)應(yīng)于幀間/幀內(nèi)殘值信號(hào)(來(lái)自vld210的上面的輸出路徑)或運(yùn)動(dòng)信息(來(lái)自vld210的下面的輸出路徑)。殘值信號(hào)通常被轉(zhuǎn)換編碼。因此,編碼的殘值信號(hào)由逆掃描(is)塊212、逆量化(iq)塊214以及逆轉(zhuǎn)換(it)塊216處理。來(lái)自逆轉(zhuǎn)換(it)塊216的輸出對(duì)應(yīng)于重建的殘值信號(hào)。對(duì)于幀內(nèi)編碼的塊,重建的殘值信號(hào)使用加法器塊218加入到來(lái)自幀內(nèi)預(yù)測(cè)塊224的幀內(nèi)預(yù)測(cè),或?qū)τ趲g編碼的塊,重建的殘值信號(hào)使用加法器塊218加入到來(lái)自運(yùn)動(dòng)補(bǔ)償塊222的幀間預(yù)測(cè)。幀間/幀內(nèi)選擇塊226選擇幀內(nèi)預(yù)測(cè)或幀間預(yù)測(cè),用于取決于塊是否是幀間或幀內(nèi)編碼的來(lái)重建視頻信號(hào)。對(duì)于運(yùn)動(dòng)補(bǔ)償,方法將存取儲(chǔ)存于解碼的圖片緩沖器230的一個(gè)或多個(gè)參考?jí)K和由運(yùn)動(dòng)向量(mv)計(jì)算塊220確定的運(yùn)動(dòng)向量信息。為了改進(jìn)視覺(jué)的質(zhì)量,環(huán)內(nèi)濾波器228用于在其儲(chǔ)存于解碼的圖片緩沖器230之前處理 重建的視頻。環(huán)內(nèi)濾波器在hevc中包含解塊濾波器(df)和樣本自適應(yīng)偏置(sao)。環(huán)內(nèi)濾波器可使用不同的濾波器用于其它編碼標(biāo)準(zhǔn)。在圖2a中,所有的功能塊除了解碼的圖片緩沖器230可由解碼器核實(shí)施。在典型的實(shí)現(xiàn)中,外部存儲(chǔ)器,例如,dram,用于解碼的圖片緩沖器230。
對(duì)于可變長(zhǎng)度解碼器(vld),由于其特性,其可以不用視頻解碼器核而單獨(dú)實(shí)施。在此情況下,存儲(chǔ)器可用于緩沖vld的輸出。圖2b圖示不包含vld的視頻解碼器內(nèi)核200b的示例。存儲(chǔ)器240用于緩沖vld210b的輸出。
對(duì)于幀級(jí)并行解碼,由于數(shù)據(jù)依賴(lài),即將被解碼的幀和多個(gè)解碼器內(nèi)核之間的映射需要仔細(xì)完成以最大化性能。圖3以解碼順序圖示了六個(gè)圖片(即,i,p,p,b,b和b)的示例。這六個(gè)圖片可以顯示順序?qū)?yīng)于i(1),p(2),b(3),b(4),b(5)和p(6),其中插入的數(shù)字表示圖片的顯示順序。圖片i(1)由自身幀內(nèi)編碼而不需要任何其他圖片上的任何數(shù)據(jù)依賴(lài)。圖片p(2)是使用重建的i(1)圖片作為參考圖片的雙方向預(yù)測(cè)。當(dāng)i(1)和p(2)分別指定到解碼器內(nèi)核0和解碼器內(nèi)核1用于并行解碼(310)時(shí),存在數(shù)據(jù)依賴(lài)問(wèn)題。類(lèi)似地,當(dāng)p(6)和b(3)分別指定到解碼器內(nèi)核0和解碼器內(nèi)核1用于第二階段(320)并行解碼,數(shù)據(jù)依賴(lài)問(wèn)題再次出現(xiàn)。最后即將被解碼的圖片b(4)和b(5)分別指定到解碼器內(nèi)核0和解碼器內(nèi)核1用于第三階段(330)的并行解碼。因?yàn)閜(2)和p(6)此時(shí)可用,并行解碼b(4)和b(5)將不再有數(shù)據(jù)依賴(lài)問(wèn)題。
由于高計(jì)算要求以支持hd或uhd視頻的實(shí)時(shí)解碼,多核解碼器已經(jīng)用于改進(jìn)解碼速度。由于公共參考數(shù)據(jù),幀間并行解碼的一個(gè)潛在優(yōu)勢(shì)是帶寬效率。然而,由于數(shù)據(jù)依賴(lài),帶寬效率將降級(jí)。因此,期望開(kāi)發(fā)可解決數(shù)據(jù)依賴(lài)問(wèn)題的方法和系統(tǒng),以便改進(jìn)帶寬效率。
技術(shù)實(shí)現(xiàn)要素:
為了解決以上技術(shù)問(wèn)題,本發(fā)明提供一種在存儲(chǔ)裝置儲(chǔ)存局部重建的像素?cái)?shù)據(jù)用于幀內(nèi)預(yù)測(cè)的視頻處理裝置和相關(guān)視頻處理方法。
根據(jù)本發(fā)明的第一方面,揭示一種多核解碼器系統(tǒng)包含多個(gè)解碼器核;共享的參考數(shù)據(jù)緩沖器,耦合到多個(gè)解碼器核以及外部存儲(chǔ)器,其中共享的參考數(shù)據(jù)緩沖器儲(chǔ)存從外部存儲(chǔ)器接收的參考數(shù)據(jù),并將參考數(shù)據(jù)提供到多個(gè)解碼器核用于解碼視頻數(shù)據(jù);以及一個(gè)或多個(gè)解碼進(jìn)度同步器,耦合到多個(gè)解碼器 核的一個(gè)或多個(gè),以檢測(cè)與多個(gè)解碼器核的一個(gè)或多個(gè)關(guān)聯(lián)的解碼進(jìn)度信息或共享的參考數(shù)據(jù)緩沖器的狀態(tài)信息,并控制多個(gè)解碼器核的一個(gè)或多個(gè)的解碼進(jìn)度。
根據(jù)本發(fā)明的第二方面,揭示一種種多核解碼器系統(tǒng),包含多個(gè)解碼器核;共享的參考數(shù)據(jù)緩沖器,耦合到多個(gè)解碼器核和外部存儲(chǔ)器,其中共享的參考數(shù)據(jù)緩沖器儲(chǔ)存從外部存儲(chǔ)器接收的參考數(shù)據(jù),并將參考數(shù)據(jù)提供到多個(gè)解碼器核用于解碼視頻數(shù)據(jù);以及延遲先進(jìn)先出塊,耦合到多個(gè)解碼器核、共享的參考數(shù)據(jù)緩沖器和外部存儲(chǔ)器,其中延遲先進(jìn)先出塊儲(chǔ)存由一個(gè)解碼器核使用的當(dāng)前參考數(shù)據(jù),用于由另一解碼器核以后使用。
根據(jù)本發(fā)明的第三方面,揭示一種多核解碼器系統(tǒng),包含多個(gè)解碼器核;以及共享的輸出緩沖器,耦合到多個(gè)解碼器核和外部存儲(chǔ)器,其中共享的輸出緩沖器儲(chǔ)存來(lái)自第一解碼器核的重建的數(shù)據(jù),并在儲(chǔ)存重建的數(shù)據(jù)到外部存儲(chǔ)器之前,將重建的數(shù)據(jù)提供到第二解碼器核作為參考數(shù)據(jù),用于解碼視頻數(shù)據(jù)。
根據(jù)本發(fā)明的第四方面,揭示一種在解碼器系統(tǒng)中使用多個(gè)解碼器核用于視頻解碼的方法,包含將多個(gè)解碼器核安排用于使用幀間級(jí)并行解碼來(lái)從視頻比特流解碼兩個(gè)或多個(gè)幀;將儲(chǔ)存于共享的參考數(shù)據(jù)緩沖器的參考數(shù)據(jù)提供到多個(gè)解碼器核,用于解碼兩個(gè)或多個(gè)幀;以及控制多個(gè)解碼器核的一個(gè)或多個(gè)的解碼進(jìn)度,以根據(jù)關(guān)于多個(gè)解碼器核一個(gè)或多個(gè)的解碼進(jìn)度信息或共享的參考數(shù)據(jù)緩沖器的狀態(tài)信息,減少與共享的參考數(shù)據(jù)緩沖器關(guān)聯(lián)的存儲(chǔ)器存取帶寬。
本發(fā)明通過(guò)以上方案,可以有效的改進(jìn)帶寬效率。
【附圖說(shuō)明】
圖1a圖示具有用于并行解碼的雙解碼器核的示范性解碼器系統(tǒng)。
圖1b圖示具有用于并行解碼的四解碼器核的示范性解碼器系統(tǒng)。
圖2a圖示基于hevc標(biāo)準(zhǔn)的示范性解碼器系統(tǒng)框圖。
圖2b圖示基于hevc標(biāo)準(zhǔn)的另一示范性解碼器系統(tǒng)框圖,其中vld排除于解碼器內(nèi)核外。
圖3圖示將兩個(gè)幀分配到兩個(gè)解碼器核的示例。
圖4圖示使用芯片上存儲(chǔ)器用于參考數(shù)據(jù)緩沖器的解碼器系統(tǒng)架構(gòu)的示例。
圖5圖示根據(jù)本發(fā)明實(shí)施例的具有共享的參考緩沖器和延遲fifo的多個(gè)解碼器核系統(tǒng)的示例。
圖6a圖示先導(dǎo)解碼器核a的解碼進(jìn)度。
圖6b圖示落后的解碼器核b的解碼進(jìn)度。
圖7圖示將解碼進(jìn)度同步器并入具有共享的參考緩沖器的并行解碼器系統(tǒng)的示例。
圖8圖示根據(jù)本發(fā)明實(shí)施例的具有兩個(gè)解碼器核、解碼進(jìn)度同步器和延遲fifo的并行解碼器系統(tǒng)的示例。
圖9a圖示將解碼進(jìn)度同步器以主從布置并入解碼器核a的示例。
圖9b圖示將解碼進(jìn)度同步器以對(duì)等布置并入解碼器核a和解碼器b的另一示例。
圖10圖示根據(jù)本發(fā)明實(shí)施例的使一個(gè)解碼器核能從另一解碼器核存取重建的數(shù)據(jù)的系統(tǒng)架構(gòu)的示例,其中芯片上存儲(chǔ)器用于兩個(gè)解碼器核之間。
圖11圖示儲(chǔ)存來(lái)自一個(gè)解碼器核的重建的數(shù)據(jù)以由另一解碼器核使用的共享的輸出緩沖器的芯片上存儲(chǔ)器布置的另一方面。
圖12圖示儲(chǔ)存來(lái)自一個(gè)解碼器核的重建的數(shù)據(jù)以由一解碼器核使用的共享的輸出緩沖器的芯片上存儲(chǔ)器布置的另一種示例,其中重建的數(shù)據(jù)安排進(jìn)固定大小的窗口。
圖13圖示使用具有窗口檢測(cè)器的共享的輸出緩沖器的并行解碼器系統(tǒng)以減少帶寬消耗的示例。
圖14圖示使用具有窗口檢測(cè)器的共享的輸出緩沖器的多核并行解碼器系統(tǒng)的另一示例,其中復(fù)用器和解復(fù)用器用于允許多個(gè)解碼器核共享共享的輸出緩沖器和窗口檢測(cè)器。
【具體實(shí)施方式】
以下的描述是實(shí)施本發(fā)明的最佳模式。此描述是為了說(shuō)明本發(fā)明的一般原理,且不應(yīng)該認(rèn)為是限制。本發(fā)明的范圍參考所附的權(quán)利要求來(lái)確定。
本發(fā)明揭示的多核解碼器系統(tǒng),其可減少存儲(chǔ)器帶寬消耗。根據(jù)本發(fā)明的一個(gè)方面,如果兩個(gè)幀參考部分重疊的參考數(shù)據(jù),或視頻幀分配到在另一內(nèi)核上參考另一幀的內(nèi)核,視頻幀的候選被選擇并分配到幀間級(jí)并行解碼,以減少存儲(chǔ)器帶寬消耗。在這些情況中,有機(jī)會(huì)共享在內(nèi)核之間存取的參考幀數(shù)據(jù)并 減少外部存儲(chǔ)器帶寬消耗。根據(jù)本發(fā)明的另一方面,揭示解碼進(jìn)度同步(decodingprogresssynchronization,dps)方法和架構(gòu),用于多個(gè)解碼器內(nèi)核系統(tǒng),以通過(guò)最大化數(shù)據(jù)再使用來(lái)減少存儲(chǔ)器帶寬消耗。此外,揭示了一種重建的數(shù)據(jù)再使用方法和架構(gòu),以減少帶寬消耗。
對(duì)于運(yùn)動(dòng)補(bǔ)償編碼的視頻,解碼器需要存取參考數(shù)據(jù),以生成幀間預(yù)測(cè)數(shù)據(jù),用于運(yùn)動(dòng)補(bǔ)償重建。因?yàn)橄惹爸亟ǖ膱D片可以?xún)?chǔ)存在解碼的圖片緩沖器,圖片緩沖器可能使用外部存儲(chǔ)器來(lái)實(shí)施,對(duì)解碼的圖片緩沖器的存取也相對(duì)慢。此外,其將消耗系統(tǒng)帶寬,系統(tǒng)帶寬是重要的系統(tǒng)資源。因此,基于芯片上存儲(chǔ)器的參考數(shù)據(jù)緩沖器通常用于改進(jìn)帶寬效率。圖4圖示了使用芯片上存儲(chǔ)器用于參考數(shù)據(jù)緩沖器的解碼器系統(tǒng)架構(gòu)400的示例。圖4中的解碼器系統(tǒng)包含兩個(gè)解碼器核410、420以及共享的參考緩沖器430。參考數(shù)據(jù)首先讀進(jìn)共享的參考緩沖器430,且共享的參考緩沖器430中的數(shù)據(jù)可以由兩個(gè)解碼器核多次再使用,以減少帶寬消耗。例如,解碼器核可以分配為解碼兩個(gè)p圖片之間的兩個(gè)連續(xù)的b圖片用于幀間級(jí)并行解碼。很可能兩個(gè)b圖片的解碼過(guò)程需要存取與兩個(gè)參考p圖片關(guān)聯(lián)的相同的參考數(shù)據(jù)。如果所需要的參考數(shù)據(jù)在共享的參考緩沖器中(即,“擊中”),則所需的參考數(shù)據(jù)不需要從外部存儲(chǔ)器存取便可再使用。如果所需要的參考數(shù)據(jù)不在共享的參考緩沖器(即,“沒(méi)有”),則所需要的參考數(shù)據(jù)將不得不從外部存儲(chǔ)器讀取。共享的參考緩沖器遠(yuǎn)遠(yuǎn)小于外部存儲(chǔ)器。然而,共享的參考緩沖器通常實(shí)施為與外部存儲(chǔ)器不同的架構(gòu)用于高速數(shù)據(jù)存取。例如,共享的參考緩沖器可以使用類(lèi)型1緩存(l1緩存)、類(lèi)型2緩存(l2緩存)或類(lèi)似緩存的架構(gòu)來(lái)實(shí)施,外部存儲(chǔ)器通常是基于dram(動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器)技術(shù)。
盡管共享的參考緩沖器可幫助改進(jìn)帶寬效率,由于各種原因,全部的好處不可在實(shí)踐中實(shí)現(xiàn)。例如,解碼過(guò)程可進(jìn)度不同地在兩個(gè)解碼器核上的兩個(gè)并行解碼的幀進(jìn)行。在一個(gè)解碼器核先于另一很多的情況下,兩個(gè)解碼器核可以被存取顯著不同的參考數(shù)據(jù)區(qū)域。因此,落后的解碼器核可能需要從外部存儲(chǔ)器重新載入數(shù)據(jù)(即,“沒(méi)有”)。共享的參考存儲(chǔ)器通常使用高速存儲(chǔ)器實(shí)施以改進(jìn)性能。由于高速存儲(chǔ)器的高成本,共享的參考存儲(chǔ)器的尺寸是有限的。為了進(jìn)一步改進(jìn)具有共享的參考緩沖器的系統(tǒng)的帶寬效率,本發(fā)明的實(shí)施例引入耦合到外部存儲(chǔ)器的延遲先進(jìn)先出(fifo)塊、共享的參考緩沖器和解碼器核。 延遲fifo可以實(shí)施為與共享的參考緩沖器的不同的數(shù)據(jù)結(jié)構(gòu)/架構(gòu),以實(shí)現(xiàn)更高容量和更低成本,例如,專(zhuān)屬芯片上sram(靜態(tài)隨機(jī)存取存儲(chǔ)器)或l1/l2緩存。
圖5圖示根據(jù)本發(fā)明的實(shí)施例的具有共享的參考緩沖器和延遲fifo塊的多個(gè)解碼器核系統(tǒng)500的示例。
在圖5的示例中,使用兩個(gè)解碼器核510、520。除共享的參考緩沖器530外,還使用延遲fifo540。外部存儲(chǔ)器看作多解碼器核系統(tǒng)500的外部。對(duì)于引導(dǎo)解碼的進(jìn)度在落后的解碼器核之前的先導(dǎo)解碼器核,參考幀數(shù)據(jù)從外部存儲(chǔ)器直接被讀取到核,而不將其儲(chǔ)存到共享的參考緩沖器中。然而,從外部存儲(chǔ)器讀取的參考幀數(shù)據(jù)也與參考幀數(shù)據(jù)的地址或位置信息一起儲(chǔ)存于延遲fifo。在此情況下,多路器512或522用于直接從外部存儲(chǔ)器選擇參考數(shù)據(jù)進(jìn)入解碼器核。系統(tǒng)將監(jiān)控延遲fifo的最舊條目的位置信息。當(dāng)落后的解碼器核的解碼進(jìn)度趕上最舊條目的位置時(shí),最舊條目出列且參考數(shù)據(jù)轉(zhuǎn)移到共享的參考緩沖器,以便落后的解碼器核可從共享的參考緩沖器存取參考數(shù)據(jù),而不需要存取外部存儲(chǔ)器。在此情況下,多路器532設(shè)置為從延遲fifo540選擇輸入。圖5中的系統(tǒng)也還可用于支持現(xiàn)有沒(méi)有延遲fifo的共享的參考緩沖器。在此情況下,多路器512和522設(shè)置為從共享的參考緩沖器選擇輸入,且多路器532設(shè)置為從外部存儲(chǔ)器550選擇輸入。
延遲fifo的使用應(yīng)該幫助改進(jìn)帶寬效率。例如,如果解碼器核a是處理位于(x,y)=(10,2)的塊位置(x,y)的宏塊(mb)的先導(dǎo)核。解碼器核b是處理位于(x,y)=(3,2)的宏塊的落后的核。在此情況下,解碼器核a的參考數(shù)據(jù)將被放到延遲fifo中,因?yàn)榻獯a器核b正處理遠(yuǎn)離正由解碼器核a處理的塊位置(10,2)的區(qū)域。解碼器核b將不太可能需要與解碼器核a相同的參考數(shù)據(jù)。然而,當(dāng)解碼器核b提高進(jìn)度到或接近塊位置(10,2)時(shí),延遲fifo中的參考數(shù)據(jù)可以放進(jìn)共享的參考緩沖器。在此情況下,解碼器核b可使用共享的參考緩沖器中的數(shù)據(jù)的概率大大增加。因此,由于延遲fifo的使用,改進(jìn)了帶寬效率。
根據(jù)本發(fā)明的另一方面,系統(tǒng)使用解碼進(jìn)度同步(dps)方法以改進(jìn)帶寬效率。如前所述,共享的參考緩沖器相對(duì)小。如果解碼器核正處理彼此遠(yuǎn)離的圖像區(qū)域,解碼器核的解碼進(jìn)度不太可能共享相同的參考數(shù)據(jù)。因此,本發(fā)明的 另一實(shí)施例能夠同步多個(gè)解碼器核之間的解碼進(jìn)度。例如,兩個(gè)解碼器核(核a和核b)用于兩個(gè)幀的幀間級(jí)并行解碼,且共享的參考緩沖器可儲(chǔ)存五個(gè)塊的參考數(shù)據(jù)。如果解碼器核a正處理顯示于圖6a中的塊x,以及解碼器核b正處理顯示于圖6b中的塊y,解碼器核b不太可能再使用共享的參考緩沖器中的參考數(shù)據(jù)。這是因?yàn)橹挥袎K(x-1)到(x-5)的參考數(shù)據(jù)將儲(chǔ)存于共享的參考緩沖器,且塊x和y分開(kāi)的太遠(yuǎn)。另一方面,如果解碼器核a正處理顯示于圖6a中的塊x以及解碼器核b正處理顯示于圖6b中的塊z,解碼器核b很可能再使用共享的參考緩沖器中的參考數(shù)據(jù),因?yàn)閴Kx和z更接近。因此,系統(tǒng)將檢查兩個(gè)核的進(jìn)度并保證兩個(gè)當(dāng)前處理塊之間的差值在限度內(nèi)。例如,如果解碼器核a正處理具有塊索引block_index_a的塊,解碼器核b正處理具有塊索引block_index_b的塊,系統(tǒng)將限制|block_index_a-block_index_b|<th,其中th是1和幀中塊的總數(shù)之間的閾值。
為了保持兩個(gè)當(dāng)前處理的塊之間的差值在限度內(nèi),系統(tǒng)將控制每個(gè)解碼器核的進(jìn)度。如果在一個(gè)核上執(zhí)行的解碼器內(nèi)核的解碼進(jìn)度遠(yuǎn)離另一核,共享的參考緩沖器的效率將降低。在此情況下,將可能更多存取外部存儲(chǔ)器。因此,系統(tǒng)減慢或停止先導(dǎo)核或加速落后的核,以縮短限度中的差值,以便改進(jìn)共享的參考緩沖器的效率(例如,更高的擊中率)。圖7圖示將解碼進(jìn)度同步器加入到具有共享的參考緩沖器的并行解碼器系統(tǒng)的示例。如圖7所示,解碼進(jìn)度同步器710耦合到解碼器核a410和解碼器核b420,以監(jiān)控解碼的進(jìn)度并相應(yīng)地控制進(jìn)度。如圖7所示,解碼進(jìn)度同步器710還可檢測(cè)關(guān)于共享的參考緩沖器430的信息并相應(yīng)地應(yīng)用控制到解碼器核。
為了監(jiān)控解碼器內(nèi)核的解碼進(jìn)度,系統(tǒng)可使用解碼進(jìn)度同步器710以根據(jù)當(dāng)前解碼的mb、編碼單元(cu)、最大cu或超級(jí)塊(sb)的(x,y)位置或索引,檢測(cè)他們的進(jìn)度。局部位置或索引信息可以使用。例如,系統(tǒng)可僅僅使用x-位置或y-位置以確定進(jìn)度。系統(tǒng)還可根據(jù)存儲(chǔ)器存取的地址檢測(cè)他們的進(jìn)度。根據(jù)檢測(cè)的進(jìn)度,系統(tǒng)可使用解碼進(jìn)度同步器710以相應(yīng)分別停止或加速/減速每個(gè)解碼器內(nèi)核??刂瓶梢酝ㄟ^(guò)控制內(nèi)核/子模塊狀態(tài)機(jī)(例如,暫停)、每個(gè)內(nèi)核的時(shí)鐘(例如,暫停、加速/減速)、每個(gè)內(nèi)核的存儲(chǔ)器存取優(yōu)先級(jí)、影響解碼進(jìn)度或解碼速度的其它因素或任何組合,或?qū)е麓鎯?chǔ)器存取停止來(lái)實(shí)現(xiàn)。
例如,系統(tǒng)可使用解碼進(jìn)度同步器710以檢測(cè)每個(gè)內(nèi)核的解碼進(jìn)度,并計(jì)算 解碼進(jìn)度中的差值。解碼進(jìn)度可對(duì)應(yīng)于當(dāng)前處理的圖像單元的索引(index_a或index_b)。圖像單元可對(duì)應(yīng)于mb或lcu。如果|index_a–index_b|≥th,則解碼進(jìn)度中的差值需要減少,其中th表示閾值。為了減少解碼進(jìn)度中的差值,系統(tǒng)可減速或暫停具有較大索引的先導(dǎo)核的解碼進(jìn)度,直到解碼進(jìn)度中的差值在閾值內(nèi)。備選地,系統(tǒng)可加速具有較小索引的落后的解碼器核的解碼進(jìn)度,直到解碼進(jìn)度中的差值在閾值內(nèi)。
在另一示例中,系統(tǒng)可檢查共享的參考緩沖器的狀態(tài),如圖7所示。如果狀態(tài)指示由任何內(nèi)核存取的參考數(shù)據(jù)將被刪除或數(shù)據(jù)再使用率降低或低于閾值,則系統(tǒng)將控制每個(gè)內(nèi)核的解碼進(jìn)度。
在另一實(shí)施例中,解碼進(jìn)度同步器可與以上揭示的延遲fifo一起使用。圖8圖示具有兩個(gè)解碼器核810,820、解碼進(jìn)度同步器830和延遲fifo840的并行解碼器系統(tǒng)的示例。系統(tǒng)可檢查延遲fifo是否已滿或幾乎滿,并且然后控制每個(gè)內(nèi)核的解碼進(jìn)度。當(dāng)延遲fifo滿或幾乎滿時(shí),指示在一個(gè)核上執(zhí)行的解碼器內(nèi)核的解碼進(jìn)度遠(yuǎn)離另一核,因?yàn)檠舆tfifo可檢查位置,以決定是否消耗數(shù)據(jù)條目并輸出到共享的參考緩沖器。換句話說(shuō),位置檢查可以是在dps自身中或在延遲fifo中或其它模塊。在此情況下,應(yīng)該應(yīng)用控制以檢查兩個(gè)解碼器核之間解碼進(jìn)度的差值。解碼進(jìn)度同步器可以是解碼器核中單獨(dú)的模塊。備選地,解碼進(jìn)度同步器可并入到延遲fifo作為集成的延遲fifo/解碼進(jìn)度同步器。
在本發(fā)明的又一實(shí)施例中,解碼進(jìn)度同步器并入到一個(gè)或多個(gè)解碼器核作為解碼器核的集成的部分。例如,圖9a圖示以主從布置將解碼進(jìn)度同步器910并入解碼器核a920的示例。兩個(gè)解碼器核彼此耦合,以便解碼器核a920中的解碼進(jìn)度同步器910可從解碼器核b930檢測(cè)解碼進(jìn)度,并提供進(jìn)度控制到解碼器核b930。在此情況下,解碼器核a看作主核,用于解碼進(jìn)度同步。圖9b圖示以對(duì)等布置將解碼進(jìn)度同步器940a,940b相應(yīng)分別并入到解碼器核a950和解碼器核b960的示例。兩個(gè)解碼器核彼此耦合,以便兩個(gè)解碼器核可從彼此獲得進(jìn)度信息?;谶M(jìn)度信息,解碼進(jìn)度同步器940a,940b將控制相應(yīng)解碼器核的進(jìn)度。
在本發(fā)明的又一實(shí)施例中,系統(tǒng)使能一個(gè)解碼器核中的運(yùn)動(dòng)補(bǔ)償,以從另一解碼器核存取重建的數(shù)據(jù),用于具有數(shù)據(jù)依賴(lài)關(guān)系的兩個(gè)幀的幀間級(jí)并行解碼。圖10圖示使能一個(gè)解碼器核從另一解碼器核存取重建的數(shù)據(jù)的系統(tǒng)架構(gòu)的示例,其中芯片上存儲(chǔ)器1030在兩個(gè)解碼器核1010,1020之間使用。來(lái)自一個(gè) 解碼器核的重建的數(shù)據(jù)儲(chǔ)存于芯片上存儲(chǔ)器由另一核再使用,以便減少帶寬消耗。在此示例中,p圖片分配到解碼器核0以及b圖片分配到解碼器核1,其中b圖片使用p圖片作為參考圖片。因此,p圖片或p圖片的部分需要在b圖片解碼開(kāi)始之前重建。在現(xiàn)有方法中,重建的p圖片數(shù)據(jù)將寫(xiě)入到解碼的參考圖片緩沖器,且解碼器核1將從解碼的參考圖片緩沖器存儲(chǔ)參考數(shù)據(jù)。如上所述,解碼的參考圖片緩沖器通常使用外部存儲(chǔ)器實(shí)施。因此,芯片上存儲(chǔ)器1030用于緩沖器由解碼器核1使用的p圖片的一些重建的數(shù)據(jù),以便處理b圖片。經(jīng)由芯片上存儲(chǔ)器的重建的數(shù)據(jù)的再使用的細(xì)節(jié)描述如下。
圖10中的芯片上存儲(chǔ)器1030可用作共享的輸出緩沖器,用于負(fù)責(zé)解碼p圖片的解碼器核01010。圖11圖示芯片上存儲(chǔ)器布置的另一方面。來(lái)自解碼器核1110的期望由另一解碼器核參考的重建的數(shù)據(jù)儲(chǔ)存于共享的輸出緩沖器1120(即,圖10中的芯片上存儲(chǔ)器)而不是直接儲(chǔ)存于外部存儲(chǔ)器1130。在重建的數(shù)據(jù)由另一解碼器核再使用后或當(dāng)重建的數(shù)據(jù)需要被清除時(shí),儲(chǔ)存于共享的輸出緩沖器1120的重建的數(shù)據(jù)寫(xiě)入到外部存儲(chǔ)器1130中的解碼的圖片緩沖器。儲(chǔ)存于共享的輸出緩沖器的重建的數(shù)據(jù)可以以小于整個(gè)幀的給定大小來(lái)安排。當(dāng)新的重建的數(shù)據(jù)被接收時(shí),一些以前所接收的數(shù)據(jù)可被清除。此外,儲(chǔ)存于共享的輸出緩沖器的數(shù)據(jù)的范圍可以由一個(gè)或多個(gè)窗口來(lái)表示,窗口位于兩個(gè)外部存儲(chǔ)器地址之間或在兩個(gè)點(diǎn)(x,y)和(x’,y’)之間。例如,塊1140表示重建的幀,其中數(shù)據(jù)位置1142對(duì)應(yīng)于剛接收的數(shù)據(jù),且數(shù)據(jù)位置1144對(duì)應(yīng)于清除的數(shù)據(jù)。數(shù)據(jù)位置1144和數(shù)據(jù)位置1142之間的數(shù)據(jù)區(qū)域儲(chǔ)存于共享的輸出緩沖器,顯示于塊1150中。也顯示于圖11中,數(shù)據(jù)位置1144和數(shù)據(jù)位置1142之間的數(shù)據(jù)區(qū)域包含三個(gè)窗口(即,窗口a、窗口b和窗口c)。數(shù)據(jù)位置1144和數(shù)據(jù)位置1142可以由外部存儲(chǔ)器地址(x,y)和(x’,y’)指定。當(dāng)數(shù)據(jù)被接收到或清除,每個(gè)窗口的范圍可以被更新。每個(gè)窗口可以連續(xù)空間或獨(dú)立空間存儲(chǔ)于芯片上存儲(chǔ)器。
盡管圖11中的窗口具有不同的大小,窗口也可具有共同的大小。共同大小可對(duì)應(yīng)于單個(gè)數(shù)據(jù)字、宏塊(mb)、子塊或更大塊。圖12圖示使用共同大小的窗口的示例。塊1210表示重建的幀,其中數(shù)據(jù)位置1212對(duì)應(yīng)于剛接收到的數(shù)據(jù),以及數(shù)據(jù)位置1214對(duì)應(yīng)于清除的數(shù)據(jù)。塊1220圖示在共享的輸出緩沖器中非連續(xù)空間中儲(chǔ)存尺寸固定窗口的示例。每個(gè)窗口可以映射到對(duì)應(yīng)于2次冪的值的地 址的較低部分的開(kāi)始地址。因此,窗口匹配可以通過(guò)比較地址子樣式來(lái)有效地實(shí)現(xiàn)。
根據(jù)本發(fā)明的另一方面,窗口檢測(cè)器用于確定要求的參考數(shù)據(jù)是否在共享的輸出緩沖器中,以及相應(yīng)地從外部存儲(chǔ)器的共享的輸出緩沖器存取要求的參考數(shù)據(jù)。當(dāng)核存取參考幀數(shù)據(jù)時(shí),窗口檢測(cè)器將通過(guò)與共享的輸出緩沖器中的每個(gè)窗口比較要求的參考幀數(shù)據(jù)地址或(x,y)位置,提供窗口匹配方法。如果要求的參考數(shù)據(jù)的地址/位置位于窗口的開(kāi)始與結(jié)束地址/位置之間,則指示參考數(shù)據(jù)在此窗口中。如果窗口匹配成功(即,要求的參考幀數(shù)據(jù)在窗口中),系統(tǒng)計(jì)算芯片上存儲(chǔ)器中要求的數(shù)據(jù)的偏置,并開(kāi)始從偏置位置讀取參考數(shù)據(jù)。當(dāng)窗口匹配失敗,如果要求的地址或位置已經(jīng)被清除,系統(tǒng)從外部存儲(chǔ)器讀取參考數(shù)據(jù),此可以通過(guò)系統(tǒng)使用地址或位置比較來(lái)得知。如果對(duì)于共享的輸出緩沖器和外部存儲(chǔ)器參考數(shù)據(jù)尚未就緒,系統(tǒng)可停止存取。
圖13圖示使用具有窗口檢測(cè)器1340的共享的輸出緩沖器的并行解碼器系統(tǒng)的示例。系統(tǒng)包含兩個(gè)解碼器核1310,1320、共享的輸出緩沖器1330和窗口檢測(cè)器1340。共享的輸出緩沖器1330和窗口檢測(cè)器1340耦合到外部存儲(chǔ)器1350。塊1360圖示重建幀中窗口a、b和c的位置,其中與窗口a、b和c關(guān)聯(lián)的重建的數(shù)據(jù)儲(chǔ)存于共享的輸出緩沖器,用于由解碼器核b1320的可能再使用。對(duì)于重建的幀,在窗口a之前重建的數(shù)據(jù)儲(chǔ)存于外部存儲(chǔ)器1350中的解碼的參考圖片緩沖器。例如,窗口a之前的參考數(shù)據(jù)1362儲(chǔ)存于外部存儲(chǔ)器的區(qū)域1354。塊1370圖示了共享的輸出緩沖器的狀態(tài)的示例,其中與窗口a、b和c關(guān)聯(lián)的重建的數(shù)據(jù)儲(chǔ)存于共享的輸出緩沖器。如果解碼器核b1320要求存取窗口b中重建的數(shù)據(jù)1362,窗口檢測(cè)器1340將檢測(cè)情況并從共享的輸出緩沖器讀取對(duì)應(yīng)重建的數(shù)據(jù)1372。在解碼器核b1320要求存取重建的數(shù)據(jù)1364已經(jīng)儲(chǔ)存于外部緩沖器1350的情況下,窗口檢測(cè)器1340將檢測(cè)情況并從外部存儲(chǔ)器1350讀取對(duì)應(yīng)重建的數(shù)據(jù)1354。
盡管圖13圖示使用具有窗口檢測(cè)器的共享的輸出緩沖器的并行解碼器系統(tǒng)的示例,但是實(shí)施例可以擴(kuò)展到具有多于兩個(gè)解碼器核的并行解碼器系統(tǒng)。圖14圖示使用具有窗口檢測(cè)器的共享的輸出緩沖器的多核并行解碼器系統(tǒng)的示例。系統(tǒng)包含多個(gè)解碼器核1410-01,1410-1,1410-2等、共享的輸出緩沖器1420和窗口檢測(cè)器1430。共享的輸出緩沖器1420和窗口檢測(cè)器1430耦合到外部存儲(chǔ)器 1440。復(fù)用器1450用于選擇一個(gè)解碼器核作為共享的輸出緩沖器1420的輸入,且解復(fù)用器1460用于將數(shù)據(jù)從窗口檢測(cè)器1430路由到一個(gè)解碼器核。共享的輸出緩沖器中的每個(gè)窗口可包含圖片id,以便共享的輸出緩沖器可在多個(gè)核之間共享。此外,窗口檢測(cè)器1430可服務(wù)多個(gè)核,以便兩個(gè)或多個(gè)解碼器核可參考共享的輸出緩沖器中的重建的數(shù)據(jù)。
以上描述是為了使本領(lǐng)域技術(shù)人員能夠如特定應(yīng)用其要求的內(nèi)容提供的實(shí)踐本發(fā)明。所描述的實(shí)施例的各種修改將對(duì)本領(lǐng)域的技術(shù)人員而言是顯而易見(jiàn)的,且本文定義的一般原理可以應(yīng)用到其它實(shí)施例。因此,本發(fā)明不意于限制于所顯示以及描述的特定實(shí)施例,而意于符合與本文揭示的原理和新穎特征一致的最廣范圍。在以上詳細(xì)描述中,各種具體細(xì)節(jié)已說(shuō)明以便提供本發(fā)明的完整理解。然而,本領(lǐng)域技術(shù)人員應(yīng)理解本發(fā)明可以實(shí)施。
并行解碼器系統(tǒng)也還可使用儲(chǔ)存于可讀媒體中的程序代碼來(lái)實(shí)施。軟件代碼可以使用軟件格式來(lái)配置,例如,java、c++、xml以及用于定義關(guān)于實(shí)施本發(fā)明的功能操作的裝置操作的功能的其它語(yǔ)言來(lái)實(shí)施。代碼可以以本領(lǐng)域技術(shù)人員知曉的不同的形式和風(fēng)格來(lái)編寫(xiě)。根據(jù)本發(fā)明的不同的代碼格式、代碼配置、軟件程序的風(fēng)格和形式以及配置代碼以定義微處理器的操作的其他裝備將不背離本發(fā)明的精神和范圍。軟件代碼可以在不同類(lèi)型的裝置上執(zhí)行,例如,膝上型計(jì)算機(jī)或臺(tái)式計(jì)算機(jī)、具有處理器或處理邏輯的手持裝置以及利用本發(fā)明的計(jì)算機(jī)服務(wù)器或其它裝置。所描述的示例在各方面僅僅是作為說(shuō)明性的并非限制性的。因此,本發(fā)明的范圍由所附的權(quán)利要求而不是上文的描述來(lái)指示。落入權(quán)利要求均等意思和范圍的所有改變均屬于其范圍。