基于九宮格的精細運動估計數據讀取方法
【技術領域】
[0001]本發明屬于集成電路設計技術,涉及于九宮格的精細運動估計數據讀取方法。
【背景技術】
[0002]H.264高清視頻編碼核進行精細運動估計的操作時,搜索框內的數據量大無規律且跨行操作較多,因此讀寫效率很低,數據寫入片外DDR2 SDRAM存儲器會耗費大量時間。為了滿足實時編碼對大數據量高速訪問的需求,本專利提出按固定順序訪問的宏塊讀取方法,采用九宮格的形式進行數據的片上緩存的方法以及采用地址預先判斷和提前終止冗余數據等方法來提高精細運動的訪問速度。
【發明內容】
[0003]本發明的目的是提供一種基于九宮格的精細運動估計存儲實現方法,能夠有效地完成大量無規律的精細運動估計數據的高速讀取操作需求。
[0004]本發明的技術解決方案是:
[0005]—種基于九宮格的精細運動估計數據讀取方法,包括以下步驟:
[0006]I)按固定順序訪問宏塊:
[0007]1.1)對幀內圖像進行一次讀宏塊請求時,連續讀出4個宏塊的數據,并且每4次請求只鎖存一次地址;
[0008]1.2)使用兩組片上DPRAM用于緩存亮度和色度數據,其中:亮度數據在片外DDR2SDRAM中按照一幀圖像的起始地址連續存儲,頂場數據放在一幀空間中從起始地址開始的上半部分,底場數據放在一幀空間中從二分之一高度對應的地址開始的下半部分;
[0009]1.3)根據下一個需要讀出的像素地址是否在預取4個宏塊地址范圍內來判斷是否命中;如果在命中內,則本次請求所需的數據在DPRAM緩存中,直接從DPRAM中取出相應的數據;如果不命中,則計算該像素所在的宏塊地址并直接從DDR2 SDRAM中預讀取后4個宏塊的數據;
[0010]2)采用九宮格形式的存儲訪問:
[0011]2.1)將第一次讀請求的所在宏塊地址進行緩存,并以該宏塊為中心,向八個方向各擴展一個宏塊形成九宮格;
[0012]2.2)通過起始地址一次計算出該九宮格內9個宏塊的所有數據在DDR2 SDRAM中的映射地址;
[0013]2.3)根據精細運動估計各請求的訪問地址是否在九宮格的地址范圍內,判斷本次請求所需的數據是否地址命中;如果命中,則直接從DPRAM中取出相應的數據;如果不命中,則需要以當前請求對應的地址計算出新的預取地址,并預取出對應九宮格中的亮度和色度數據存放于DPRAM緩存中。
[0014]上述方法還包括步驟3采用地址預先判斷的方法提前終止冗余數據,具體步驟為:實時判斷相鄰兩次精細運動估計之間的所有運動矢量所需的數據是否都已取出;若是,則立即終止多余的讀DDR2 SDRAM操作。
[0015]上述步驟2.2)中的9個宏塊的數據包括一個運動矢量的所有整像素、半像素和四分之一像素讀操作的像素數據。
[0016]本發明的主要優點:
[0017]本發明根據采用三種優化方法對精細運動估計的讀取操作進行了優化,預讀取數據避免了片外DDR2 SDRAM的頻繁訪問,九宮格的方法規整了數據的地址減少了跨行操作,終結冗余數據的方法進一步縮短了數據的讀取時間。
【附圖說明】
[0018]圖1是傳統精細運動估計的讀請求次數;
[0019]圖2是{0,0}搜索的預取范圍;
[0020]圖3是三步搜索的預取范圍;
[0021 ]圖4是基于九宮格的運動矢量預讀取范圍;
[0022]圖5是基于九宮格的精細運動估計讀請求次數;
[0023]圖6是FME模塊的架構示意圖;
[0024]圖7是本發明的流程框圖。
【具體實施方式】
[0025]本發明基于九宮格的精細運動估計數據讀取方法,包括以下步驟:
[0026]步驟I,按固定順序訪問的宏塊讀取方法:
[0027]由于幀內圖像的連續性,編碼時按固定順序訪問的圖像宏塊(每個宏塊有16行2列像素數據)是可以進行地址預測和命中判斷的。為了提高片外DDR2 SDRAM的讀寫效率,一次讀宏塊請求可以從片外連續讀出4個宏塊的數據,并且每4次請求只需要鎖存一次地址。由于地址連續,每個宏塊的基地址范圍可以預先計算得到;
[0028]使用兩組片上DPRAM用于緩存亮度和色度數據,亮度數據在片外DDR2SDRAM中按照一幀圖像的起始地址連續存儲,頂場數據放在一幀空間的上半部分(起始地址),底場數據放在下半部分(一幀的二分之一高度對應的地址);
[0029]設計命中判斷機制,根據下一個需要讀出的像素地址是否在預取4個宏塊地址范圍內來判斷命中;如果在范圍內,則本次請求所需的數據是否在DPRAM緩存中,直接從DPRAM中取出相應的數據;如果不命中則計算該像素所在的宏塊地址并直接從DDR2 SDRAM中預讀取后4個宏塊的數據。
[0030]步驟2,采用九宮格的形式進行數據的片上緩存:
[0031]在精細運動估計中,對于運動矢量不為O的讀像素操作,數據會進行多次跨行讀取(如圖1所示);將第一次讀請求的所在宏塊地址進行緩存,并擴展為九宮格的范圍將數據預讀取到片上DPRAM緩存,可以有效減少跨行讀取的次數(如圖5所示);
[0032]根據九宮格在幀內的存儲地址計算出其所在宏塊的地址,并從該宏塊向右向下(向像素行列增加的方向)個擴展3個宏塊,總計9個宏塊(包括器是宏塊)這9個宏塊的范圍包括了一個運動矢量的所有整像素、半像素和四分之一像素讀操作的像素數據。通過起始地址一次計算出九宮格(9個宏塊)的所有數據在DDR2 SDRAM中的映射地址;
[0033]根據精細運動估計各請求的訪問地址是否在九宮格的地址范圍內,判斷本次請求所需的數據是否在緩存中,是否地址命中;如果命中則直接從DPRAM中取出相應的數據;如果亮度不命中則需要以當前請求對應的地址計算出新的預取地址,并預取出對應九宮格中的亮度和色度數據存放于DPRAM緩存中。如果亮度命中而色度不命中,則只重新預取色度的九宮格數據;
[0034]步驟3、采用地址預先判斷的方法提前終止冗余數據:實時判斷所需要的數據是否已經完從DDR2 SDRAM中取出(對于相鄰兩次精細運動估計之間的所有運動矢量讀操作,讀請求所需的數據都寫已回編碼核,但九宮格數據還未預取結束時,立即終止多余的讀DDR2SDRAM操作)以減少讀取時間,減少外存帶寬的占用。
[0035]本發明設計思路及工作原理:
[0036]1、精細運動估計讀取效率低的原因:
[0037]精細運動估計是在粗運動估計搜索框內進行的,而隨著運動矢量的不同,精細運動估計會讀取不同位置的數據,而搜索框的大小為13*10個宏塊的范圍,因此讀操作很難找到固定的范圍讀取;而跨行操作也會極大的增加讀取時間,因此精細運動估計的讀取效率是影響編碼芯片性能的主要因素之一。
[0038]如圖1所示,在傳統精細運動估計的讀取操作中,從精細運動估計中取出某個當前宏塊對應的讀取操作共發生