專利名稱:用于視頻數(shù)據(jù)的處理器的制作方法
技術(shù)領(lǐng)域:
無
背景技術(shù):
視頻信息在當(dāng)今世界中隨處可見。兒童從為視頻而準(zhǔn)備的電視節(jié)目和教育課程中學(xué)習(xí)。成年人使用視頻進(jìn)行娛樂并保持對時(shí)事的了解。與用于記錄和分布視頻信息的較舊的模擬機(jī)制相比,數(shù)字多用途光盤(DVD)、數(shù)字電纜和衛(wèi)星電視使用數(shù)字視頻數(shù)據(jù)。數(shù)字視頻數(shù)據(jù)在當(dāng)今的家庭和辦公室環(huán)境中已變得越來越流行。
處理數(shù)字視頻數(shù)據(jù)中涉及的數(shù)值計(jì)算量需要極大量的計(jì)算能力。產(chǎn)生典型質(zhì)量的一秒鐘視頻的數(shù)字視頻數(shù)據(jù)需要執(zhí)行的算術(shù)計(jì)算在數(shù)千萬次與十億次之間。
與用于數(shù)字視頻數(shù)據(jù)的軟件編碼器、解碼器和代碼轉(zhuǎn)換器相比,硬件可用于加速視頻計(jì)算。然而,典型的硬件設(shè)計(jì)方法僅僅對一個(gè)特定分辨率下的一種特定格式的視頻數(shù)據(jù)操作。因此需要對不同分辨率、標(biāo)準(zhǔn)、格式等的視頻數(shù)據(jù)起作用的硬件。
發(fā)明內(nèi)容
本發(fā)明的各種實(shí)施例提供用于處理視頻數(shù)據(jù)的系統(tǒng)和方法。在一優(yōu)選實(shí)施例中,視頻處理器在運(yùn)行時(shí)間配置經(jīng)配置以便對具有各種屬性的視頻數(shù)據(jù)進(jìn)行操作。這些流可具有屬性(包括格式、標(biāo)準(zhǔn)化、分辨率、編碼、壓縮或其它屬性)的各種組合。視頻處理器根據(jù)動態(tài)控制機(jī)制來對各種視頻數(shù)據(jù)流進(jìn)行操作,所述動態(tài)控制機(jī)制包括(但不限于)寄存器中保存的程序或動態(tài)可配置值。
本發(fā)明的某些實(shí)施例提供一可經(jīng)由一指令序列來動態(tài)配置的視頻處理器,其中所述指令包括關(guān)于當(dāng)前視頻數(shù)據(jù)的屬性的信息。此信息配置視頻處理器以便接收具有特定屬性的視頻數(shù)據(jù),以便產(chǎn)生具有特定屬性的視頻數(shù)據(jù),或兩種情況均可。
視頻處理器的操作由至少一個(gè)指令序列控制。可同時(shí)采用多個(gè)序列,借此使處理器同時(shí)產(chǎn)生和/或接收具有不同屬性的視頻流。
在本發(fā)明的某些實(shí)施例中,一個(gè)或一個(gè)以上控制處理器將指令序列提供到視頻處理器??刂铺幚砥骱鸵曨l處理器適合于作為協(xié)處理器而共同操作?;蛘呋蛄硗?,指令序列可存儲在一個(gè)或一個(gè)以上指令存儲器中或與視頻處理器相關(guān)聯(lián)的隊(duì)列中。
本發(fā)明的某些實(shí)施例提供一可經(jīng)由控制機(jī)制來動態(tài)配置的加法器陣列,所述控制機(jī)制包括(但不限于)指令、寄存器值、控制信號或可編程鏈接。在處理器通過加法器陣列發(fā)送視頻數(shù)據(jù)時(shí),陣列產(chǎn)生處理視頻數(shù)據(jù)所需的數(shù)字、邏輯或連續(xù)計(jì)算結(jié)果。
在本發(fā)明的某些實(shí)施例中,使用加法器陣列來計(jì)算差值函數(shù)從而產(chǎn)生誤差向量。誤差向量可用于檢測時(shí)間相關(guān)的多組視頻數(shù)據(jù)之間的運(yùn)動。誤差向量也可用于計(jì)算輸出視頻中編碼的殘余數(shù)據(jù)。
在本發(fā)明的某些實(shí)施例中,還使用加法器陣列來計(jì)算施加于視頻數(shù)據(jù)的過濾函數(shù)。這些過濾函數(shù)包括(但不限于)在運(yùn)動檢測之前對傳入的視頻的插值或抽選。
經(jīng)抽選或插值的PEL可用于產(chǎn)生具有與輸入視頻不同的屬性的輸出視頻?;蛘呋蛄硗猓瑑H在編碼或壓縮處理期間持續(xù)的經(jīng)抽選或插值的PEL可用于增加輸出視頻的精度或感知質(zhì)量。這些用途包括(但不限于)分級技術(shù),其基于減小一初始頂層運(yùn)動掃描的輸入視頻的分辨率來增加運(yùn)動檢測的性能;或插值技術(shù),其用于增加運(yùn)動檢測的精度。
本發(fā)明的某些實(shí)施例提供動態(tài)可配置硬件搜索操作??沙鲇诟鞣N目的而在編碼視頻時(shí)使用這些操作,所述目的包括(但不限于)檢測時(shí)間相關(guān)的多組視頻數(shù)據(jù)之間的運(yùn)動。單個(gè)硬件操作將一組視頻數(shù)據(jù)內(nèi)的參考塊與同一組或一不同組視頻數(shù)據(jù)內(nèi)的一組區(qū)域進(jìn)行比較。除了視頻數(shù)據(jù)的屬性是可動態(tài)配置的之外,所述組內(nèi)區(qū)域的數(shù)目和各個(gè)區(qū)域之間的相對偏移量和是可動態(tài)配置的。
使用自適應(yīng)計(jì)算機(jī)(ACM)來實(shí)施本發(fā)明的某些實(shí)施例。一ACM包括復(fù)數(shù)個(gè)異類計(jì)算元件,其每一者均耦合到一互連網(wǎng)絡(luò)。
當(dāng)結(jié)合附圖閱讀時(shí),從本文的描述和討論將明了本發(fā)明的各種實(shí)施例的目的、特征和優(yōu)點(diǎn)。在所附圖式中說明與本發(fā)明相關(guān)的技術(shù)、本發(fā)明的實(shí)例實(shí)施例和本發(fā)明的實(shí)例用途圖1展示根據(jù)本發(fā)明實(shí)施例的視頻處理器的高級功能方框圖。
圖2展示根據(jù)本發(fā)明實(shí)施例的域視頻節(jié)點(diǎn)(DVN)。
圖3展示如何根據(jù)本發(fā)明實(shí)施例來界定中心搜索位置。
圖4展示根據(jù)本發(fā)明實(shí)施例的48×48參考塊內(nèi)的搜索區(qū)域。
圖5展示根據(jù)本發(fā)明實(shí)施例的同時(shí)搜索中心8×5位置的處理。
圖6展示根據(jù)本發(fā)明實(shí)施例的搜索中心九組8×5位置的處理。
圖7展示根據(jù)本發(fā)明實(shí)施例的半PEL雙線性插值的處理。
圖8展示根據(jù)本發(fā)明實(shí)施例的全PEL至半PEL雙線性插值的處理。
圖9展示根據(jù)本發(fā)明實(shí)施例的半PEL編號慣例。
圖10展示根據(jù)本發(fā)明實(shí)施例的基于h.264六分支過濾的半PEL插值的處理。
圖11展示根據(jù)本發(fā)明實(shí)施例的基于六分支過濾的h.264半PEL插值的處理。
圖12展示根據(jù)本發(fā)明實(shí)施例的自適應(yīng)計(jì)算機(jī)(ACM)節(jié)點(diǎn)的某些元件。
圖13展示根據(jù)本發(fā)明實(shí)施例的域視頻節(jié)點(diǎn)(DVN)編程模型內(nèi)的某些硬件元件。
圖14展示根據(jù)本發(fā)明實(shí)施例的有限狀態(tài)機(jī)(FSM)的狀態(tài)轉(zhuǎn)變表。
圖15展示根據(jù)本發(fā)明實(shí)施例的DVN的任務(wù)參數(shù)列表(TPL)。
圖16展示根據(jù)本發(fā)明實(shí)施例的TPL內(nèi)的位置0x00至0x03的格式。
圖17展示根據(jù)本發(fā)明實(shí)施例的TPL內(nèi)的位置0x04和0x05的格式。
圖18展示根據(jù)本發(fā)明實(shí)施例的TPL內(nèi)的應(yīng)答+測試參數(shù)的格式。
圖19展示根據(jù)本發(fā)明實(shí)施例的設(shè)置與繼續(xù)寄存器的格式。
圖20展示根據(jù)本發(fā)明實(shí)施例的設(shè)置與繼續(xù)字節(jié)代碼的格式。
圖21A至21E展示根據(jù)本發(fā)明實(shí)施例的應(yīng)答+測試字節(jié)代碼的格式。
圖22展示根據(jù)本發(fā)明實(shí)施例的“典型”任務(wù)TPL條目和字節(jié)代碼的格式。
圖23展示根據(jù)本發(fā)明實(shí)施例的組織為具有512個(gè)32位的字的八個(gè)存儲庫的DVN存儲器的存儲映射圖。
圖24展示根據(jù)本發(fā)明實(shí)施例的命令緩沖器數(shù)據(jù)結(jié)構(gòu)的格式。
圖25展示根據(jù)本發(fā)明實(shí)施例的“至控制器”狀態(tài)字的格式。
圖26展示根據(jù)本發(fā)明實(shí)施例的根據(jù)用于M乘N的5×5搜索范圍的存儲器與時(shí)鐘周期的參考塊長字的格式。
圖27展示根據(jù)本發(fā)明實(shí)施例的分?jǐn)?shù)PEL成本函數(shù)和表的格式。
圖28展示根據(jù)本發(fā)明實(shí)施例的具有M=50列和N=50行的參考塊的存儲器布局。
圖29展示根據(jù)本發(fā)明實(shí)施例的尺寸為16PEL乘16PEL的當(dāng)前塊的存儲器布局。
圖30展示根據(jù)本發(fā)明實(shí)施例的50乘50參考塊內(nèi)的搜索區(qū)域。
圖31展示根據(jù)本發(fā)明實(shí)施例的同時(shí)搜索中心5乘5位置的處理。
圖32展示根據(jù)本發(fā)明實(shí)施例的同時(shí)搜索中心9組5乘5位置的處理。
圖33展示根據(jù)本發(fā)明實(shí)施例的四十九組5乘5位置的窮舉搜索的處理。
圖34展示根據(jù)本發(fā)明實(shí)施例的在沒有重新載入預(yù)插值緩沖器的情況下加/減17搜索的參考塊尺寸。
圖35展示根據(jù)本發(fā)明實(shí)施例的需要預(yù)插值緩沖器重新載入的全PEL搜索區(qū)域。
圖36展示根據(jù)本發(fā)明實(shí)施例的全PEL至半PEL雙線性插值。
圖37展示根據(jù)本發(fā)明實(shí)施例的半PEL雙線性插值陣列。
圖38展示根據(jù)本發(fā)明實(shí)施例的用于H.264視頻的基于6分支過濾的半PEL插值。
圖39展示根據(jù)本發(fā)明實(shí)施例的半PEL插值有限脈沖響應(yīng)(FIR)過濾的概述。
圖40展示根據(jù)本發(fā)明實(shí)施例的半PEL編號慣例。
圖41展示根據(jù)本發(fā)明實(shí)施例的用于MicrosoftWindows媒體視頻(WMV)的子PEL插值FIR過濾的概述。
圖42展示根據(jù)本發(fā)明實(shí)施例的四分之一PEL編號慣例。
圖43展示根據(jù)本發(fā)明實(shí)施例的DVN的執(zhí)行單元。
具體實(shí)施例方式
本文的描述、討論和圖式說明與本發(fā)明相關(guān)的技術(shù),且展示本發(fā)明和使用本發(fā)明的實(shí)例??稍诓唤o定細(xì)節(jié)的情況下說明和描述已知方法、程序、系統(tǒng)、電路或元件,以便避免混淆本發(fā)明的原理。另一方面,描述本發(fā)明的特定實(shí)施例的細(xì)節(jié),即使這些細(xì)節(jié)可能不會應(yīng)用于本發(fā)明的其它實(shí)施例。
本文中的某些描述和討論使用抽象或普通術(shù)語,包括(但不限于)接收、呈現(xiàn)、提示、產(chǎn)生、是或否。所屬領(lǐng)域的技術(shù)人員使用這些術(shù)語作為用于計(jì)算機(jī)、數(shù)字設(shè)備或機(jī)電系統(tǒng)內(nèi)的組件、數(shù)據(jù)或操作的術(shù)語。這些組件、數(shù)據(jù)和操作體現(xiàn)在實(shí)際物體的物理特性中,所述物理特性包括(但不限于)電子電壓、磁場和光學(xué)反射率。類似地,包括(但不限于)比較、確定、計(jì)算和控制的理解性或思維性術(shù)語也可用于提到這些組件、數(shù)據(jù)或操作,或提到這些物理操作。
圖1是根據(jù)本發(fā)明實(shí)施例的視頻處理器的高級功能方框圖。視頻處理器100包括一個(gè)或一個(gè)以上視頻數(shù)據(jù)設(shè)備110,其保存或提供對視頻數(shù)據(jù)的網(wǎng)絡(luò)訪問;一個(gè)或一個(gè)以上視頻計(jì)算引擎120;一個(gè)或一個(gè)以上設(shè)備130,其保存當(dāng)前狀態(tài)信息;一個(gè)或一個(gè)以上控制模塊140;和一個(gè)或一個(gè)以上控制與配置數(shù)據(jù)設(shè)備150,其保存或提供對控制與配置數(shù)據(jù)的網(wǎng)絡(luò)訪問。
視頻數(shù)據(jù)110包括(但不必限于)輸入視頻數(shù)據(jù)112、輸出視頻數(shù)據(jù)114和中間結(jié)果116。在本發(fā)明的各種實(shí)施例中,視頻數(shù)據(jù)110保存在以下一者或一者以上中與視頻處理器100的其余部分處于同一集成電路內(nèi)的存儲器模塊;所述IC外部的存儲器設(shè)備;寄存器堆;或保存數(shù)據(jù)的其它電路。
視頻計(jì)算引擎120包括(但不必限于)以下各者輸入多路復(fù)用器122;濾波器功能電路124;運(yùn)動搜索電路126;誤差(例如,絕對差和(SAD))計(jì)算電路127;和輸出格式器電路128。運(yùn)動估計(jì)引擎120接收輸入視頻數(shù)據(jù)112和中間結(jié)果116,并產(chǎn)生中間結(jié)果116和輸出視頻114。
視頻計(jì)算引擎120應(yīng)用到所接收數(shù)據(jù)以便產(chǎn)生結(jié)果116和114的處理功能和操作受控制信號146控制。在信號146控制下,引擎120的各種實(shí)施例執(zhí)行各種功能,包括(但不限于)編碼、解碼、代碼轉(zhuǎn)換和運(yùn)動估計(jì)。
視頻輸入112、視頻輸出114和中間結(jié)果116的屬性由控制信號146指定。這些屬性包括(但不必限于)格式、標(biāo)準(zhǔn)化、分辨率、編碼或壓縮度。
控制模塊140基于控制與配置數(shù)據(jù)150和當(dāng)前狀態(tài)數(shù)據(jù)130產(chǎn)生控制信號146。控制模塊140包括(但不必限于)硬件任務(wù)管理器142、有限狀態(tài)機(jī)144和命令解碼器146。
當(dāng)前狀態(tài)130包括(但不必限于)視頻數(shù)據(jù)110內(nèi)各項(xiàng)已準(zhǔn)備處理的指示,以及控制與配置數(shù)據(jù)150內(nèi)的各種數(shù)據(jù)項(xiàng)已準(zhǔn)備好控制應(yīng)用到視頻數(shù)據(jù)110的處理操作的指示。當(dāng)前狀態(tài)130實(shí)施計(jì)算的數(shù)據(jù)流模型,因?yàn)樘幚硎窃谝曨l數(shù)據(jù)和控制與配置數(shù)據(jù)就緒時(shí)發(fā)生。
控制與配置數(shù)據(jù)150包括(但不必限于)命令序列152、任務(wù)參數(shù)列表154和地址與指針156。地址與指針156是指視頻數(shù)據(jù)110、控制與配置數(shù)據(jù)150或此兩者內(nèi)的各個(gè)數(shù)據(jù)項(xiàng)。在本發(fā)明的各種實(shí)施例中,視頻數(shù)據(jù)110保存在以下一者或一者以上中與視頻處理器100的其余部分處于同一集成電路內(nèi)的存儲器模塊;所述IC外部的存儲器設(shè)備;寄存器堆;或保存數(shù)據(jù)的其它電路和設(shè)備。
視頻數(shù)據(jù)110的各種組份具有各種屬性,包括(但不限于)格式、標(biāo)準(zhǔn)化和分辨率。視頻數(shù)據(jù)110內(nèi)的組份可具有包括以下各項(xiàng)中至少一者的格式MPEG-2、MPEG-4版本;Windows媒體視頻(WMV)版本;或國際電信聯(lián)盟(International TelecommunicationsUnion,ITU-T)標(biāo)準(zhǔn)X.264版本。X.264還已知為領(lǐng)導(dǎo)標(biāo)準(zhǔn)開發(fā)的群組之后的聯(lián)合視頻組(joint video team,JVT)。X.264還已知為國際標(biāo)準(zhǔn)組織/國際電工委員會(ISO/IEC)標(biāo)準(zhǔn)運(yùn)動圖像專家組第4層(MPEG-4)第10部分。視頻數(shù)據(jù)110內(nèi)的組份可具有一分辨率,其包括約四分之一CEL(例如將由手機(jī)拍攝的靜止圖片所使用)與由高清晰度電視(HDTV)版本所界定的約一分辨率之間的任何分辨率。
自適應(yīng)計(jì)算機(jī)(ACM)包括由同等級網(wǎng)絡(luò)(homogeneous network)連接的異類節(jié)點(diǎn)。這些異類節(jié)點(diǎn)包括(但不限于)域視頻節(jié)點(diǎn)(domain video node,DVN)。這種同等級網(wǎng)絡(luò)包括(但不限于)矩陣互連網(wǎng)絡(luò)(MIN)。在以上引用為相關(guān)申請案的專利和專利申請案中描述本發(fā)明某些實(shí)施例的某些方面(例如MIN)和對自適應(yīng)計(jì)算機(jī)(ACM)的其它方面的進(jìn)一步描述。
域視頻節(jié)點(diǎn)(DVN)可實(shí)施為ACM中的節(jié)點(diǎn)類型,或其可用任何合適的硬件和/或軟件設(shè)計(jì)方法來實(shí)施。舉例來說,可將本發(fā)明實(shí)施例的功能設(shè)計(jì)為離散電路、包括定制、半定制或其它的集成電路、可編程門陣列、特殊應(yīng)用集成電路(ASIC)等。在需要時(shí)可由硬件、軟件或兩者的組合來執(zhí)行功能。本文描述的各種功能可單獨(dú)有利地使用,或以與其它功能(包括現(xiàn)有技術(shù)中已知的或仍將開發(fā)的功能)的組合或子組合來使用。DVN是可重新配置的數(shù)字視頻處理器,其可實(shí)現(xiàn)與ASIC相當(dāng)?shù)墓β?面積-性能度量。
在一個(gè)實(shí)施例中,DVN以具有可重新配置性的額外益處而包括在ACM中,使其能夠執(zhí)行許多常用的可能需要多個(gè)ASIC來實(shí)現(xiàn)相同功能性的運(yùn)動估計(jì)算法。然而,其它實(shí)施例可以包括在不可配置或部分可配置的設(shè)計(jì)中的任何合適的方式來實(shí)施DVN,或DVN的部分或功能。
視頻處理包括一運(yùn)動估計(jì)步驟,其需要相當(dāng)大的計(jì)算能力,尤其是針對較高的幀分辨率的情況。域視頻節(jié)點(diǎn)(DVN)是一類ACM節(jié)點(diǎn),其供執(zhí)行運(yùn)動估計(jì)功能和其它視頻處理功能。
圖2中展示DVN的簡化方框圖。運(yùn)動估計(jì)由對當(dāng)前幀的像素(即,PEL)塊與來自前一幀、后一幀或兩者的塊進(jìn)行比較以定位具有最低失真的塊組成。所述比較可(例如)包括常用的用于選擇標(biāo)準(zhǔn)的“絕對差和(SAD)”度量。
DVN包括八個(gè)2KB節(jié)點(diǎn)存儲器,其允許每一時(shí)鐘周期有十六個(gè)SAD操作。這還允許針對每一維度中的+/-16個(gè)PEL的搜索面積,用于16×16個(gè)當(dāng)前塊(宏塊(macroblock))和48×48個(gè)參考塊的重疊的數(shù)據(jù)輸入和計(jì)算/結(jié)果輸出的雙緩沖。
DVN操作包括1)全PEL搜索;2)18×18全PEL到33×33半PEL雙線性插值;3)半PEL搜索;4)將關(guān)聯(lián)的16×16宏塊的最佳度量和原點(diǎn)輸出到指定節(jié)點(diǎn),并將16×16宏塊本身輸出到解碼器運(yùn)動補(bǔ)償引擎。
全PEL搜索DVN支持兩種模式的全PEL搜索操作。一種模式每次一個(gè)地估計(jì)每一16×16位置,每個(gè)時(shí)鐘周期執(zhí)行16個(gè)SAD操作;第二模式同時(shí)估計(jì)四十個(gè)連續(xù)位置,每個(gè)時(shí)鐘周期執(zhí)行160個(gè)SAD操作。對于兩種模式,評估由計(jì)算當(dāng)前16×16宏塊與來自48×48參考塊的1089個(gè)位置中的一個(gè)位置的16×16宏塊之間的“絕對差和(SAD)”度量組成,從而總是保存關(guān)聯(lián)的16×16宏塊的最佳度量和原點(diǎn)。
對于每一模式,搜索樣式可為許多硬連線樣式或由節(jié)點(diǎn)產(chǎn)生并存儲在位于DVN中的隊(duì)列中的x、y坐標(biāo)(原點(diǎn))列表所指定的許多位置??墒褂酶鞣N隊(duì)列數(shù)據(jù)結(jié)構(gòu),且可支持各種早期完成策略。
48×48參考塊內(nèi)存在1089個(gè)候選搜索位置。圖3中展示具有相對坐標(biāo)H(0)、V(0)的“中心”位置。在圖4中突出顯示五個(gè)搜索位置中心位置,H(0)、V(0);上部最左邊位置,H(-16)、V(-16);上部最右邊位置,H(+16)、V(-16);下部最左邊位置,H(-16)、V(+16);和下部最右邊位置,H(+16)、V(+16)。
圖5中展示同時(shí)搜索40個(gè)位置(48×48參考塊的中心處的8×5個(gè)位置)的實(shí)例。
圖6中展示搜索參考塊中心處的九組40個(gè)位置的實(shí)例。水平搜索范圍是-12到+11,垂直搜索范圍是-7到+7,且所搜索位置的總數(shù)是360。
半PEL雙線性插值在全PEL搜索具有最佳失真度量的16×16個(gè)宏塊之后,對周圍的18×18PEL陣列執(zhí)行雙線性插值,產(chǎn)生33×33半PEL陣列,如圖7中所示。在圖8中概述用于半PEL雙線性插值的計(jì)算。
半PEL搜索在執(zhí)行雙線性插值之后,DVN計(jì)算九個(gè)候選的半PEL位置中每一者的SAD度量。圖9中展示半PEL數(shù)據(jù)的編號慣例。從圖式可見,已經(jīng)計(jì)算全PEL位置(位置“5”)的度量。因此,半PEL搜索由產(chǎn)生其它八個(gè)半PEL位置中每一者的SAD度量以確定九個(gè)候選者中哪一個(gè)具有最佳度量組成。
輸出結(jié)果將33×33半PEL陣列內(nèi)關(guān)聯(lián)的16×16宏塊的最佳度量和原點(diǎn)輸出到指定節(jié)點(diǎn)。將16×16宏塊本身輸出到解碼器的運(yùn)動補(bǔ)償引擎。
DVN操作概要DVN包括QST節(jié)點(diǎn)包裝器(Node Wrapper)、八個(gè)2KB節(jié)點(diǎn)存儲器(每一者組織為512個(gè)32位的字)和運(yùn)動估計(jì)引擎(ME)。ME執(zhí)行如上文概述的全PEL搜索、雙線性插值和半PEL搜索。其將關(guān)聯(lián)的16×16宏塊的最佳度量和原點(diǎn)輸出到指定節(jié)點(diǎn);且其將16×16宏塊本身輸出到解碼器的運(yùn)動補(bǔ)償引擎。
將八個(gè)節(jié)點(diǎn)存儲器的每一者分割為乒乓緩沖器對(ping pong buffer pair)以允許完全重疊的數(shù)據(jù)輸入和計(jì)算/結(jié)果輸出。在一個(gè)數(shù)據(jù)組已從指定存儲器轉(zhuǎn)移到八個(gè)DVN存儲器之后,DVN ME執(zhí)行其計(jì)算并輸出其結(jié)果。在此時(shí)間期間,下一數(shù)據(jù)組從另一系統(tǒng)存儲器轉(zhuǎn)移到八個(gè)DVN存儲器。依此類推。
每一數(shù)據(jù)組由48×48PEL陣列(參考塊)和16×16PEL陣列(當(dāng)前塊)組成。這些數(shù)據(jù)以最優(yōu)化ME對數(shù)據(jù)的訪問的方式分布于八個(gè)節(jié)點(diǎn)存儲器之間。通常,這包括每個(gè)時(shí)鐘周期對來自八個(gè)節(jié)點(diǎn)存儲器中每一者的四字節(jié)數(shù)據(jù)的訪問。這允許在“快速搜索”模式期間每一時(shí)鐘周期將執(zhí)行十六個(gè)SAD操作,其中每次評估一個(gè)16×16搜索位置。另外,對于“四十個(gè)同時(shí)搜索位置”模式,其允許每個(gè)時(shí)鐘周期對來自參考塊的四行的數(shù)據(jù)和來自當(dāng)前塊的四行的數(shù)據(jù)的訪問。
節(jié)點(diǎn)存儲器訪問概要每一數(shù)據(jù)組在指定節(jié)點(diǎn)控制下經(jīng)由自適應(yīng)計(jì)算機(jī)(ACM)結(jié)構(gòu)的矩陣互連網(wǎng)絡(luò)(MIN)從指定存儲器轉(zhuǎn)移到八個(gè)DVN節(jié)點(diǎn)存儲器。對于48×48PEL參考塊將行0、4、8、...、44寫入節(jié)點(diǎn)存儲器1內(nèi)的連續(xù)位置;將行1、5、9、...、45寫入節(jié)點(diǎn)存儲器2內(nèi)的連續(xù)位置;將行2、6、10、...、46寫入節(jié)點(diǎn)存儲器3內(nèi)的連續(xù)位置;和將行3、7、11、...、47寫入節(jié)點(diǎn)存儲器4內(nèi)的連續(xù)位置。對于16×16PEL當(dāng)前塊將行0、4、8和12寫入節(jié)點(diǎn)存儲器1和5;將行1、5、9和13寫入節(jié)點(diǎn)存儲器2和6;將行2、6、10和14寫入節(jié)點(diǎn)存儲器3和7;和將行3、7、11和15寫入節(jié)點(diǎn)存儲器4和8。
在全PEL搜索期間,ME從存儲器1至4讀取參考塊數(shù)據(jù),且其從存儲器5至8讀取當(dāng)前塊數(shù)據(jù)。在雙線性插值期間,ME從存儲器1至4讀取全PEL參考塊數(shù)據(jù),且其將參考塊半PEL插值數(shù)據(jù)寫入存儲器5至8。在半PEL搜索期間,ME從存儲器5至8讀取參考塊半PEL插值數(shù)據(jù),且其從存儲器1至4讀取當(dāng)前塊數(shù)據(jù)。最后,為了將16×16宏塊輸出到解碼器的運(yùn)動補(bǔ)償引擎,ME從存儲器5至8進(jìn)行讀取并寫入到MIN。
節(jié)點(diǎn)存儲器組織(數(shù)據(jù)輸入到節(jié)點(diǎn)存儲器期間)對于節(jié)點(diǎn)存儲器1至4,參考塊數(shù)據(jù)將循序存儲在位置0x00至0x8F;當(dāng)前塊數(shù)據(jù)將循序存儲在位置0xC0至0xCF。對于節(jié)點(diǎn)存儲器5至8,當(dāng)前塊數(shù)據(jù)將循序存儲在位置0xC0至0xCF。
節(jié)點(diǎn)存儲器組織(雙線性插值期間)對于節(jié)點(diǎn)存儲器5至8,候選位置1(7)的半PEL數(shù)據(jù)將循序存儲在位置0x00至0x10。候選位置2(8)的半PEL數(shù)據(jù)將循序存儲在位置0x20至0x30。候選位置3(9)的半PEL數(shù)據(jù)將循序存儲在位置0x40至0x50。候選位置4的半PEL數(shù)據(jù)將循序存儲在位置0x80至0x8F。候選位置5的半PEL數(shù)據(jù)將循序存儲在位置0x90至0x9F。候選位置6的半PEL數(shù)據(jù)將循序存儲在位置0xA0至0xAF。
DVN編程模型DVN的所有配置與控制信息將駐存在其TPL中。常規(guī)操作將采用合適數(shù)目的包裝器的64個(gè)計(jì)數(shù)器和用于搜索隊(duì)列的合適的數(shù)據(jù)結(jié)構(gòu)??墒褂糜糜谌玃EL搜索模式兩者的合適數(shù)目與特性的硬連線搜索樣式。
未來的DVN能力可(例如)包括(但不限于)用于快速全PEL搜索的增加的SAD強(qiáng)度;1/4PEL處理;和雙三次插值。
自適應(yīng)計(jì)算機(jī)(ACM)包括由同等級網(wǎng)絡(luò)連接的異類節(jié)點(diǎn)。每一節(jié)點(diǎn)包括三個(gè)元件包裝器、存儲器和執(zhí)行單元,如圖12所示。
域視頻節(jié)點(diǎn)(DVN)是可重新配置的數(shù)字視頻處理器,其實(shí)現(xiàn)可與特殊應(yīng)用集成電路(ASIC)相當(dāng)?shù)墓β?面積-性能度量,其具有可重新配置性的額外益處,使其能夠執(zhí)行許多常用的可能需要多個(gè)ASIC來實(shí)現(xiàn)相同功能性的運(yùn)動估計(jì)算法。
圖13中展示描繪DVN編程環(huán)境的方框圖。DVN節(jié)點(diǎn)包裝器中的硬件任務(wù)管理器(HTM)和DVN EU中的有限狀態(tài)機(jī)(FSM)提供DVN的高級控制。這個(gè)接口包括ACM標(biāo)準(zhǔn)EU_RUN、EU_CONTINUE和從包裝器到EU的EU_TEARDOWN信號,以及從EU到包裝器的ACK+TEST與EUDONE響應(yīng)。
圖14中展示FSM的轉(zhuǎn)變表。FSM采取六種狀態(tài)中的一種空閑、設(shè)置、執(zhí)行、ACK+TEST、等待或繼續(xù)。當(dāng)節(jié)點(diǎn)未啟用或執(zhí)行單元(EU)未啟用時(shí),F(xiàn)SM將進(jìn)入并保持在其空閑狀態(tài)。只要節(jié)點(diǎn)包裝器確定“eu_abort”信號,F(xiàn)SM也將轉(zhuǎn)變到其空閑狀態(tài)。另外,當(dāng)FSM響應(yīng)于節(jié)點(diǎn)包裝器對“eu_teardown”信號的確定而退出其等待狀態(tài)時(shí),F(xiàn)SM轉(zhuǎn)變到空閑狀態(tài)。
FSM的典型操作序列將包括以下轉(zhuǎn)變·響應(yīng)于節(jié)點(diǎn)包裝器對“eu_run”信號的確定而從空閑轉(zhuǎn)變到設(shè)置在設(shè)置期間,字節(jié)代碼控制eu的初始化,使eu的配置寄存器載入有存儲在位于節(jié)點(diǎn)存儲器中的“任務(wù)參數(shù)列表(TPL)”中的參數(shù)。
·響應(yīng)于“done”設(shè)置字節(jié)代碼而從設(shè)置轉(zhuǎn)變到執(zhí)行。在執(zhí)行期間,eu處理來自一命令隊(duì)列的指令,以執(zhí)行全PEL搜索、分?jǐn)?shù)PEL插值、分?jǐn)?shù)PEL搜索、宏塊帶正負(fù)號差值和結(jié)果輸出的運(yùn)動估計(jì)操作。
·當(dāng)從命令隊(duì)列讀取DONE指令時(shí),從執(zhí)行轉(zhuǎn)變到ACK+TEST。在ACK+TEST期間,將應(yīng)答發(fā)送到網(wǎng)絡(luò)以指示在運(yùn)動估計(jì)階段產(chǎn)生和消耗多少數(shù)據(jù)。通常,最終應(yīng)答將包括“test”指示,以便查詢節(jié)點(diǎn)包裝器的硬件任務(wù)管理器(HTM)what′s next?·響應(yīng)于ACK+TEST字節(jié)代碼ACK+TEST而從ACK+TEST轉(zhuǎn)變到等待。FSM保存在其等待狀態(tài),直到其接收到來自節(jié)點(diǎn)包裝器的?what′s next?響應(yīng)。
·響應(yīng)于節(jié)點(diǎn)包裝器對“eu_teardown”信號的確定而從等待轉(zhuǎn)變到空閑。FSM確定“eu_done”。
·響應(yīng)于節(jié)點(diǎn)包裝器對“eu_continue”信號的確定而從等待轉(zhuǎn)變到繼續(xù)。在繼續(xù)期間,字節(jié)代碼控制用來自位于節(jié)點(diǎn)存儲器中的TPL的參數(shù)對一定eu寄存器的重新載入。
·響應(yīng)于繼續(xù)“done”字節(jié)而從繼續(xù)轉(zhuǎn)變到執(zhí)行。
以上序列在ACK+TEST之后將FSM的控制返回到節(jié)點(diǎn)包裝器的HTM。DVN也可經(jīng)編程以在“ack-ing”之后保留控制。操作包括向繼續(xù)或空閑的條件/無條件狀態(tài)轉(zhuǎn)變(在確定“eu_done”之后)。測試條件包括節(jié)點(diǎn)包裝器的64個(gè)計(jì)數(shù)器中的任一者的正負(fù)號(msb)、一定TPL條目的正負(fù)號(msb)和字節(jié)代碼控制的5位降值計(jì)數(shù)器的正負(fù)號(msb)。
任務(wù)執(zhí)行所需的所有信息均包含在位于節(jié)點(diǎn)存儲器中的“任務(wù)參數(shù)列表(TPL)”中。在設(shè)置期間,DVN硬件從其節(jié)點(diǎn)存儲器中檢索指向TPL的指針。用于多達(dá)31個(gè)任務(wù)的指針存儲在位于由節(jié)點(diǎn)包裝器信號{tpt_br[8:O],active_task[4:0]}指定的位置處的節(jié)點(diǎn)存儲器中的31個(gè)連續(xù)字中。
對每一DVN TPL指派節(jié)點(diǎn)存儲器的64個(gè)長字。TPL的前八個(gè)條目經(jīng)保留以用于特定信息。其余56個(gè)長字可用于存儲用于設(shè)置、ACK+TEST和繼續(xù)的參數(shù)。
TPL位置0x00含有兩個(gè)用于設(shè)置的參數(shù)節(jié)點(diǎn)存儲器中用于其字節(jié)代碼的開始地址,和從TPL指針到其參數(shù)的偏移量。TPL位置0x01含有兩個(gè)用于ACK+TEST的參數(shù)節(jié)點(diǎn)存儲器中用于其字節(jié)代碼的開始地址,和從TPL指針到其參數(shù)的偏移量。TPL位置0x02含有一個(gè)用于拆分的參數(shù)節(jié)點(diǎn)存儲器中用于其字節(jié)代碼的開始地址。(當(dāng)前,沒有“拆分”的對象,所以這是在稍后有需要的情況下的占位符)。TPL位置0x03含有三個(gè)用于繼續(xù)的參數(shù)節(jié)點(diǎn)存儲器中用于其字節(jié)代碼的開始地址,和從TPL指針到其兩組參數(shù)的偏移量。TPL位置0x04和0x05用于字節(jié)代碼可操作的一對信號量;且位置0x06和0x07經(jīng)保留。TPL位置0x08至0x3F可用于存儲所有其它任務(wù)參數(shù)。
圖15中展示DVN任務(wù)參數(shù)列表的布局。TPL存儲用于三種狀態(tài)中每一者的參數(shù)組設(shè)置、ACK+TEST和繼續(xù)。對于繼續(xù)狀態(tài),可有兩組參數(shù),其中每一組具有相同數(shù)目的參數(shù)但具有不同的TPL指針偏移量。這允許兩組全局參數(shù)(例如,使用過程節(jié)點(diǎn)目的地、分?jǐn)?shù)PEL差值過濾等)中的一組之間的條件選擇。用于特定狀態(tài)的參數(shù)組必須存儲在TPL中的連續(xù)位置中。在字節(jié)代碼LOAD指令執(zhí)行時(shí),DVN硬件選擇組中的下一參數(shù)。從TPL指針到用于所述狀態(tài)的第一參數(shù)的位置的偏移量必須在以下范圍中0x08至0x3F。
DVN TPL存儲器/寄存器格式在圖16中展示含有字節(jié)代碼開始地址和TPL指針偏移量的TPL位置0x00至0x03的格式。圖17中展示TPL位置0x04和0x05處兩個(gè)信號量的格式。圖18中展示開始于TPL位置(TPL指針加上ACK+TEST偏移量)的ACK+TEST參數(shù)的格式。圖19中展示在設(shè)置和繼續(xù)期間載入有TPL參數(shù)的寄存器的格式。
控制與狀態(tài)寄存器(CSR)DVN CSR包括字段,所述字段指定使用哪些插值過濾、如何在參考塊邊緣插值、64個(gè)旗標(biāo)中哪些指示“命令隊(duì)列重新定向”、使用哪些乒乓緩沖器對,和對于參考塊,每行中長字的數(shù)目。
表1和2描述位[6:5]和位[4:0]。
表1分?jǐn)?shù)PEL插值過濾選擇位[4:0]
表2參考塊邊緣位[6:5]處的插值方法位[13:8]是命令隊(duì)列重新定向旗標(biāo)??偸窃谔幚砻铌?duì)列時(shí),DVN連續(xù)監(jiān)視由位[13:8]指示的64個(gè)包裝器計(jì)數(shù)器正負(fù)號位中的一者。當(dāng)計(jì)數(shù)器正負(fù)號位設(shè)置為1′b1時(shí),DVN將清除所述位,發(fā)送“切換”指示到控制器、懸置來自命令隊(duì)列(A/B)的處理,和重新開始來自命令隊(duì)列(B/A)的處理。
位[20:16]是緩沖選擇器。五位中的每一者在一對乒乓緩沖器之間進(jìn)行選擇。位16是“參考塊緩沖器選擇”,其中0選擇參考塊A,且1選擇參考塊B。位17是“當(dāng)前塊緩沖器選擇”,其中0選擇當(dāng)前塊A,且1選擇當(dāng)前塊B。位18是“命令隊(duì)列緩沖器選擇”,其中0選擇命令隊(duì)列A,且1選擇命令隊(duì)列B。位19是“水平成本函數(shù)(Horizontal CostFunction)緩沖器選擇”,其中0選擇水平成本函數(shù)表A,且1選擇水平成本函數(shù)表B。位20是“垂直成本函數(shù)(Vertical Cost Function)緩沖器選擇”,其中0選擇垂直成本函數(shù)表A,且1選擇垂直成本函數(shù)表B。
位[28:24]是“每行的參考塊長字”。節(jié)點(diǎn)存儲器尋址單元需要包含一參考塊行的長字的數(shù)目,以支持從行(k)到行(k+4)的跨距。
控制器節(jié)點(diǎn)定位器寄存器(CNLR)DVN使用PTP協(xié)議與其控制器通信,其需要一端口號(即,位[5:0])和一節(jié)點(diǎn)id(即,位[15:8])。
目的地節(jié)點(diǎn)定位器寄存器(DNLR)當(dāng)處理包括對目的地(使用過程)節(jié)點(diǎn)的輸出的命令隊(duì)列指令時(shí),DVN將使用其一位邏輯輸出端口字段來選擇兩個(gè)目的地節(jié)點(diǎn)中的一個(gè)當(dāng)所述位設(shè)置為1′b0時(shí),其輸出將導(dǎo)向節(jié)點(diǎn)id(即,位[15:8])、端口號(即,位[5:0]);且當(dāng)所述位設(shè)置為″b1時(shí),其輸出將導(dǎo)向節(jié)點(diǎn)id(即,位[31:24])、端口號(即,位[21:16])。
DVN字節(jié)代碼DVN開銷處理器(OHP)解譯兩個(gè)不同組的字節(jié)代碼一組用于設(shè)置和繼續(xù),另一組用于ACK+TEST。FSM狀態(tài)指示字節(jié)代碼解譯器應(yīng)使用哪一組。對于設(shè)置和繼續(xù),僅存在一個(gè)字節(jié)代碼如圖20所示的LOAD。對于ACK+TEST,存在較為全面的一組字節(jié)代碼。在圖21A至40E中對這些進(jìn)行概述。ACK+TEST字節(jié)代碼0x80至0xFF是保留的,且可作為NOP或“無操作”來處理。
對于DVN,編程步驟中的一個(gè)步驟需要寫入字節(jié)代碼和產(chǎn)生任務(wù)參數(shù)列表。字節(jié)代碼總是“有序”執(zhí)行,且字節(jié)代碼必須開始于長字邊界。字節(jié)代碼執(zhí)行是“小頭(littleendian)”;也就是說,將被執(zhí)行的第一字節(jié)代碼是第一長字的字節(jié)[7:0],接著是[15:8],接著是[23:16],接著是[31:24],接著是第二長字的[7:0],依此類推。
TPL/字節(jié)代碼編程實(shí)例圖22中展示用于“典型”任務(wù)的任務(wù)參數(shù)列表和字節(jié)代碼。TPL由21個(gè)長字組成,且存在5個(gè)長字的字節(jié)代碼。設(shè)置需要三個(gè)時(shí)鐘周期來從TPL載入寄存器;在三個(gè)周期的最末一個(gè)中指示DONE。ACK+TEST需要最少十個(gè)時(shí)鐘周期兩個(gè)用于產(chǎn)生者應(yīng)答,兩個(gè)用于使用過程應(yīng)答,兩個(gè)(或兩個(gè)以上)用于測試(并在需要時(shí)等待)輸入緩沖器就緒,兩個(gè)(或兩個(gè)以上)用于測試(并在需要時(shí)等待)輸出緩沖器就緒,且兩個(gè)用于測試計(jì)數(shù)器正負(fù)號以選擇兩組配置寄存器中的一組。繼續(xù)需要三個(gè)時(shí)鐘周期來更新CSR、CNLR和DNLR配置寄存器。
命令隊(duì)列綜述DVN的編程模型包括存儲在DVN節(jié)點(diǎn)存儲器中的命令隊(duì)列中的指令序列的產(chǎn)生。這些指令控制全PEL搜索、分?jǐn)?shù)PEL插值、分?jǐn)?shù)PEL搜索、(或許有宏塊帶正負(fù)號的插值)和結(jié)果輸出的運(yùn)動估計(jì)操作。
圖23中展示DVN存儲器映射圖。對于每一宏塊的處理,DVN將由其任務(wù)參數(shù)列表(TPL)中的條目定向,以便從其節(jié)點(diǎn)存儲器中兩個(gè)緩沖器中的一者獲取其指令命令隊(duì)列A;或命令隊(duì)列B。兩者的數(shù)據(jù)結(jié)構(gòu)將是相同的。目的是在一個(gè)(或兩個(gè))靜態(tài)命令隊(duì)列中存儲一固定組的指令,或在一個(gè)(或兩個(gè))動態(tài)命令隊(duì)列中構(gòu)造一交互序列的命令,和基于逐宏塊在兩個(gè)緩沖器之間進(jìn)行選擇。包括第二命令序列允許終止一個(gè)指令序列并以新的指令序列開始,同時(shí)保留完整的先前指令序列以供隨后的重新使用。
將使用標(biāo)準(zhǔn)ACM PTP(或DMA)協(xié)議(消耗可用的32個(gè)輸入端口中的一個(gè)或兩個(gè))將兩個(gè)命令隊(duì)列的每一者轉(zhuǎn)移到DVN節(jié)點(diǎn)存儲器。命令隊(duì)列A將由節(jié)點(diǎn)存儲器6中位置為0x00至0x3F的64個(gè)長字(每長字32位)組成,且命令隊(duì)列B將由節(jié)點(diǎn)存儲器7中位置為0x00至0x3F的64個(gè)長字組成。
DVN控制器節(jié)點(diǎn)通過將0x6C00寫入DVN包裝器端口翻譯表(PTT)中對應(yīng)于指派的DVN輸入端口號的位置來初始化命令隊(duì)列A(CQA)。這將CQA緩沖器設(shè)置為′存儲器=6、物理地址=0x000′的開始地址256字節(jié)(64個(gè)長字)的大小。命令隊(duì)列B(CQB)的初始化值=0x6E00,′存儲器=7,物理地址=0x000′??刂破魇褂肞TP寫入來載入CQA和CQB,64長字循環(huán)緩沖器。DVN控制器節(jié)點(diǎn)通過將0x6C00/0x6E00重新寫入DVN PTT中的適當(dāng)位置來重新初始化緩沖器。DVN使用6位計(jì)數(shù)器(初始化為零)來獲取CQA/CQB指令。
圖24中展示命令隊(duì)列的數(shù)據(jù)結(jié)構(gòu)。位31用于指示“有效”指令,且必須在控制器寫入緩沖器的每一指令中將其設(shè)置為1′b1。當(dāng)DVN讀取具有位31被設(shè)置為1′b0的隊(duì)列條目時(shí),DVN將停止,直到所述位被設(shè)置為1′b1或直到其經(jīng)重新定向?yàn)橹埂?br>
在處理從CQA/CQB獲取的指令序列時(shí),控制器可命令DVN1)終止其對來自一個(gè)隊(duì)列的指令的處理;2)清除其指向另一隊(duì)列的指針;或3)重新開始其從另一隊(duì)列的位置零的處理。從控制器到DVN的這個(gè)“切換”命令利用了DVN節(jié)點(diǎn)包裝器中64個(gè)計(jì)數(shù)器正負(fù)號中的一個(gè)??刂破饔迷O(shè)置為1′b1的msb寫入適當(dāng)?shù)腜CT/CCT計(jì)數(shù)器。(這里假定所述位先前已被初始化為1′b0)。DVN在處理時(shí)連續(xù)監(jiān)視這個(gè)位。在DVN任務(wù)設(shè)置處,從TPL載入六位寄存器以選擇64個(gè)計(jì)數(shù)器正負(fù)號中適當(dāng)?shù)囊粋€(gè)進(jìn)行監(jiān)視。作為其“切換”例行程序的一部分,DVN將通過發(fā)送“自應(yīng)答,初始化計(jì)數(shù)器”MIN字來清除這個(gè)位,且DVN將發(fā)送“切換完成”消息到控制器(見圖25)。
DVN命令隊(duì)列數(shù)據(jù)結(jié)構(gòu)的描述下文參看圖24來描述在DVN的命令隊(duì)列中使用的數(shù)據(jù)結(jié)構(gòu)。
評估單個(gè)16×16宏塊的度量-命令0x0確定一個(gè)位置(X,Y)的度量,其中0,0指示參考塊的左上部PEL;X是在0到79的范圍內(nèi)的正整數(shù),且Y是在0到49的范圍內(nèi)的正整數(shù)。這些正整數(shù)指示自左上部PEL的位移。DVN執(zhí)行度量的評估SAD256加上水平成本函數(shù)加上垂直成本函數(shù)。所述成本函數(shù)存儲在節(jié)點(diǎn)存儲器中。
確定一組或一組以上5×5位置的最佳度量--命令0x1從開始于位置(X,Y)的m(H)乘n(V)5×5組位置確定最佳度量。X是在0到79的范圍內(nèi)的正整數(shù),且Y是在0到49的范圍內(nèi)的正整數(shù)。M是在1到16的范圍內(nèi)的正整數(shù);n是在1到10的范圍內(nèi)的正整數(shù)(見圖26)。
半PEL插值--命令0x2對于16×16宏塊,執(zhí)行全PEL至半PEL插值。位[24]是“評估”0意味著僅進(jìn)行插值;且1意味著插值并評估八個(gè)(九個(gè))半PEL 16×16宏塊。位[25]是“模式”0意味著使用“最佳度量”向量來選擇宏塊,且1意味著使用(X,Y)參考(即,位[14:8]和位[5:0])來選擇宏塊。
四分之一PEL插值--命令0x3執(zhí)行四分之一插值。位[24]是“評估”0意味著僅進(jìn)行插值;且1意味著插值并評估八個(gè)(九個(gè))四分之一PEL 16×16宏塊。位[25]是“模式”0意味著使用來自半PEL搜索的“最佳度量”向量來選擇宏塊;且1意味著使用半PEL緩沖器位置(即,位[11:0])來選擇宏塊。
全PEL帶正負(fù)號差值--命令0x4執(zhí)行16×16當(dāng)前塊與選自參考塊的16×16全PEL宏塊之間的帶正負(fù)號差值。將256個(gè)值輸出到選定的目的地作為以128個(gè)長字包裝的在-255至255范圍內(nèi)的16位2進(jìn)制互補(bǔ)整數(shù)。位[25]是“模式”0意味著使用來自全PEL搜索的“最佳度量”向量來選擇宏塊;且1意味著使用(X,Y)參考(即,位[14:8]和位[5:0])來選擇宏塊。位[26]是“目的地”,其選自兩個(gè)邏輯輸出端口中的一個(gè)。對于每一端口,TPL含有用于選定目的地的關(guān)聯(lián)的路徑選擇、輸入端口號和存儲器模式指示。
半PEL帶正負(fù)號差值--命令0x5執(zhí)行16×16當(dāng)前塊與選自半PEL緩沖器的16×16半PEL宏塊之間的帶正負(fù)號差值。將256個(gè)值輸出到選定的目的地作為以128個(gè)長字包裝的在-255至255范圍內(nèi)的16位2進(jìn)制互補(bǔ)整數(shù)。位[25]是“模式”0意味著使用來自半PEL搜索的“最佳度量”向量來選擇宏塊;且1意味著使用半PEL緩沖器位置(即,位[11:0])來選擇宏塊。位[26]是“目的地”,其選自兩個(gè)邏輯輸出端口中的一個(gè)。對于每一端口,TPL含有用于選定目的地的關(guān)聯(lián)的路徑選擇、輸入端口號和存儲器模式指示。
四分之一PEL帶正負(fù)號差值--命令0x6執(zhí)行16×16當(dāng)前塊與選自四分之一PEL緩沖器的16x×16四分之一PEL宏塊之間的帶正負(fù)號差值。將256個(gè)值輸出到選定的目的地作為以128個(gè)長字包裝的在-255至255范圍內(nèi)的16位2進(jìn)制互補(bǔ)整數(shù)。位[25]是“模式”0意味著使用來自四分之一PEL搜索的“最佳度量”向量來選擇宏塊;且1意味著使用半PEL緩沖器位置(即,位[11:0])來選擇宏塊。位[26]是“目的地”,其選自兩個(gè)邏輯輸出端口中的一個(gè)。對于每一端口,TPL含有用于選定目的地的關(guān)聯(lián)的路徑選擇、輸入端口號和存儲器模式指示。
輸出全PEL 16×16宏塊--命令0x7將選定的全PEL 16×16宏塊從DVN節(jié)點(diǎn)存儲器中的參考塊轉(zhuǎn)移到指示的目的地。位[25]是“模式”0意味著使用來自全PEL搜索的“最佳度量”向量來選擇宏塊;且1意味著使用(X,Y)參考(即,位[14:8]和位[5:0])來選擇宏塊。位[26]是“目的地”,其選自兩個(gè)邏輯輸出端口中的一個(gè)。對于每一端口,TPL含有用于選定目的地的關(guān)聯(lián)的路徑選擇、輸入端口號和存儲器模式指示。
輸出半PEL 16×16宏塊--命令0x8將選定的半PEL 16×16宏塊從DVN節(jié)點(diǎn)存儲器中的半PEL緩沖器轉(zhuǎn)移到指示的目的地。位[25]是“模式”0意味著使用來自半PEL搜索的“最佳度量”向量來選擇宏塊;且1意味著使用半PEL緩沖器位置(即,位[11:0])來選擇宏塊。位[26]是“目的地”,其選自兩個(gè)邏輯輸出端口中的一個(gè)。對于每一端口,TPL含有用于選定目的地的關(guān)聯(lián)的路徑選擇、輸入端口號和存儲器模式指示。
輸出四分之一PEL 16×16宏塊--命令0x9將選定的四分之一PEL 16×16宏塊從DVN節(jié)點(diǎn)存儲器中的四分之一PEL緩沖器轉(zhuǎn)移到指示的目的地。位[25]是“模式”0意味著使用來自四分之一PEL搜索的“最佳度量”向量來選擇宏塊;且1意味著使用四分之一PEL緩沖器位置(即,位[11:0])來選擇宏塊。位[26]是“目的地”,其選自兩個(gè)邏輯輸出端口中的一個(gè)。對于每一端口,TPL含有用于選定目的地的關(guān)聯(lián)的路徑選擇、輸入端口號和存儲器模式指示。
輸出最佳度量--命令0xA將最佳度量(飽和無正負(fù)號的16位整數(shù))轉(zhuǎn)移到指示的目的地。位[25]是“模式”0意味著僅發(fā)送到控制器;且1意味著發(fā)送到控制器并發(fā)送到指示的目的地。位[26]是“目的地”,其選自兩個(gè)邏輯輸出端口中的一個(gè)。對于每一端口,TPL含有用于選定目的地的關(guān)聯(lián)的路徑選擇、輸入端口號和存儲器模式指示。
輸出運(yùn)動向量--命令0xB將具有四分之一PEL分辨率的運(yùn)動向量轉(zhuǎn)移到指示的目的地。位[25]是“模式”0意味著僅發(fā)送到控制器;且1意味著發(fā)送到控制器并發(fā)送到指示的目的地。位[26]是“目的地”,其選自兩個(gè)邏輯輸出端口中的一個(gè)。對于每一端口,TPL含有用于選定目的地的關(guān)聯(lián)的路徑選擇、輸入端口號和存儲器模式指示。
完成--命令0xCDONE命令向DVN指示對于“當(dāng)前塊”沒有將執(zhí)行的額外處理。在從隊(duì)列讀取此命令之后,DVN將發(fā)送DONE狀態(tài)字到控制器;且DVN FSM將轉(zhuǎn)變?yōu)锳CK+TEST狀態(tài)。
回應(yīng)--命令0xFECHO命令指示DVN返回作為命令本身的狀態(tài)字。希望這成為診斷輔助。
DVN至控制器的狀態(tài)字在DVN執(zhí)行每一命令之后,其將使用ACM PTP協(xié)議發(fā)送狀態(tài)字到控制器。DVN TPL將含有支持此操作所需的適當(dāng)?shù)穆窂竭x擇字段、輸入端口號和存儲器模式指示。在“設(shè)置”和“繼續(xù)”操作期間將此信息轉(zhuǎn)移到DVN CNLR。在圖25中展示狀態(tài)字的概述。
對于命令0x0和0x1,狀態(tài)字包括迄今為止用于此特定當(dāng)前塊的最佳全PEL度量。所述狀態(tài)字還包括具有水平維度0至79和垂直維度0至49的范圍的全PEL單元中的相應(yīng)向量。對于命令0x2,全PEL至半PEL插值,當(dāng)命令的位[24]設(shè)置為1′b1(插值和評估)時(shí),狀態(tài)字位[15:0]指示最佳半PEL度量的值,且位[19:16]指示最佳度量與九個(gè)半PEL候選者中的哪一者相關(guān)聯(lián)。(圖40中展示的半PEL編號慣例用于編碼位[19:16])。當(dāng)命令的位[24]設(shè)置為1′b0(僅插值)時(shí),位[15:0]指示先前評估的最佳全PEL度量的值,且位[19:16]設(shè)置為0xF以指示插值“完成”。
對于命令0x3,半PEL至四分之一PEL插值,當(dāng)命令的位[24]設(shè)置為1′b1(插值和評估)時(shí),狀態(tài)字位[15:0]指示最佳四分之一PEL度量的值,且位[19:16]指示最佳度量與九個(gè)四分之一PEL候選者中的哪一者相關(guān)聯(lián)。(圖42中展示的四分之一PEL編號慣例用于編碼位[19:16])。當(dāng)命令的位[24]設(shè)置為1′b0(僅插值)時(shí),位[15:0]指示先前評估的最佳度量(全PEL或半PEL,如果后者已經(jīng)評估)的值,且位[19:16]設(shè)置為0xF以指示插值“完成”。
對于命令0x4、0x5、0x6、0x7、0x8和0x9,狀態(tài)字將分別為0xFF010000、0xFF020000、0xFF040000、0xFF080000、0xFF100000和0xFF200000以指示“完成”。對于命令0xA,狀態(tài)字將為最佳度量、飽和的無正負(fù)號的16位整數(shù)。對于命令0xB,狀態(tài)字將為具有四分之一PEL分辨率的運(yùn)動向量。對于命令0xC,狀態(tài)字將為0xFF400000以指示“完成”。對于命令0xF,狀態(tài)字將回應(yīng)命令本身。希望這成為診斷輔助。響應(yīng)于“命令隊(duì)列重新定向”旗標(biāo),狀態(tài)字將為0xFF800000以指示“完成”。
DVN節(jié)點(diǎn)存儲器DVN包括八個(gè)2KB物理存儲器,每一者均組織成512個(gè)字,每個(gè)字32位,從而總的節(jié)點(diǎn)存儲器容量為16KB。這允許在每一時(shí)鐘周期讀取32個(gè)字節(jié)的視頻數(shù)據(jù)并處理這些數(shù)據(jù)的十六個(gè)“絕對差和”。16KB容量還允許對于完全重疊的數(shù)據(jù)輸入/輸出與計(jì)算的雙緩沖。
任何ACM可使用DVN包裝器中的PTT和三個(gè)服務(wù)PTP、DMA或RTI中的任一者來寫入DVN節(jié)點(diǎn)存儲器。另外,K節(jié)點(diǎn)可PEEK/POKEDVN節(jié)點(diǎn)存儲器。
圖23中展示DVN節(jié)點(diǎn)存儲器映射圖。在表3中描述分配的緩沖器
表3DVN節(jié)點(diǎn)的存儲器映射圖這假定參考塊和當(dāng)前塊是經(jīng)由MIN從“數(shù)據(jù)移動器(Data Mover)”轉(zhuǎn)移到八個(gè)DVN節(jié)點(diǎn)存儲器。這還假定“數(shù)據(jù)移動器”由PSN節(jié)點(diǎn)控制。將參考塊組織為每行M個(gè)PEL和每列N個(gè)PEL。M和N是5的整數(shù)倍,與每次5×5位置搜索策略一致。M的范圍是20至95(20、25、30、...、90、95);N的范圍是20至65(20、25、30、...、60、65)。
參考塊選項(xiàng)在圖26中展示不超過3840個(gè)字節(jié)參考塊容量的M與N的可允許組合的概述,以及窮舉搜索處理周期的附帶數(shù)目。
對于從數(shù)據(jù)移動器至DVN節(jié)點(diǎn)存儲器的每一M-PEL乘N-PEL參考塊的轉(zhuǎn)移如下將行0、4、8、...、[M-(M)mod4]寫入節(jié)點(diǎn)存儲器0中的連續(xù)位置;將行1、5、9、...、[M-(M-1)mod4]寫入節(jié)點(diǎn)存儲器1中的連續(xù)位置;將行2、6、10、...、[M-(M-2)mod4]寫入節(jié)點(diǎn)存儲器2中的連續(xù)位置;和將行3、7、11、...、[M-(M-3)mod4]寫入節(jié)點(diǎn)存儲器3中的連續(xù)位置。
對于從數(shù)據(jù)移動器至DVN節(jié)點(diǎn)存儲器的每一16PEL乘16PEL當(dāng)前塊的轉(zhuǎn)移將行0、4、8和12寫入節(jié)點(diǎn)存儲器0和4中;將行1、5、9和13寫入節(jié)點(diǎn)存儲器1和5中;將行2、6、10和14寫入節(jié)點(diǎn)存儲器2和6中;和將行3、7、11和15寫入節(jié)點(diǎn)存儲器3和7中。
在全PEL搜索期間,DVN運(yùn)動估計(jì)引擎(ME)從存儲器0至3讀取參考塊數(shù)據(jù),且其從存儲器4至7讀取當(dāng)前塊數(shù)據(jù)。在半PEL插值期間,ME從存儲器0至3讀取全PEL參考塊數(shù)據(jù),且其將半PEL插值數(shù)據(jù)寫入存儲器4至7。當(dāng)半PEL搜索與半PEL插值同時(shí)執(zhí)行時(shí),ME從存儲器4至7讀取當(dāng)前塊數(shù)據(jù)。在四分之一PEL插值期間,ME從存儲器4至7讀取半PEL插值數(shù)據(jù),且其將四分之一PEL插值數(shù)據(jù)寫入存儲器4至7。當(dāng)四分之一PEL搜索與四分之一PEL插值同時(shí)執(zhí)行時(shí),ME從存儲器0至3讀取當(dāng)前塊數(shù)據(jù)。在輸出期間,ME從存儲器0至3讀取全PEL宏塊,從存儲器4至7讀取分?jǐn)?shù)PEL宏塊,且對于宏塊帶正負(fù)號差值,分別從用于全PEL/分?jǐn)?shù)PEL宏塊的存儲器0至3/4至7讀取當(dāng)前塊。
成本函數(shù)表對于每一全PEL搜索位置,DVN評估度量SAD256加上水平成本函數(shù)加上垂直成本函數(shù)。成本函數(shù)存儲在節(jié)點(diǎn)存儲器中。成本函數(shù)是無正負(fù)號的16位整數(shù)。
對于M列乘N行的參考塊,存在M個(gè)水平成本函數(shù)和N個(gè)垂直成本函數(shù)。在每一水平成本函數(shù)表中,兩個(gè)16位整數(shù),即一對水平成本函數(shù)包裝在表中的每一32位長字中。列0和1的成本函數(shù)存儲在表位置0,列2和3的成本函數(shù)存儲在表位置1,依此類推。偶數(shù)編號列的成本函數(shù)存儲在長字的位[15:0]中;奇數(shù)編號列的成本函數(shù)存儲在長字的位[31:16]中。
在每一垂直成本函數(shù)表中,兩個(gè)16位整數(shù),即一對垂直成本函數(shù)包裝在表中的每一32位長字中。行0和1的成本函數(shù)存儲在表位置0,行2和3的成本函數(shù)存儲在表位置1,依此類推。偶數(shù)編號行的成本函數(shù)存儲在長字的位[15:0]中;奇數(shù)編號行的成本函數(shù)存儲在長字的位[31:16]中。在圖27中展示分?jǐn)?shù)PEL成本函數(shù)和成本函數(shù)表A與B。
參考塊綜述如圖23所示,兩個(gè)3840字節(jié)參考塊緩沖器被分配在DVN節(jié)點(diǎn)存儲器中。每一緩沖器存儲在四個(gè)物理存儲器中以允許在每時(shí)鐘周期訪問16個(gè)PEL。將采用參考左上部PEL的編號慣例,所述PEL的(H)水平和(V)垂直坐標(biāo)將指定為(H:0,V:0)。參考塊A的左上部PEL將存儲在存儲地址0x000的高階字節(jié)中;且參考塊B的左上部PEL將存儲在存儲地址0x100的高階字節(jié)中。參考塊的行0、4、8...將存儲在存儲器0中;行1、5、9...將存儲在存儲器1中;行2、6、10...將存儲在存儲器2中;且行3、7、11...將存儲在存儲器3中。
M=50列乘N=50行的參考塊將存儲在節(jié)點(diǎn)存儲器0至3中,如圖28中所示。每一16PEL乘16PEL的當(dāng)前塊將存儲在節(jié)點(diǎn)存儲器0至3中,且還存儲在節(jié)點(diǎn)存儲器4至7中,如圖29中所示。
50PEL乘50PEL的參考塊允許在每一維度中+/-17PEL的搜索范圍(參考([H:17,V:17])處的中心搜索位置),如圖30中所示。在50PEL乘50PEL參考塊內(nèi)存在1225個(gè)候選搜索位置。在圖30中展示具有相對坐標(biāo)H(17),V(17)的“中心”位置。在圖30中突出顯示五個(gè)搜索位置中心位置,H(17),V(17);上部最左邊位置,H(0),V(0);上部最右邊位置,H(34),V(0);下部最左邊位置,H(0),V(34);和下部最右邊位置,H(34),V(34)。
圖31中展示在此參考塊中同時(shí)搜索中心5×5個(gè)位置。在此情況下,所搜索位置的總數(shù)是25,且在每一維度中搜索范圍是+/-2PEL。圖32中展示在此參考塊中搜索中心九組5×5個(gè)位置。在此情況下,所搜索位置的總數(shù)是9×5×5=225,且在每一維度中搜索范圍是+/-7PEL。圖33中展示在此參考塊中窮舉搜索全部49組5×5個(gè)位置。在此情況下,所搜索位置的總數(shù)是49×5×5=1225,且在每一維度中搜索范圍是+/-17PEL。
當(dāng)包括分?jǐn)?shù)PEL處理時(shí),程序設(shè)計(jì)者可在兩種策略之間進(jìn)行選擇·載入具有足夠數(shù)目PEL的“過大的”參考塊,以便支持任何搜索結(jié)果的插值??捎僧?dāng)前宏塊的尺寸(m)、搜索范圍(h,v)和半PEL插值過濾的分支數(shù)目(n)來確定此“過大的”參考塊的尺寸。明確地說,尺寸將為[m+h+n-1]水平PEL乘[m+v+n-1]垂直PEL。舉例來說,對于16×16PEL宏塊,+/-17PEL的水平和垂直搜索范圍,和H.2646分支插值過濾,參考塊必須為56×56PEL(3136個(gè)字節(jié)),如圖34所示。
·將與期望的搜索范圍一致的最小數(shù)目PEL載入?yún)⒖級K??捎僧?dāng)前宏塊的尺寸(m)和搜索范圍(h,v)來確定此參考塊的尺寸。明確地說,尺寸將為[m+h-1]水平PEL乘[m+v-1]垂直PEL。舉例來說,對于16×16PEL宏塊和+/-17的水平與垂直PEL搜索范圍,參考塊將為50×50PEL(2500個(gè)字節(jié)),比以上的策略1)所需的3136個(gè)字節(jié)小很多。然后,如果搜索結(jié)果需要,那么在進(jìn)行插值步驟之前,重新載入具有[m+n]水平PEL乘[m+n]垂直PEL的參考塊緩沖器。這在圖35中具有概述。
全PEL搜索DVN支持用于全PEL搜索的兩個(gè)操作模式。一個(gè)操作評估參考塊內(nèi)任意的16×16位置,每個(gè)時(shí)鐘周期執(zhí)行16個(gè)SAD操作。第二個(gè)模式同時(shí)評估m(xù)乘n組(5×5=25)位置,每個(gè)時(shí)鐘周期執(zhí)行最多200(平均160)個(gè)SAD操作。對于兩個(gè)模式,“評估”由計(jì)算當(dāng)前16×16宏塊與參考塊內(nèi)的任何16×16宏塊之間的“絕對差和(SAD)”加上水平成本函數(shù)加上垂直成本函數(shù)組成,從而總是保存關(guān)聯(lián)的16×16宏塊的最佳度量和原點(diǎn)。由通過控制PSN節(jié)點(diǎn)寫入DVN存儲器中兩個(gè)命令隊(duì)列中的一個(gè)命令隊(duì)列中的指令序列來支配搜索樣式。每一隊(duì)列條目的唯一命令代碼指示對于給定(X,Y)原點(diǎn),是應(yīng)評估一單個(gè)位置還是m乘n的5×5個(gè)位置。
半PEL插值在具有最佳失真度量的16×16宏塊的全PEL搜索之后,對周圍的([16+n]×[16+n])PEL陣列執(zhí)行半PEL插值,其中n為過濾階數(shù)。對于雙線性插值、WMV、H.264和MPEG4,n分別等于2、4、6和8。在圖36中概述半PEL雙線性插值所需的計(jì)算。在圖37中展示由與“最佳度量”16×16宏塊相關(guān)聯(lián)的18×18全PEL陣列的雙線性插值所獲得的33×33半PEL陣列。在圖40中展示由H.264 6分支過濾插值所獲得的33×33半PEL陣列。在圖41中展示所支持的半PEL插值FIR過濾的概述。對于1/2PEL水平移位和1/2PEL垂直移位的半PEL位置,對全PEL、1/2PEL插值的值使用相同的過濾,從而維持這些值的全精度。
半PEL搜索存使用四個(gè)過濾選項(xiàng)中的一個(gè)進(jìn)行半PEL插值之后,針對九個(gè)候選的半PEL位置中的每一者,計(jì)算半PEL度量。所述度量是SAD256度量加上半PEL成本函數(shù)的總和。在圖42中展示九個(gè)候選的半PEL位置的編號慣例。從圖中應(yīng)注意,先前已計(jì)算全PEL位置(位置“5”)的全PEL度量。然而,位置“5”的半PEL度量將為其全PEL度量、減去其全PEL水平和垂直成本函數(shù)、加上其用于此位置的半PEL成本函數(shù)(見圖27)。半PEL搜索由產(chǎn)生九個(gè)候選者的每一者的SAD度量加上半PEL成本函數(shù)并選擇具有最佳度量的一者組成。
四分之一PEL插值在具有最佳失真度量的16×16宏塊的半PEL搜索之后,對周圍的([16+n]×[16+n])PEL陣列執(zhí)行四分之一PEL插值,其中n為過濾階數(shù)。對于WMV,n=4;對于使用雙線性插值的H.264和MPEG4,n=2。在圖42中概述1/4PEL位置、1/2PEL位置和3/4PEL位置的WMV子PEL四分支FIR過濾。
四分之一PEL搜索在四分之一PEL插值之后,針對九個(gè)候選的四分之一PEL位置中的每一者,計(jì)算四分之一PEL度量。所述度量是SAD256度量加上四分之一PEL成本函數(shù)的總和。在圖43中展示九個(gè)候選的四分之一PEL位置的編號慣例。從圖中應(yīng)注意,必須計(jì)算16個(gè)四分之一PEL位置中的僅僅九個(gè)。還應(yīng)注意,先前已計(jì)算九個(gè)候選的四分之一PEL位置的一個(gè)度量(位置“5”)。然而,位置“5”的四分之一PEL度量將為其半PEL度量、減去其半PEL成本函數(shù)、加上其用于此位置的四分之一PEL成本函數(shù)(見圖27)。四分之一PEL搜索由產(chǎn)生九個(gè)候選者的每一者的SAD度量加上四分之一PEL成本函數(shù)并選擇具有最佳度量的一者組成。
宏塊帶正負(fù)號差值DVN還將能夠計(jì)算和輸出DVN節(jié)點(diǎn)存儲器中任何16PEL乘16PEL宏塊(全PEL、半PEL或四分之一PEL)與DVN節(jié)點(diǎn)存儲器中任一16PEL乘16PEL當(dāng)前塊之間的9位帶正負(fù)號差值的256個(gè)元素陣列。所述陣列輸出到目的地節(jié)點(diǎn)作為128個(gè)長字,其中每一長字是包裝的一對16位帶正負(fù)號整數(shù),其表示16×16宏塊的正負(fù)號擴(kuò)展的9位帶正負(fù)號差值。
與DVN相關(guān)的編程問題概述參看圖13,以下是DVN的編程要求構(gòu)造任務(wù)參數(shù)列表(TPL)并將其載入DVN節(jié)點(diǎn)存儲器;構(gòu)造字節(jié)代碼并將其載入DVN節(jié)點(diǎn)存儲器;配置DVN硬件任務(wù)管理器(HTM);引導(dǎo)數(shù)據(jù)移動器以構(gòu)造必需的參考塊、當(dāng)前塊和成本函數(shù)表以及適當(dāng)?shù)臄?shù)據(jù)流應(yīng)答,并將其轉(zhuǎn)移到DVN節(jié)點(diǎn)存儲器;構(gòu)造必需的命令隊(duì)列指令序列并將其轉(zhuǎn)移到DVN節(jié)點(diǎn)存儲器;配置DVN的控制器節(jié)點(diǎn)中的HTM以支持其對來自DVN的消息的處理;和配置DVN目的地節(jié)點(diǎn)(使用過程)以接收來自DVN的輸出,并將適當(dāng)?shù)臄?shù)據(jù)流應(yīng)答發(fā)送到DVN。
DVN硬件綜述在圖43中展示DVN執(zhí)行單元的簡化方框圖。DVN包括QST節(jié)點(diǎn)包裝器、八個(gè)2KB節(jié)點(diǎn)存儲器(每一者被組織為512個(gè)32位的字),和執(zhí)行單元(EU),所述執(zhí)行單元由開銷處理器(OHP)和運(yùn)動估計(jì)引擎(ME)組成。ME執(zhí)行全PEL/半PEL/四分之一PEL搜索、半PEL與四分之一PEL插值,和宏塊帶正負(fù)號差值。ME將關(guān)聯(lián)的16×16個(gè)宏塊的最佳度量和原點(diǎn)輸出到控制器節(jié)點(diǎn)和目的地節(jié)點(diǎn);ME將關(guān)聯(lián)的16×16個(gè)宏塊輸出到執(zhí)行解碼器運(yùn)動補(bǔ)償功能的目的地節(jié)點(diǎn);且ME可將宏塊帶正負(fù)號差值輸出到目的地節(jié)點(diǎn)。
DVN的特征包括分離的控制單元,用于使運(yùn)動估計(jì)引擎和開銷處理器具有最大效率;緊密的字節(jié)代碼和有效的TPL載入/存儲操作,以最小化設(shè)置、ACK+TEST和繼續(xù)的開銷;基于有限狀態(tài)機(jī)(FSM)的運(yùn)動估計(jì)引擎的PLA控制,用于與基于定序器加控制存儲器的實(shí)施方案相比具有高級的功率/面積度量;用于增強(qiáng)的性能和減少的功率的創(chuàng)新算法實(shí)施方案;八個(gè)物理存儲器塊結(jié)構(gòu),以允許高度并行性;和具有“相同寫入地址/讀取地址”分辨率的高性能存儲器接口。
運(yùn)動估計(jì)引擎包括若干功能元件控制程序單元(CPU);存儲器地址產(chǎn)生器單元(AGU);數(shù)據(jù)路徑單元(DPU);絕對差和(SAD),帶正負(fù)號差值;多格式子PEL插值;包裝器接口單元(WIU);和存儲器接口單元(MIU)。
DVN執(zhí)行以下操作1)對水平維度中(高達(dá))80PEL和垂直維度中(高達(dá))50PEL進(jìn)行全PEL搜索;2)使用四個(gè)(或許更多)過濾器中的一個(gè)進(jìn)行全PEL至35×35半PEL插值;3)半PEL搜索;4)35×35半PEL至9×16×16四分之一PEL插值;5)四分之一PEL搜索;和6)將關(guān)聯(lián)的16×16宏塊的最佳度量和原點(diǎn)輸出到控制PSN節(jié)點(diǎn),并將16×16宏塊本身輸出到執(zhí)行解碼器運(yùn)動補(bǔ)償?shù)墓?jié)點(diǎn);7)計(jì)算并輸出選定的16×16宏塊(全PEL、半PEL或四分之一PEL)與當(dāng)前16×16宏塊之間的256個(gè)帶正負(fù)號差值。
將八個(gè)節(jié)點(diǎn)存儲器的每一者分割為乒乓緩沖器對以允許完全重疊的數(shù)據(jù)輸入和計(jì)算/結(jié)果輸出。在一個(gè)數(shù)據(jù)組已從數(shù)據(jù)移動器轉(zhuǎn)移到八個(gè)DVN存儲器之后,DVN ME執(zhí)行其計(jì)算并輸出其結(jié)果。在這時(shí)間期間,下一數(shù)據(jù)組從數(shù)據(jù)移動器轉(zhuǎn)移到八個(gè)DVN存儲器。依此類推。
每一數(shù)據(jù)組包括變化尺寸的參考塊、16×16PEL陣列(當(dāng)前塊)和分?jǐn)?shù)PEL成本函數(shù)表。這些數(shù)據(jù)以最優(yōu)化ME對數(shù)據(jù)的訪問的方式分布于八個(gè)節(jié)點(diǎn)存儲器之間。通常,這包括每個(gè)時(shí)鐘周期對來自八個(gè)節(jié)點(diǎn)存儲器中每一者的四字節(jié)數(shù)據(jù)的訪問。這允許在每次評估一個(gè)16×16搜索位置時(shí),每一時(shí)鐘周期執(zhí)行十六個(gè)SAD操作。另外,對于“二十五個(gè)同時(shí)搜索位置”模式,其允許每個(gè)時(shí)鐘周期對來自參考塊的四行的數(shù)據(jù)和來自當(dāng)前塊的四行的數(shù)據(jù)的訪問。
可使用任何合適的編程語言來實(shí)施本發(fā)明的例行程序,所述編程語言包括C、C++、Java、匯編語言等。可采用不同的編程技術(shù),例如程序上的或面向?qū)ο蟮?。所述例行程序可在單個(gè)處理設(shè)備或多個(gè)處理器上執(zhí)行。盡管可能以特定次序呈現(xiàn)步驟、操作或計(jì)算,但在不同實(shí)施例中,這個(gè)次序可能改變。在某些實(shí)施例中,本說明書中循序展示的多個(gè)步驟可同時(shí)執(zhí)行??芍袛唷抑没蛴闪硪贿^程(例如操作系統(tǒng)、內(nèi)核等)另外控制本文描述的操作序列。所述例行程序可在操作系統(tǒng)環(huán)境中操作,或作為占據(jù)系統(tǒng)處理的全部或一實(shí)質(zhì)部分的獨(dú)立例行程序而操作??稍谟布?、軟件或兩者的組合中執(zhí)行功能。除非另外規(guī)定,否則也可完全或部分地手動執(zhí)行功能。
在本文的描述中,提供許多特定細(xì)節(jié),例如組件和/或方法的實(shí)例,以便提供本發(fā)明實(shí)施例的徹底理解。然而,所屬領(lǐng)域的技術(shù)人員將了解,可在不具有一個(gè)或一個(gè)以上所述特定細(xì)節(jié)的情況下,或者用其它裝置、系統(tǒng)、組合件、方法、組件、材料、零件和/或類似物來實(shí)踐本發(fā)明的實(shí)施例。在其它情況下,沒有特定展示或詳細(xì)描述眾所周知的結(jié)構(gòu)、材料或操作,以避免混淆本發(fā)明實(shí)施例的方面。
出于本發(fā)明實(shí)施例的目的,“計(jì)算機(jī)可讀媒體”可為可含有、存儲、傳送、傳播或傳輸供指令執(zhí)行系統(tǒng)、裝置、系統(tǒng)或設(shè)備使用或與指令執(zhí)行系統(tǒng)、裝置、系統(tǒng)或設(shè)備結(jié)合使用的程序的任何媒體。所述計(jì)算機(jī)可讀媒體可為(僅借助于實(shí)例而并非限于)電子、磁、光、電磁、紅外線或半導(dǎo)體系統(tǒng)、裝置、系統(tǒng)、設(shè)備、傳播媒體,或計(jì)算機(jī)存儲器。
“處理器”或“處理”包括處理數(shù)據(jù)、信號或其它信息的任何人類、硬件和/或軟件系統(tǒng)、機(jī)制或組件。處理器可包括具有通用中央處理單元的系統(tǒng)、多個(gè)處理單元、實(shí)現(xiàn)功能性的專用電路,或其它系統(tǒng)。處理不需要限于地理位置,或不需要具有時(shí)間限制。舉例來說,處理器可“實(shí)時(shí)”、“離線”、以“批處理模式”等來執(zhí)行其功能。可由不同(或相同)的處理系統(tǒng)在不同時(shí)間且在不同位置執(zhí)行處理的部分。
整個(gè)本說明書中對“一個(gè)實(shí)施例”、“一實(shí)施例”或“一特定實(shí)施例”的參考意味著結(jié)合實(shí)施例描述的特定特征、結(jié)構(gòu)或特性是包括在本發(fā)明的至少一個(gè)實(shí)施例中,且不必包括在所有實(shí)施例中。因此,整個(gè)本說明書中短語“在一個(gè)實(shí)施例中”、“在一實(shí)施例中”或“在一特定實(shí)施例中”在各處的各別出現(xiàn)不必是指同一實(shí)施例。另外,本發(fā)明的任何特定實(shí)施例的特定特征、結(jié)構(gòu)或特性可以任何合適方式與一個(gè)或一個(gè)以上其它實(shí)施例組合。應(yīng)了解,根據(jù)本文的教示,本文描述和說明的本發(fā)明實(shí)施例的其它變化和修改是可能的,且將被視為本發(fā)明的精神與范圍的部分。
可通過使用經(jīng)編程的通用數(shù)字計(jì)算機(jī)來實(shí)施本發(fā)明的實(shí)施例,通過使用特殊應(yīng)用集成電路、可編程邏輯設(shè)備、場可編程門陣列,可使用光、化學(xué)、生物、量子或納米工程系統(tǒng)、組件和機(jī)制。一般來說,可通過所屬領(lǐng)域的技術(shù)中已知的任何方式來實(shí)現(xiàn)本發(fā)明的功能。可使用分布式或網(wǎng)絡(luò)系統(tǒng)、組件和電路。數(shù)據(jù)的通信或轉(zhuǎn)移可為有線的、無線的,或任何其它方式。
還將了解,如根據(jù)特定應(yīng)用中有用的,也可用較為分離的或整合的方式來實(shí)施附圖/圖式中描繪的一個(gè)或一個(gè)以上元件,或者甚至由于在某些情況下不可操作而將其去除或放棄。同樣在本發(fā)明的精神與范圍內(nèi)的是,實(shí)施可存儲在機(jī)器可讀媒體中的程序或代碼以允許計(jì)算機(jī)執(zhí)行上文描述的任何方法。
另外,應(yīng)將附圖/圖式中的任何信號箭頭僅視為示范性的且不是限制性的,除非另外明確說明。另外,大體希望本文使用的術(shù)語“或”意味著“和/或”,除非另外有指示。還將組件或步驟的組合視為已說明的,其中當(dāng)不清楚分離或組合的能力時(shí)可預(yù)見術(shù)語。
如本文的描述和隨后的整個(gè)權(quán)利要求書中所使用,“一”和“所述”包括復(fù)數(shù)參考,除非上下文另外明確規(guī)定。同樣,如本文的描述和隨后的整個(gè)權(quán)利要求書中所使用,“在...中”的意義包括“在...中”和“在...上”,除非上下文另外明確規(guī)定。
不希望本發(fā)明的所說明實(shí)施例的上述描述(包括摘要中描述的內(nèi)容)是徹底的或?qū)⒈景l(fā)明限于本文揭示的準(zhǔn)確形式。雖然僅出于說明性目的而在本文中描述本發(fā)明的特定實(shí)施例和實(shí)例,但如所屬領(lǐng)域的技術(shù)人員將認(rèn)識和了解,在本發(fā)明的精神與范圍內(nèi),各種等效修改是可能的。如所指示,可依照本發(fā)明的所說明實(shí)施例的上述描述而對本發(fā)明做出這些修改,且這些修改將包括在本發(fā)明的精神與范圍中。
因此,雖然本文已參考本發(fā)明的特定實(shí)施例描述了本發(fā)明,但在上述揭示中希望一定范圍的修改、各種改變和替代,并且將了解,在不脫離所陳述的本發(fā)明的范圍與精神的情況下,在某些情況中將采用本發(fā)明實(shí)施例的某些特征,而沒有其它特征的相應(yīng)使用。因此,可做出許多修改以使特定情形或材料適合于本發(fā)明的本質(zhì)范圍與精神。希望本發(fā)明不限于所附權(quán)利要求書中使用的特定術(shù)語,和/或限于作為實(shí)行本發(fā)明所涵蓋的最佳模式而揭示的特定實(shí)施例,而是希望本發(fā)明將包括在附加權(quán)利要求書范圍內(nèi)的任何以及所有實(shí)施例和等效物。
權(quán)利要求
1.一種在一數(shù)字處理器中的域視頻單元,所述數(shù)字視頻單元包含如本文大體上描述的復(fù)數(shù)個(gè)組件的一互連,其中一組件是以下各項(xiàng)中的一者或多者參考像素存儲器、當(dāng)前像素存儲器、多路復(fù)用器、運(yùn)動估計(jì)處理器、插值處理器和數(shù)據(jù)格式器。
2.根據(jù)權(quán)利要求1所述的域視頻單元,其中所述復(fù)數(shù)個(gè)組件中的所述至少一者是可重新配置的。
3.根據(jù)權(quán)利要求1所述的域視頻單元,其中所述至少一個(gè)運(yùn)動估計(jì)處理器包含一差值和處理器。
4.根據(jù)權(quán)利要求1所述的域視頻單元,其中所述至少一個(gè)多路復(fù)用器包含一PEL多路復(fù)用器。
5.根據(jù)權(quán)利要求1所述的域視頻單元,其中所述運(yùn)動估計(jì)處理器可經(jīng)配置以進(jìn)行每次一個(gè)像素處理與同步像素處理中的至少一者。
6.根據(jù)權(quán)利要求1所述的域視頻單元,其中所述至少一個(gè)運(yùn)動估計(jì)處理器可經(jīng)配置以根據(jù)一硬連線搜索樣式與一可選擇搜索樣式中的至少一者來進(jìn)行處理。
7.根據(jù)權(quán)利要求5所述的域視頻單元,其中所述至少一個(gè)運(yùn)動估計(jì)處理器根據(jù)由所述域視頻單元產(chǎn)生的一可選擇搜索樣式來進(jìn)行處理。
8.根據(jù)權(quán)利要求1所述的域視頻單元,其進(jìn)一步包含一節(jié)點(diǎn)包裝器。
9.一種用于具有多種屬性的數(shù)字視頻數(shù)據(jù)的處理器,所述處理器包含用于處理所述視頻數(shù)據(jù)的構(gòu)件;和用于確定所述視頻數(shù)據(jù)的所述屬性且用于動態(tài)配置所述處理構(gòu)件以根據(jù)所述屬性進(jìn)行操作的構(gòu)件。
10.根據(jù)權(quán)利要求9所述的視頻處理器,其中所述視頻數(shù)據(jù)具有一選自MPEG-2、MPEG-4、Windows媒體視頻(WMV)或X.264中的至少一個(gè)版本的格式。
11.根據(jù)權(quán)利要求9所述的視頻處理器,其中所述視頻數(shù)據(jù)具有一分辨率,所述分辨率選自約四分之一CEL(例如,手機(jī)圖片)分辨率與由高清晰度電視(HDTV)的一版本界定的約一分辨率之間的一分辨率。
12.根據(jù)權(quán)利要求9所述的視頻處理器,其中所述處理器是選自一編碼構(gòu)件、一解碼構(gòu)件、一壓縮構(gòu)件或一代碼轉(zhuǎn)換構(gòu)件中的至少一者。
13.根據(jù)權(quán)利要求9所述的視頻處理器,其中可根據(jù)所述視頻數(shù)據(jù)的所述屬性動態(tài)配置的所述屬性中的一者是一加法器陣列。
14.根據(jù)權(quán)利要求9所述的視頻處理器,其中可根據(jù)所述視頻數(shù)據(jù)的所述屬性動態(tài)配置的所述屬性中的一者是一用于所述視頻數(shù)據(jù)的過濾器。
15.根據(jù)權(quán)利要求9所述的視頻處理器,其中可根據(jù)所述視頻數(shù)據(jù)的所述屬性動態(tài)配置的所述事物中的一者是一絕對差(SAD)計(jì)算構(gòu)件的總和。
16.根據(jù)權(quán)利要求9所述的視頻處理器,其中可編程的所述事物中的一者是一運(yùn)動檢測器構(gòu)件。
17.根據(jù)權(quán)利要求9所述的視頻處理器,其中所述處理器是基于一自適應(yīng)計(jì)算機(jī)(ACM)來構(gòu)建的。
18.一種用于具有多種屬性的數(shù)字視頻數(shù)據(jù)的處理器,所述處理器包含一存儲器或隊(duì)列,其經(jīng)配置以保存一指令序列;一處理器,其經(jīng)配置以對視頻數(shù)據(jù)進(jìn)行操作;和一指令解碼器/操作控制電路,其經(jīng)配置以對所述指令中的一當(dāng)前指令進(jìn)行解碼,從中確定所述視頻數(shù)據(jù)的所述屬性,且動態(tài)配置所述處理器以根據(jù)所述屬性進(jìn)行操作。
19.根據(jù)權(quán)利要求18所述的視頻處理器,其中所述視頻數(shù)據(jù)具有一選自MPEG-2、MPEG-4、Windows媒體視頻(WMV)或X.264中的至少一個(gè)版本的格式。
20.根據(jù)權(quán)利要求18所述的視頻處理器,其中所述視頻數(shù)據(jù)具有一分辨率,所述分辨率選自約四分之一CEL(例如,手機(jī)圖片)分辨率與由高清晰度電視(HDTV)的一版本界定的約一分辨率之間的一分辨率。
21.根據(jù)權(quán)利要求18所述的視頻處理器,其中所述處理器是選自一編碼器、一解碼器、一壓縮器或一代碼轉(zhuǎn)換器中的至少一者。
22.根據(jù)權(quán)利要求18所述的視頻處理器,其中可根據(jù)所述視頻數(shù)據(jù)的所述屬性動態(tài)配置的所述屬性中的一者是一加法器陣列。
23.根據(jù)權(quán)利要求18所述的視頻處理器,其中可根據(jù)所述視頻數(shù)據(jù)的所述屬性動態(tài)配置的所述屬性中的一者是一用于所述視頻數(shù)據(jù)的過濾器。
24.根據(jù)權(quán)利要求18所述的視頻處理器,其中可根據(jù)所述視頻數(shù)據(jù)的所述屬性動態(tài)配置的所述屬性中的一者是一絕對差(SAD)計(jì)算機(jī)的總和。
25.根據(jù)權(quán)利要求18所述的視頻處理器,其中可編程的所述屬性中的一者是一運(yùn)動檢測器。
26.根據(jù)權(quán)利要求18所述的視頻處理器,其中所述處理器是基于一自適應(yīng)計(jì)算機(jī)(ACM)來構(gòu)建的。
27.一種用于具有多種屬性的數(shù)字視頻數(shù)據(jù)的處理器,所述處理器包含一硬件搜索引擎,其經(jīng)配置以將一組視頻數(shù)據(jù)內(nèi)的一參考塊與同一組或一不同組視頻數(shù)據(jù)內(nèi)的一組區(qū)域進(jìn)行比較,其中所述視頻數(shù)據(jù)的所述屬性可動態(tài)配置;一控制電路,其經(jīng)配置以根據(jù)由可編程的某事物,即指令、寄存器值、控制信號或可編程鏈接所指定的所述數(shù)據(jù)的所述屬性來控制所述加法器陣列。
28.根據(jù)權(quán)利要求27所述的處理器,其中所述控制電路包括一解碼器,所述解碼器經(jīng)配置以對一組當(dāng)前指令進(jìn)行解碼,從中確定所述視頻數(shù)據(jù)的所述屬性,并控制所述處理構(gòu)件以根據(jù)所述屬性進(jìn)行處理。
29.根據(jù)權(quán)利要求27所述的視頻處理器,其中所述處理器可按照所述組內(nèi)的區(qū)域數(shù)目和所述各個(gè)區(qū)域之間的相對偏移量而動態(tài)配置。
30.根據(jù)權(quán)利要求27所述的視頻處理器,其中所述硬件搜索引擎適合于用作一運(yùn)動檢測器。
31.根據(jù)權(quán)利要求27所述的視頻處理器,其中所述視頻數(shù)據(jù)具有一選自MPEG-2、MPEG-4、Windows媒體視頻(WMV)或X.264中的至少一個(gè)版本的格式。
32.根據(jù)權(quán)利要求27所述的視頻處理器,其中所述視頻數(shù)據(jù)具有一分辨率,所述分辨率選自約四分之一CEL(例如,手機(jī)圖片)分辨率與由高清晰度電視(HDTV)的一版本界定的約一分辨率之間的一分辨率。
33.根據(jù)權(quán)利要求27所述的視頻處理器,其中所述處理器是基于一自適應(yīng)計(jì)算機(jī)(ACM)來構(gòu)建的。
全文摘要
一種根據(jù)本發(fā)明的視頻處理器可按照所述處理器所操作的視頻數(shù)據(jù)的屬性而動態(tài)配置。某些實(shí)施例經(jīng)由一指令序列來動態(tài)配置所述處理器,其中所述指令包括關(guān)于當(dāng)前視頻數(shù)據(jù)的屬性的信息。某些實(shí)施例包括一可動態(tài)配置的加法器陣列,所述加法器陣列計(jì)算差值函數(shù)從而產(chǎn)生誤差向量。某些實(shí)施例包括一可動態(tài)配置的加法器陣列,其計(jì)算應(yīng)用到所述視頻數(shù)據(jù)的過濾函數(shù),例如在運(yùn)動檢測之前對傳入的視頻進(jìn)行插值或抽選。本發(fā)明某些實(shí)施例提供可動態(tài)配置的硬件搜索(例如)以用于檢測運(yùn)動。使用一自適應(yīng)計(jì)算機(jī)(ACM)來實(shí)施本發(fā)明的某些實(shí)施例。一ACM包括復(fù)數(shù)個(gè)異類計(jì)算元件,其每一者耦合到一互連網(wǎng)絡(luò)。
文檔編號H04N7/12GK1998153SQ200580019643
公開日2007年7月11日 申請日期2005年5月10日 優(yōu)先權(quán)日2004年5月10日
發(fā)明者W·詹姆斯·朔伊爾曼 申請人:輝達(dá)公司