專利名稱:為運動補償動態(tài)配置視頻解碼器高速緩存的制作方法
技術領域:
本發(fā)明涉及為運動補償動態(tài)配置視頻解碼器高速緩存。
背景技術:
本發(fā)明一般涉及視頻壓縮和解壓。
可以壓縮視頻圖像,以便可采用更緊湊且更有帶寬效率的方式傳送它們。一般來說,用于壓縮的技術包括運動補償。為了壓縮視頻,一種算法檢查圖像幀的序列以測量幀與幀的差異,以便發(fā)送運動矢量信息。該運動矢量相對于正在編碼或解碼的塊查找參考幀中的塊。運動補償是使用這樣一種算法的幀間編碼,該算法利用相鄰視頻幀之間的冗余性。因為運動補償需要存取大量數據,所以可能需要頻繁存取系統(tǒng)存儲器。系統(tǒng)存儲器存取的需求越大,視頻補償和解壓設備施加于主機系統(tǒng)上的工作負荷越高。此外,存取如系統(tǒng)存儲器的外部存儲器增加了視頻壓縮和解壓設備的帶寬需求。
發(fā)明內容
根據本發(fā)明的實施例,提供了一種方法,包括檢測視頻解碼器要處理的運動補償數據的類型;以及針對要處理的不同數據類型不同地刷新視頻解碼器高速緩存。根據本發(fā)明的實施例,提供了一種系統(tǒng),包括高速緩存;以及與所述高速緩存耦合的配置單元,所述配置單元根據要解碼的數據的類型不同地刷新所述高速緩存。根據本發(fā)明的第一方面,本發(fā)明涉及一種方法,包括檢測視頻解碼器要處理的運動補償數據的類型;以及根據要處理的數據的類型動態(tài)地重新配置視頻解碼器高速緩存。根據本發(fā)明的第二方面,本發(fā)明涉及一種方法,包括檢測要在視頻解碼器中處理的數據是交錯式(interlaced)還是漸進式數據;根據上述數據是交錯式還是漸進式數據,動態(tài)地重新配置上述視頻解碼器高速緩存。根據本發(fā)明的第三方面,本發(fā)明涉及一種系統(tǒng),包括高速緩存;以及與上述高速緩存耦合的配置單元,上述配置單元根據要解碼的數據的類型動態(tài)地重新配置上述高速緩存。
圖I是根據本發(fā)明一個實施例的主機系統(tǒng)的說明;圖2是根據本發(fā)明一個實施例的圖I所示的主機系統(tǒng)所用的視頻壓縮和解壓設備的描繪;圖3是根據本發(fā)明一個實施例、如何依據運動補償數據的特征來配置高速緩存的圖示描繪;
圖4是根據本發(fā)明另一個實施例、可以依據運動補償數據的特征來配置高速緩存的另一種方式的描繪;圖5是根據本發(fā)明一個實施例、可以在圖2所示的系統(tǒng)中利用的配置單元的圖示描繪;圖6是根據本發(fā)明另一個實施例、可以在圖2所示的實施例中利用的配置單元的圖示說明;圖7是根據本發(fā)明一個實施例的標記RAM的流程圖;圖8是根據本發(fā)明另一個實施例的標記RAM的圖示描繪;圖9是配置根據本發(fā)明一個實施例的視頻解碼器高速緩存的流程圖。
具體實施例方式參考圖1,基于處理器的系統(tǒng)400可以具有多種體系結構的其中之一,包括圖I所示的一種體系結構。本發(fā)明決不局限于任何特定系統(tǒng)配置,包括圖I所示的系統(tǒng)配置。例如,在一些體系結構中,可以利用多于一個的處理器。在一些實施例中,舉例說明,系統(tǒng)400可以在機頂盒、可以在多種基于處理器的系統(tǒng)中利用的芯片組或片上系統(tǒng)(SOC)中使用。系統(tǒng)400可以例如處理數字媒體,具體來說處理諸如流視頻、數字視頻磁盤媒體以及電視廣播和衛(wèi)星廣播之類的數字視頻媒體。在一些實施例中,處理器402或在一些情況中的多處理器可以經總線400耦合到存儲器集線器或北橋406。存儲器集線器406可以耦合到本地總線404。在一些實施例中,存儲器集線器406可以在處理器402、系統(tǒng)存儲器總線408、加速圖形端口(AGP)總線412和外設組件互連(PCI)總線424之間建立通信。AGP規(guī)范在美國加利福尼亞圣克拉拉的英特爾公司1996年7月31日發(fā)布的加速圖形端口接口規(guī)范、修訂版1.0中有詳細描述(the accelerated graphics port interfacespecification, revision I.0, publishedon July 31,1996, by IntelCorporation of Santa Clara, California)。 PCI 規(guī)范、修訂版3. 0可從美國俄勒網州97214波特蘭的PCI特殊興趣組獲取(the PCI specialinterestgroup, Portland, 0regon97214)。諸如動態(tài)隨機存取存儲器(DRAM)的系統(tǒng)存儲器410耦合到系統(tǒng)存儲器總線408。系統(tǒng)400可以包括將顯示器420耦合到AGP總線412的顯示器驅動程序接口 414。而且,在一些實施例中,網絡接口卡(NIC) 425可以耦合到PCI總線424。集線器鏈路430可以將存儲器集線器406耦合到南橋或輸入/輸出(1/0)集線器434。例如,1/0集線器434可以提供硬盤驅動器442與數字視頻盤(DVD)驅動器440之間的接口。而且,1/0集線器434可以提供至1/0擴充總線460的接口。在一些實施例中,1/0控制器462可以耦合到1/0擴充總線460,并可以提供從鼠標464以及鍵盤465接收輸入數據的接口。參考圖2,存儲器集線器406可以包括耦合到系統(tǒng)400的系統(tǒng)接口 24。接口 24耦合到處理視頻壓縮和解壓的視頻編碼器/解碼器(編解碼器)20。在圖2的實施例中,視頻編碼器/解碼器20耦合到視頻編解碼器存儲器集線器16。例如,視頻編碼器存儲器集線器16可以耦合到總線32上的多種存儲器裝置。最后,在一些實施例中,存儲器控制器單元14可以耦合到系統(tǒng)存儲器410。在一些實施例中,存儲器控制器單元14可以通過總線34耦合到其他存儲器。當然,也可以使用多種其他體系結構。視頻編解碼器20從分組基本碼流(PES)分析器22接收視頻數據。PES分析器22接收壓縮的基本視頻流,對其分析以從運動補償數據中分離出某些信 息,并將信息提供到視頻編解碼器20。它還將包括頭信息的某些信息提供到包括在視頻編解碼器存儲器集線器16中的配置單元36。在一些實施例中,配置單元36可以耦合到視頻解碼器高速緩存18。作為兩個示例,高速緩存18可以是易失性或非易失性存儲器,例如閃速存儲器、靜態(tài)隨機存取存儲器或動態(tài)隨機存取存儲器。分析器22提供給配置單元36的信息類型的示例包括如交錯式或漸進式的圖片序列類型、依據高度和/或寬度的圖片尺寸和幀或場解碼設置、以及用于壓縮或解壓的當前活動塊的行位置和列位置。漸進式掃描在一次掃描顯示幀的所有行。交錯式掃描掃描每個幀兩次。一個場包括偶數行,構成幀的兩個場的另一個場包括奇數行。編解碼器20可以具有將運動矢量轉換成塊地址的運動補償單元。編解碼器20對視頻編解碼器存儲器集線器16發(fā)出塊轉移讀取。視頻編解碼器存儲器集線器16可以將塊轉移轉換成各個存儲器轉移命令并在其高速緩存18中檢查有效數據。未高速緩存的數據導致向存儲器控制器單元14發(fā)送存儲器轉移命令,用于從系統(tǒng)存儲器410讀取。高速緩存的數據由高速緩存18本身提供服務,因此通過免去對系統(tǒng)存儲器410進行額外存取的需要來實現帶寬節(jié)省。視頻編解碼器存儲器集線器16還可以經總線32對其他編解碼器提供服務。同樣地,存儲器控制器單元14可以經總線34對如處理器402的其他裝置提供服務。視頻編解碼器存儲器集線器16的配置單元36負責基于從分析器22接收到的數據的類型、例如圖片類型參數(例如B-幀、P-幀)來配置高速緩存18。例如,根據運動補償數據是交錯式還是漸進式,或根據其他特征,配置單元36可以基于從分析器22接收的特征信息將高速緩存18重新配置為最好地容納期望的數據。例如,在一些實施例中,配置單元36僅可以在多個序列邊界上重新配置高速緩存。多個序列邊界可以包括許多具有某些共有運動補償參數的幀或圖片。一個序列邊界是共有參數改變時兩個連續(xù)幀或圖片之間的點。在其他實施例中,配置單元36可以在圖片或幀邊界上重新配置高速緩存18。在一些實施例中,可以根據PES分析器22從基本視頻流頭移除的數據來確定序列或圖片邊界的位置。為了在圖片或序列邊界上重新配置高速緩存18,在一些實施例中,期望在那些邊界上從高速緩存18刷新運動補償數據。在一些實施例中,可以實現刷新而不以顯著的方式不利地影響高速緩存18的性能。因此,在一些實施例中,可以就要解碼的下一個幀或圖片,針對例如P或B類型圖片的運動補償數據的特定特征或屬性來優(yōu)化高速緩存的性能??梢曰谳斎雸D片特征標識允許實施動態(tài)配置的特定高速緩存參數。
因為視頻圖片的尺寸以及因為運動補償算法跨圖片數據并向下對圖片數據執(zhí)行,所以在在處理了圖片下部時高速緩存18中圖片上部的數據不可避免地被替換。在圖片處理結束時,高速緩存18的內容在下一個圖片開始時可能是不可用的。因此,在一些實施例中,可以全局性地刷新高速緩存,以使所有高速緩存行失效,并且可以以如下方式重新配置高速緩存18 :可使其性能針對要解碼的下一個圖片的特定特征得以優(yōu)化。高速緩存18的性能可以取決于存儲在空間上靠近的數據來增強高速緩存命中率的能力。高速緩存18越頻繁地在任何特定時間具有編解碼器20需要的信息,該高速緩存18就越有用,而且系統(tǒng)40越有效率。視頻幀是二維的,因此,結合運動補償數據,對于視頻幀,空間上相鄰的數據意味著這些數據在水平和/或垂直方向上相鄰。即在一些實 施例中,就高速緩存優(yōu)化的目的來說,來自相鄰行或列的數據可能是在空間上相鄰的。一般來說,如果將空間上相鄰的數據存儲在給定的高速緩存行中,則可以增強性能。在一些運動補償方案中,如VC-I或Microsoft\Vhldows Media9中,在垂直方向上什么數據在空間上最靠近的確切定義基于正在解碼的圖片的類型有所不同。對于漸進式掃描序列,運動補償邏輯引用(refer to)來自先前幀的數據,包括幀的兩個場。因此,在此情況中,即使交替的數據行屬于分離的場,在垂直方向上,來自參考幀中樣本相鄰行的數據在空間上仍是相鄰的。但是,對于交錯式掃描序列,運動補償邏輯引用分別來自一個或多個場的數據。如果引用多于一個場,則這些場屬于不同的幀也是可能的。因此,在此情況中,在垂直方向上,來自參考場中樣本相鄰行的數據在空間上可以是相鄰的。因此,參考簡化漸進式掃描示例的圖3,可以將數據存儲在兩個高速緩存18行、命名為行0和行I中。以交錯的方式將存儲在存儲器中的參考幀的兩個場存儲在共用緩沖器30中。上部場“T”由偶數編號的行0、2、4等組成,下部場“B”由奇數行1、3、5等組成,在一些情況中,高速緩存行可以是32個字節(jié)并且可以存儲具有空間上相鄰的行的16個樣本??臻g上相鄰可以意味著相同幀的相鄰行。這樣,空間上相鄰的行屬于相同幀的不同場。如果兩個參考場被存儲在外部存儲器中分離的緩沖器或共用緩沖器中,則只要存儲器控制器為每個場提取16字節(jié)的數據,則不成問題。因此,高速緩存行0從垂直相鄰的行2和行3接收數據。高速緩存行I從也是垂直相鄰的行6和行7接收數據。圖4是交錯式掃描數據的簡化示例的說明。圖4是將數據存儲在兩個高速緩存18行、行0和行I中的一個示例。將參考幀的兩個場以交錯的方式存儲在共用緩沖器31中。上部場“T”包含偶數編號的行0、2、4等,下部場“B”包含奇數行1、3、5等。在一個實施例中,高速緩存行可以是32字節(jié),并存儲來自空間上相鄰的行的16個樣本字節(jié)。在此情況中,空間上相鄰意味著相鄰的行來自相同場,空間上相鄰的行屬于該幀的相同場。如果這兩個參考場被存儲在外部存儲器中分離的緩沖器或共用緩沖器中,則只要存儲器控制器提取來自兩個場的數據,則不成問題。在僅使用一個參考場來對圖片編碼或解碼的情況中,如果使用先前的數據行分配,則意味著高速緩存空間的50%確切地被浪費,因為每個高速緩存行的一半是由不可使用的數據組成。如圖4所示,行O和2垂直地布置,但是垂直相鄰的,而且都被置于行O中。相似地,行5和7被視為垂直相鄰,而且被置于高速緩存的行I中。因此,高速緩存18的配置可以根據是涉及交錯式數據(如圖4中的情況所示)還是涉及漸進式數據來更改(如圖3中的情況所示)來更改。包括MCU14和VCMH16的存儲器系統(tǒng)也可以配置為基于漸進式或交錯式掃描來從相同場或相鄰場提取數據。在一些實施例中,配置單元36可以控制高速緩存18,具體來說控制如何尋址高速緩存18。例如如圖5所示的配置單元36a接收圖片序列類型,是交錯式還是漸進式的?;谠撔畔ⅲm當地配置高速緩存18,例如如圖3或4所示。在一個實施例中,配置單元36a可以包括由另一個處理器編程的一組寄存器。在交錯式數據的情況中,編碼器/解碼器20按場而非按幀進行處理。每個幀有兩個場。一次可以對一個場解碼。當對場的一個塊解碼且必須檢查前一個幀時,編碼器/解碼器20希望查看特定的場,而非整個 幀。在非交錯式數據或漸進式數據的情況中,可以將兩個場顯示在一起。當編碼器/解碼器20正在對幀編碼或解碼時,它需要查看先前幀以便解碼。因此,參考圖5,配置單元36a的輸出可以是指示幀或場分配的信號,并且這些信號配置高速緩存行和存儲器系統(tǒng)。 參考圖6,根據本發(fā)明的另一個實施例,可以由控制200來控制配置單元36b??刂?00可以是軟件、硬件或固件。配置單元36b可以接收當前處理的數據塊、如8X8、16X16或其他大小的數據塊的行和列位置。這些行和列位置是所討論的塊的上方、最左方像素的位置。在一些實施例中,配置單元36還可以從分析器22接收有關運動補償數據是用于交錯式還是漸進式掃描、包括高度和寬度的圖片尺寸、幀或場解碼以及是P圖片還是B圖片的信息。因此,在交錯式掃描數據的情況中,數據總是使用場解碼,但是在漸進式掃描的情況中,可以指定場解碼或幀解碼。配置單元36b輸出標記隨機存取存儲器(RAM)地址位。在一個實施例中,標記RAM地址位可以包含低階列、低階行和場選擇位。它還輸出高階地址位用于標記比較。由此,參考圖7,過程200可以在軟件、硬件或固件中實施??刂?00開始于接收有關運動補償數據的類型的PES分析器22信息,如框202所示。它還接收行和列位置信息,如框204所示。在一些實施例中,可以在查詢表或寄存器中查詢適合的配置,如框206所示。這樣,可以適當地配置高速緩存18,如框208所示??梢暂敵鰳擞浀刂肺唬缈?10所示。參考圖8,在一個實施例中,可以尋址在高速緩存18外部或作為其一部分的標記RAM40,如圖所示。標記RAM可以將數據存儲在多個邏輯或物理槽(physical slot)中。槽存儲的數據對應于低階位正在存取的運動補償數據的高階地址位。標記RAM40在線44上接收低階列位58、低階行位60和場選擇位62,并輸出對應的高階位。在一些實施例中,可以利用單個場選擇位62,并且在其他實施例中,可以利用兩個場設置位。一個或多個場選擇位62可以是指示是涉及低場還是高場以區(qū)分相鄰場的相似數據的一個或多個位。標記RAM40接收低階列位和低階行位,因為由于運動補償數據的二維特性,行和列二者都可能是相鄰的。比較器42接收存儲在由低階位選擇的標記RAM槽中的高階地址位。比較器42接收實際的高階行和列地址位54和56以及基地址52。如果根據比較器42所判斷的,線46上的高階地址位與來自標記RAM40中的輸出匹配,則檢測到高速緩存命中,而且數據在數據高速緩存18中。相反,如果它們不匹配,則涉及高速緩存未命中,并且必須從如系統(tǒng)存儲器410的外部存儲器獲取數據。除了如高速緩存大小和關聯(lián)性的高速緩存參數以外,用于尋址標記RAM40的列和行地址位的最優(yōu)數量也是輸入圖片特征的函數,這些輸入圖片特征包括幀大小、圖片類型等。典型實施可以使用一種表驅動的方法來調用用于生成標記RAM地址的最優(yōu)列和行位分配。對于交錯式圖片,可以為參考幀引用各個場?;趫D片類型,可以引用I到4個場。例如在有場編碼的P圖片和場編碼的B圖片的情況中,可以涉及多于2個的場。但是,對于引用多個場的任何塊的運動補償,如下情況是可能的正在多個場內從相似的偏移量(垂直和水平)提取數據。這增加了高速緩存沖突的可能性。
通過對標記RAM地址使用場選擇位62,可以減少那些沖突,因為高速緩存的空間有效地變得分區(qū)成多個更小的空間并映射到分離的場或場集。該方法中折衷的是在減少沖突的同時,高速緩存的分區(qū)可能增加容量未命中。使用場選擇位的決策,具體來說可以利用的場選擇位的數量(0至2)可以基于輸入圖片類型參數,包括這些參數是漸進式的、交錯式的、P還是B圖片、圖片尺寸以及高速緩存大小和關聯(lián)性。一般來說,對于較低關聯(lián)性高速緩存,隨著越多高速緩存的基于場的分區(qū),性能往往可能越好。因此,參考圖9,可以在軟件、硬件或固件中實施的過程300開始于接收行和列低階地址位以及場選擇位,如框302所示。在標記RAM40中查找適合的地址,如框304所示。確切地來說,標識較低地址和場選擇位的正確槽。然后,輸出存儲在槽中的地址,從而給出高階行和地址位,如框306所示。菱形框308處的檢查指示輸出位是否與線46上的高階地址位匹配(圖8)。如果它們匹配,則在框310中指示高速緩存命中,否則記錄高速緩存未命中,如框312所示。在高速緩存未命中的情況中,存取外部存儲器或系統(tǒng)存儲器,而不是從高速緩存18快速存取信息。在本說明書中對“一個實施例”或“實施例”的引用表示本發(fā)明內所涵蓋的至少一個實施中包括結合該實施例描述的特定功能特征、結構或特征。因此,短語“一個實施例”或“在實施例中”的出現不一定系指同一個實施例。而且,可采用不同于說明的特定實施例的其他適合形式構成這些特定的功能特征、結構或特征,所有此類形式可以涵蓋在本發(fā)明的權利要求中。雖然本發(fā)明是針對有限數量的實施例來描述的,但是本領域技術人員將認識到源于此的多種修改和變化。所附權利要求要涵蓋如落在本發(fā)明的真實精神和范圍內的所有此類修改和變化。
權利要求
1.一種方法,包括 檢測視頻解碼器要處理的運動補償數據的類型;以及 針對要處理的不同數據類型不同地刷新視頻解碼器高速緩存。
2.如權利要求I所述的方法,其中,檢測數據的類型包括檢測所述數據是交錯式的還是漸進式的。
3.如權利要求2所述的方法,包括從分組基本碼流分析器接收信息以確定數據的類型。
4.如權利要求I所述的方法,其中,將所述高速緩存重新配置為存儲來自掃描數據的連續(xù)相鄰行的數據。
5.如權利要求3所述的方法,其中,將所述高速緩存配置為在一個高速緩存行中接收連續(xù)的偶數行,而在另一個高速緩存行中接收連續(xù)的奇數行。
6.如權利要求I所述的方法,包括接收塊位置和所述塊是交錯式還是漸進式掃描的指示,并以低階列和低階行位的形式輸出標記隨機存取存儲器地址位的指示。
7.如權利要求6所述的方法,包括使用所述低階列和低階行位來存取標記隨機存取存儲器,從所述標記隨機存取存儲器接收高階行和列位,并將那些位與接收的數據存取地址進行比較。
8.如權利要求7所述的方法,包括接收場選擇位并使用所述場選擇位來標識標記隨機存取存儲器內的位置。
9.如權利要求I所述的方法,包括根據運動補償數據是引用掃描數據的幀的兩個場還是僅引用所述幀的一個場來重新配置所述視頻解碼器高速緩存。
10.如權利要求I所述的方法,包括刷新所述高速緩存連同重新配置所述高速緩存。
11.如權利要求I所述的方法,包括在幀邊界上重新配置所述高速緩存。
12.如權利要求I所述的方法,包括在序列邊界上重新配置所述高速緩存。
13.—種系統(tǒng),包括 高速緩存;以及 與所述高速緩存耦合的配置單元,所述配置單元根據要解碼的數據的類型不同地刷新所述高速緩存。
14.如權利要求13所述的系統(tǒng),所述單元檢測要存儲在所述高速緩存中的數據是交錯式還是漸進式掃描的數據,并根據所述數據是交錯式還是漸進式掃描的來重新配置所述高速緩存。
15.如權利要求13所述的系統(tǒng),其中,所述配置單元根據運動補償數據是引用掃描數據的幀的兩個場還是僅引用所述幀的一個場來重新配置所述高速緩存。
16.如權利要求13所述的系統(tǒng),所述高速緩存包括標記隨機存取存儲器,所述標記隨機存取存儲器存儲有關運動數據的較高行和列地址位且按較低行和列地址位索引的信息,所述標記隨機存取存儲器包括比較器,所述比較器將有關較高行和列地址位的信息與來自所述標記隨機存取存儲器的信息進行比較,以確定數據是否被高速緩存在所述高速緩存中。
17.如權利要求13所述的系統(tǒng),所述配置單元根據要解碼的數據的類型來動態(tài)地重新配置所述高速緩存。
全文摘要
本發(fā)明的名稱是為運動補償動態(tài)配置視頻解碼器高速緩存??梢詣討B(tài)重新配置用于運動補償數據的視頻解碼器高速緩存。在一些實施例中,可以在圖片或幀邊界上重新配置它,而在其他實施例中,可以在序列邊界上重新配置它??梢栽诿總€邊界上刷新該高速緩存,以使這種重新配置能夠實施。
文檔編號H04N7/36GK102970538SQ20121046494
公開日2013年3月13日 申請日期2006年9月19日 優(yōu)先權日2005年9月20日
發(fā)明者R.薩克納 申請人:英特爾公司