TW201620306A - 在區塊處理管線中之色度快取架構 - Google Patents

在區塊處理管線中之色度快取架構 Download PDF

Info

Publication number
TW201620306A
TW201620306A TW104128225A TW104128225A TW201620306A TW 201620306 A TW201620306 A TW 201620306A TW 104128225 A TW104128225 A TW 104128225A TW 104128225 A TW104128225 A TW 104128225A TW 201620306 A TW201620306 A TW 201620306A
Authority
TW
Taiwan
Prior art keywords
block
cache
memory
pipeline
blocks
Prior art date
Application number
TW104128225A
Other languages
English (en)
Other versions
TWI586149B (zh
Inventor
蓋 柯特
約瑟夫P 布萊特
提摩西J 麥利特
承業 江
主恩 鄭
Original Assignee
蘋果公司
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 蘋果公司 filed Critical 蘋果公司
Publication of TW201620306A publication Critical patent/TW201620306A/zh
Application granted granted Critical
Publication of TWI586149B publication Critical patent/TWI586149B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/127Prioritisation of hardware or computational resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/439Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using cascaded computational arrangements for performing a single operation, e.g. filtering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本發明提供用於快取一區塊處理管線中之參考資料之方法及裝置。一快取記憶體可經實施,對應於在該管線中正經處理之區塊之運動向量的參考資料可自記憶體預取至該快取記憶體。對於該等運動向量之預取可在一處理級之前的一或多個級起始。用於該快取記憶體之快取標記可藉由該等運動向量定義。當接收一運動向量時,可檢查該等標記以判定該快取記憶體中是否存在對應於該向量(快取命中)之快取區塊。在一快取遺漏時,根據一替換原則選擇該快取記憶體中之一快取區塊,更新該各別標記,且發出對於該各別參考資料之一預取(例如,經由DMA)。

Description

在區塊處理管線中之色度快取架構
本發明大體上係關於視訊或影像處理,且更具體言之,係關於用於處理區塊處理管線中之數位視訊圖框之方法及裝置。
包括(但不限於)個人電腦系統、桌上型電腦系統、膝上型及筆記型電腦、平板電腦或墊式器件、數位攝影機、數位視訊錄製器及行動電話或智慧型手機之各種器件可包括可實施視訊處理方法之軟體及/或硬體。舉例而言,器件可包括可接收及處理來自一或多個源之數位視訊輸入並根據一或多個視訊處理方法輸出經處理視訊圖框的裝置(例如,積體電路(IC)(諸如,系統單晶片(SOC))或IC之子系統)。作為另一實例,軟體程式可實施於可接收及處理來自一或多個源之數位視訊輸入並根據一或多個視訊處理方法輸出經處理視訊圖框的器件上。作為一實例,如圖1所示之視訊編碼器10表示裝置,或替代地表示軟體程式,其中根據視訊編碼方法來編碼數位視訊輸入(輸入圖框90)或將數位視訊輸入轉換成另一格式(輸出圖框92),例如,經壓縮視訊格式,諸如,H.264/進階視訊寫碼(AVC)格式(亦被稱作MPEG 4之第10部分)或H.265高效視訊編碼(HEVC)格式。諸如視訊編碼器10之裝置或軟體程式可包括多個功能組件或單元,以及至(例如)視訊輸入源及外部記憶體之外部介面。
在一些視訊處理方法中,為了執行處理,將每一輸入視訊圖框90劃分成若干列及行之像素區塊(例如,16×16像素區塊),例如,如圖2中所說明,圖2展示劃分成144個16×16像素區塊的實例192×192像素圖框。輸入視訊圖框90之每一區塊經單獨地處理,且當完成時,經處理區塊經組合以形成輸出視訊圖框92。此可被稱作區塊處理方法。習知地,區塊係藉由區塊處理方法以如圖2中所示之掃描次序予以處理,從而在第一列圖框之第一區塊(展示為區塊0)處開始,橫越該列而順序地處理區塊,且當完成一列時在下一列之第一區塊處繼續。
區塊處理方法可包括順序地應用於視訊圖框中之每一區塊之多個處理步驟或操作。為實施此區塊處理方法,諸如視訊編碼器10之裝置或軟體程式可包括或實施區塊處理管線40。區塊處理管線40可包括兩個或兩個以上級,其中每一級實施區塊處理方法之步驟或操作中之一或多者。圖1展示實例視訊編碼器10,其實施包括至少級42A至42C之實例區塊處理管線40。將區塊輸入至管線40之級42A,根據由該級42A實施之操作來處理該區塊,且將結果輸出至下一級42B(或作為由上一級42進行之最終輸出)。下一級42B處理該區塊,同時下一區塊經輸入至先前級42A以供處理。因此,區塊沿著管線在級間移動,其中每一級一次處理一個區塊,且多個級同時處理不同區塊。習知地,將區塊輸入至區塊處理管線40且藉由區塊處理管線40以如圖2所展示之掃描次序來處理該等區塊。舉例而言,在圖1中,圖2中所示之第一列圖框之第一區塊(區塊0)係在級42C處,第二區塊(區塊1)係在級42B處,且第三區塊(區塊2)係在級42A處。待輸入至區塊處理管線40之下一區塊將為第一列中之第四區塊。
H.264/進階視訊寫碼(AVC)
H.264/AVC(正式地被稱作ITU-T推薦H.264,且亦被稱作MPEG-4第10部分)為由ITU-T(國際電信聯盟--電信標準化部門)視訊寫碼專 業團體(VCEG)連同ISO/IEC JTC1動畫專業團體(MPEG)開發的區塊定向式以運動補償為基礎之編解碼器標準。H.264/AVC標準係由ITU-T在名為「ITU-T Recommendation H.264:Advanced video coding for generic audiovisual services」之文件中發佈。此文件亦可被稱作H.264推薦。
本發明描述用於快取視訊編碼器裝置之區塊處理管線中之色度參考資料的方法及裝置之各種實施例。在視訊編碼區塊處理管線中,在處理來自當前圖框之巨集區塊時,可將來自先前已在管線中處理之一或多個圖框的色度參考資料儲存至記憶體以用於在一或多個級處之存取,例如,用於在色度運動補償級處之存取。快取記憶體(例如,全向關聯快取記憶體(fully associative cache))可以(例如)諸如SRAM(靜態隨機存取記憶體)之本機(至管線)記憶體實施,對應於在管線之較早級處針對巨集區塊判定之運動向量的色度參考資料之部分(例如,64位元組記憶體區塊)可自記憶體預取至該本機記憶體。色度快取邏輯可維持快取記憶體,且可延伸超過管線之多個級。對於通過管線之給定巨集區塊之運動向量的擷取可由色度快取邏輯在色度運動補償級之前的一或多個級處起始,以提供時間(亦即,多個管線循環)以在色度運動補償需要其之前將各別記憶體區塊自記憶體讀取至快取記憶體中。
在至少一些實施例中,色度參考資料可根據巨集區塊圖塊格式儲存於外部記憶體中,每一圖塊取決於色度格式而包括在本文中被稱作記憶體區塊的兩個或兩個以上區塊(例如,16×4 64B區塊)。色度快取記憶體可包括N個(例如,512個)位置或區塊(例如,64位元組區塊),其在本文中被稱作快取區塊,記憶體區塊可經預取至該N個位置或區塊中。在標記與快取區塊之間具有一對一對應的情況下,N個快 取標記可用以引用色度快取記憶體中之快取區塊。針對每一巨集區塊運動向量產生一或多個參考運動向量,每一參考運動向量指示含有巨集區塊運動向量所需要之色度像素區域的至少一部分之參考資料中之記憶體區塊的位置。參考運動向量可被用作讀取位址(例如,DMA讀取位址)以將各別記憶體區塊自參考資料預取至快取區塊中。儲存參考運動向量作為用於各別快取區塊之快取標記。因此,可直接檢查快取標記(無需位址轉譯)來判定快取記憶體中是否存在對應於給定參考運動向量(快取命中)的快取區塊。在快取遺漏時,根據替換原則選擇快取記憶體中之快取區塊,更新各別標記以指示參考運動向量,並發出對於由參考運動向量指示之色度參考資料之各別記憶體區塊之預取(例如,經由使用參考運動向量作為讀取位址的DMA讀取請求)。快取區塊之狀態可經標示為待決。當記憶體區塊經讀取至快取區塊中時,快取區塊狀態可變為就緒。
在至少一些實施例中,色度快取邏輯可(例如)使用N位元暫存器集合追蹤對應於處於管線中之級處的巨集區塊之色度快取區塊。當針對巨集區塊判定快取記憶體中之快取區塊時,可設定第一暫存器中之對應位元。暫存器之內容與巨集區塊一起經向下推送通過管線之級。在色度運動補償級前之一或多個級可被稱作執行中級;存取快取區塊之級(例如,色度運動補償級)可被稱作使用中級。執行中及使用中暫存器之邏輯運算(例如,按位元OR)向色度快取邏輯指示色度快取記憶體中不應被選作替換快取區塊之所有快取區塊。此等快取區塊可被稱作「不接觸」快取區塊。當根據替換原則為快取遺漏選擇快取區塊時,不使用當前「不接觸」快取區塊。
在色度快取替換原則中,M暫存器之額外集合可用作「老化貯體」,替換候選者可自該等「老化貯體」選擇。舉例而言,可使用四個貯體(貯體0至3)。貯體儲存當前不在「不接觸」類別中之快取區塊 的指示。當與存取快取區塊之級(例如,色度運動補償級)處之巨集區塊有關係時,可將使用中暫存器之並不亦在執行中暫存器中之內容推送至第一老化貯體(例如,貯體0)中。邏輯運算可用於以管線循環(在一些實施例中,每四個循環)推送可用快取區塊之指示通過貯體,其中貯體0根據執行中及使用中暫存器內容填充,貯體1根據貯體0之內容填充,等等。當選擇替換候選快取區塊時,首先檢查最後老化貯體(例如,貯體3),接著檢查下一貯體(貯體2),等等。在至少一些實施例中,可按需要新增更多老化貯體。
10‧‧‧視訊編碼器
40‧‧‧區塊處理管線
42A‧‧‧級
42B‧‧‧級
42C‧‧‧級
90‧‧‧輸入圖框
92‧‧‧輸出圖框
100‧‧‧區塊處理管線
110‧‧‧級
110A‧‧‧級
110B‧‧‧級
110C‧‧‧級
120‧‧‧記憶體
122‧‧‧明度參考資料
124‧‧‧色度參考資料
800‧‧‧區塊處理管線
810A‧‧‧級
810B‧‧‧級
830‧‧‧色度快取記憶體
880‧‧‧記憶體
882‧‧‧色度參考資料
900‧‧‧區塊處理管線
910A‧‧‧級
910B‧‧‧級
910C‧‧‧級
910D‧‧‧級
910E‧‧‧級
912B‧‧‧管線組件
912C‧‧‧管線組件
912D‧‧‧管線組件
920‧‧‧色度快取邏輯
930‧‧‧色度快取記憶體
932‧‧‧快取標記
940‧‧‧暫存器
950‧‧‧老化貯體
980‧‧‧記憶體
982‧‧‧色度參考資料
1000‧‧‧參考運動向量
1002‧‧‧參考圖框數目
1004‧‧‧X位移
1006‧‧‧Y位移
1008‧‧‧區塊數目
1050‧‧‧參考圖框
1052‧‧‧巨集區塊圖塊
1200‧‧‧像素區域
1430‧‧‧色度快取記憶體
1432‧‧‧快取標記
1540‧‧‧暫存器
1540A‧‧‧執行中暫存器
1540B‧‧‧使用中暫存器
1550‧‧‧老化貯體
1600‧‧‧區塊
1602‧‧‧區塊
1604‧‧‧區塊
1606‧‧‧區塊
1608‧‧‧區塊
1700‧‧‧區塊
1702‧‧‧區塊
1704‧‧‧區塊
1706‧‧‧區塊
1710‧‧‧區塊
1720‧‧‧區塊
1722‧‧‧區塊
1724‧‧‧區塊
3100‧‧‧區塊
3102‧‧‧區塊
3104‧‧‧區塊
3106‧‧‧區塊
3108‧‧‧區塊
3150‧‧‧區塊
3152‧‧‧區塊
3154‧‧‧區塊
3156‧‧‧區塊
3158‧‧‧區塊
5000A‧‧‧管線單元
5000B‧‧‧管線單元
5010‧‧‧記憶體
5020‧‧‧單元核心
5030‧‧‧處理器
6000‧‧‧區塊處理方法
6002‧‧‧巨集區塊輸入
6010‧‧‧圖框內及圖框間估計
6020‧‧‧模式決策
6030‧‧‧運動補償及重建構
6040‧‧‧CAVLC編碼及解區塊濾波器
6050‧‧‧轉碼器
7000‧‧‧視訊編碼器
7010‧‧‧處理器
7020‧‧‧記憶體管理單元
7030‧‧‧直接記憶體存取
7040‧‧‧區塊處理管線
7050‧‧‧互連件
8000‧‧‧系統單晶片
8010‧‧‧通信網狀架構
8020‧‧‧中央處理單元複合體
8022‧‧‧層級二快取記憶體
8024‧‧‧處理器
8030‧‧‧記憶體控制器
8040A‧‧‧周邊組件
8040B‧‧‧周邊組件
8800‧‧‧記憶體
8900‧‧‧外部介面
9000‧‧‧系統
9010‧‧‧功率管理單元
9020‧‧‧周邊裝置
圖1說明實例視訊編碼器,其包括以掃描次序處理來自輸入圖框之區塊之習知區塊處理管線。
圖2說明來自視訊圖框之區塊之習知掃描次序處理。
圖3說明根據至少一些實施例之實例區塊處理管線。
圖4以圖形方式說明根據至少一些實施例之用於視訊圖框之記憶體中之巨集區塊圖塊格式。
圖5以圖形方式說明根據至少一些實施例之針對色度4:4:4之圖塊格式。
圖6以圖形方式說明根據至少一些實施例之針對色度4:2:2之圖塊格式。
圖7以圖形方式說明根據至少一些實施例之針對色度4:2:0之圖塊格式。
圖8說明根據至少一些實施例之使用色度快取記憶體之實例區塊處理管線。
圖9說明根據至少一些實施例之區塊處理管線中之色度快取記憶體及色度快取邏輯。
圖10說明根據至少一些實施例之可作為色度快取標記儲存之參 考運動向量。
圖11說明根據至少一些實施例之相對於巨集區塊且相對於參考圖框之運動向量。
圖12說明根據至少一些實施例之用於運動向量之巨集區塊圖塊中的記憶體區塊。
圖13A說明根據至少一些實施例之自輸入管線運動向量(PMV)導出參考運動向量(RMV)。
圖13B說明根據至少一些實施例之針對輸入管線運動向量(PMV)產生參考運動向量(RMV)之集合。
圖14說明根據至少一些實施例之色度快取記憶體及快取標記。
圖15A說明根據至少一些實施例之可用於在替換原則中追蹤快取區塊的暫存器。
圖15B說明根據至少一些實施例之判定「不接觸」快取區塊。
圖15C說明根據至少一些實施例之老化貯體。
圖16為根據至少一些實施例之用於將色度資料快取至色度快取記憶體之方法的高階流程圖。
圖17為根據替換原則之至少一些實施例之用於老化色度快取記憶體中之快取區塊的方法之流程圖。
圖18展示根據至少一些實施例之圖框中之當前區塊之相鄰區塊,且進一步說明用於該等區塊之奈特(knight)次序處理方法。
圖19A及圖19B以圖形方式說明根據至少一些實施例的奈特次序處理方法,其包括用於判定下一區塊之演算法。
圖20A及圖20B為根據至少一些實施例之用於區塊處理管線之奈特次序處理方法的高階流程圖。
圖21A及圖21B為根據至少一些實施例的實例管線處理單元之方塊圖,該等實例管線處理單元可用於實施如本文所描述之區塊處理方 法及裝置中之一或多者之區塊處理管線的級處。
圖21C展示單一處理器可與兩個或兩個以上管線單元之群組相關聯。
圖22為根據至少一些實施例的在一實例區塊處理方法中之一般操作的高階方塊圖,該實例區塊處理方法可藉由實施本文所描述之區塊處理方法及裝置中之一或多者之區塊處理管線來實施。
圖23為根據至少一些實施例的實例視訊編碼器裝置之方塊圖。
圖24為系統單晶片(SOC)之一項實施例的方塊圖。
圖25為系統之一項實施例的方塊圖。
儘管本發明中所描述之實施例可易受各種修改及替代形式影響,但在圖式中藉助於實例來展示其特定實施例,且將在本文中對其進行詳細描述。然而,應理解,圖式及其「實施方式」並不意欲將該等實施例限制於所揭示之特定形式,而是相反地,意欲涵蓋屬於所附申請專利範圍內之所有修改、等效物及替代例。如貫穿本申請案所使用,詞「可」係在准許意義(亦即,意謂有可能)而非必選意義(亦即,意謂必須)予以使用。相似地,詞「包括」意謂包括但不限於。
各種單元、電路或其他組件可描述為「經組態以」執行一或多個任務。在此等上下文中,「經組態以」為大體上意謂「具有」在操作期間執行該或該等任務「之電路」之結構的寬泛敍述。因此,單元/電路/組件可經組態以甚至在單元/電路/組件當前未接通時執行任務。大體而言,形成對應於「經組態以」之結構的電路可包括硬體電路。相似地,出於描述方便起見,各種單元/電路/組件可經描述為執行一或多個任務。此等描述應解釋為包括片語「經組態以」。敍述經組態以執行一或多個任務之單元/電路/組件明確地意欲不援引35 U.S.C.§ 112(f)之對彼單元/電路/組件之解釋。
本發明描述用於處理區塊處理管線中之數位視訊圖框之方法及裝置的各種實施例。區塊處理方法及裝置之實施例大體上在本文中在視訊處理之上下文中予以描述,其中根據元素區塊(例如,16×16、32×32或64×64像素區塊)來再分並處理輸入視訊圖框。本文中描述包括區塊處理管線且可實施區塊處理方法及裝置中之一或多者的實例H.264視訊編碼器之實施例。H.264視訊編碼器將輸入視訊圖框自輸入格式轉換成如H.264/AVC標準(H.264推薦)中描述之H.264/進階視訊寫碼(AVC)格式。圖22說明實例H.264視訊編碼器之實例區塊處理管線,且圖23說明包括區塊處理管線之實例H.264視訊編碼器。然而,區塊處理方法及裝置之實施例可用於其他視訊編碼格式之編碼器中,例如,用於將輸入視訊圖框自輸入格式轉換成如HEVC(高效率視訊編碼)標準中所描述的HEVC格式之HEVC視訊編碼器之區塊處理管線中。HEVC標準係由ITU-T在名為「ITU-T Recommendation H.265:High Efficiency Video Encoding」之文件中發佈。可使用區塊處理方法及裝置之實施例的其他視訊編碼器可包括(但不限於)H.263、MPEG-2、MPEG-4及JPEG-2000視訊編碼器。然而,應注意,區塊處理方法及裝置之實施例可用於任何區塊處理管線中,包括(但不限於)經實施於各種其他視訊編碼器及/或解碼器(其可被稱作編解碼器)中之區塊處理管線,其中以一格式輸入之數位視訊圖框被編碼或轉換成另一格式。應進一步注意,區塊處理方法及裝置可用於視訊編碼器之軟體及/或硬體實施中。除了視訊編碼器/解碼器以外,本文所描述之區塊處理方法及裝置亦可用於各種其他應用中,其中(例如)在各種影像處理應用中處理靜態數位影像之管線中處理來自視訊圖框或靜態數位影像之區塊。因此,應理解,亦可採取如本文所使用之術語圖框或視訊圖框指代任何數位影像。
如本文所描述之區塊處理方法及裝置之實施例可實施於兩個或 兩個以上並行區塊處理管線中。舉例而言,2個、4個、8個或更多管線可經組態以並行地運行,其中每一管線(例如)在根據如本文所描述之奈特次序處理方法輸入區塊的情況下處理來自輸入視訊圖框之四重列。
區塊處理方法及裝置之實施例大體上在本文中在視訊處理之上下文中予以描述,其中根據圖像元素(被稱作像素或圖素)之區塊來再分並處理輸入圖框,具體言之,被稱作巨集區塊之16×16像素區塊用於(例如)H.264編碼中。然而,實施例可應用於其中處理其他大小及幾何形狀或其他元素之區塊的管線中。舉例而言,HEVC編碼使用被稱作寫碼樹單元(CTU)之區塊,該等區塊可在16×16像素至64×64像素之範圍內變化。在諸如H.264編碼器之一些實施中,輸入至管線之區塊可被稱作巨集區塊,每一巨集區塊包括可在管線之級處單獨處理之兩個或兩個以上區塊或分割區。舉例而言,對於經編碼於YUV(例如,YUV420格式)或YCbCr(例如,YCbCr 4:2:0、4:2:2或4:4:4格式)色彩空間中之輸入視訊圖框,巨集區塊可由可在管線中之級處單獨地處理之色度元素及明度元素之單獨區塊構成。除了根據元素區塊(例如,像素區塊)處理管線中之圖框之應用以外,區塊處理方法及裝置亦可應用於數位影像(例如,視訊圖框或靜態影像)由單元素(例如,單像素)處理之應用中。
區塊處理管線中之色度參考資料儲存
在至少一些實施例中,區塊處理管線可根據基於記憶體系統之區塊請求大小(例如,64位元組)之一或多個巨集區塊圖塊格式儲存及存取來自先前處理之圖框(參考圖框)的明度參考資料及色度參考資料。
圖3說明根據至少一些實施例之高階實例區塊處理管線。區塊處理管線100可自輸入視訊圖框獲得像素區塊,且處理管線之級110處之 每一區塊以產生輸出視訊圖框。在至少一些實施例中,區塊處理管線100可根據列之群組(例如,以各含有四個區塊列之列群組)處理來自輸入圖框之像素區塊。在至少一些實施例中,區塊處理管線100可根據如描述於名為奈特次序處理之章節中之奈特次序來處理區塊。在至少一些實施例中,該等輸入圖框可根據被稱作巨集區塊之16×16像素區塊再分及處理。在至少一些實施例中,巨集區塊可由可在管線100中之級處單獨地處理之色度及明度元素之單獨區塊構成。區塊處理管線100可處理多個輸入視訊圖框以產生輸出視訊流。舉例而言,包括如本文所描述之區塊處理管線之H.264視訊編碼器可將輸入視訊圖框自一輸入格式(例如,編碼於YCbCr色彩空間中之1080p(1920×1080像素,2.1兆像素))轉換成H.264/AVC格式。
管線100之一或多個級110可根據來自一或多個先前經處理之視訊圖框(被稱作參考圖框)的參考資料來處理來自當前視訊圖框之巨集區塊,該等先前經處理之視訊圖框自儲存參考資料之記憶體120系統獲得。舉例而言,在圖3中,級110A擷取用於處理管線100中之巨集區塊之明度分量的明度參考資料,且級110B擷取用於處理管線100中之巨集區塊之色度分量的色度參考資料。管線100之末端處或附近的級110(例如,圖3中之級110C)可將來自當前視訊圖框之經處理之像素巨集區塊儲存至記憶體120系統,以便在處理後續視訊圖框時用作參考資料。在至少一些實施例中,來自圖框之經處理區塊之明度參考資料122及色度參考資料124可作為單獨參考資料儲存至記憶體120系統。
色度參考資料之巨集區塊圖塊格式
在至少一些實施例中,來自已由管線處理之巨集區塊之參考資料根據一或多個圖塊格式儲存至記憶體,當與以掃描次序儲存參考資料相比時,該一或多個圖塊格式可減少自記憶體系統擷取參考資料所需之記憶體存取或將其降至最低。當區塊處理管線將來自正經處理之 當前圖框的參考資料作為參考圖框儲存至記憶體,而非將來自經處理之巨集區塊的參考樣本以跨圖框之循序次序寫入至記憶體時,參考樣本以巨集區塊循序次序儲存至記憶體。將每一巨集區塊樣本集合作為圖塊儲存。在至少一些實施例中,參考資料可以針對明度及色度樣本之圖塊格式單獨地儲存。在至少一些實施例中,色度參考資料可以針對YCbCr 4:2:0、4:2:2或4:4:4格式中之一或多者的圖塊格式儲存。圖6至圖8中說明針對每一色度格式之實例圖塊格式。
在區塊處理管線之至少一些實施例中,當區塊處理管線將來自正經處理之當前圖框的參考資料作為參考圖框儲存至記憶體,而非將來自經處理之巨集區塊的參考樣本以跨圖框之循序次序寫入至記憶體時,參考樣本以巨集區塊循序次序儲存至記憶體。將每一巨集區塊樣本集合作為圖塊儲存。每一圖塊可含有樣本之兩個或兩個以上64位元組區塊,該等區塊在本文中可被稱作記憶體區塊。每一64位元組記憶體區塊包括來自各別巨集區塊之樣本的兩條或兩條以上循序水平線。藉由以圖塊格式而非以掃描次序儲存參考資料,自參考圖框中之給定巨集區塊擷取參考資料可藉由發出在巨集區塊之起始位址處開始之四個64位元組讀取請求而執行。四個讀取中之每一者自給定巨集區塊返回64個位元組之參考資料。因此,相較於在以掃描次序儲存參考資料時將需要之讀取請求,擷取給定巨集區塊需要較少讀取請求,且由於每一讀取僅返回所需要之參考資料,故每一讀取更加有效。
圖4以圖形方式說明根據區塊處理管線之至少一些實施例之用於視訊圖框的記憶體中之巨集區塊圖塊格式。每一圖塊對應於圖框之巨集區塊。圖塊0對應於第一列圖框上之第一個巨集區塊,且圖塊1對應於該列上之圖塊0的右側相鄰巨集區塊。圖框為n個圖塊寬,圖塊n-1對應於第一列圖框之最後一個巨集區塊,圖塊n對應於第二列圖框上之第一個巨集區塊,且圖塊2n對應於第三列圖框上之第一個巨集區 塊。每一圖塊由根據記憶體系統之區塊請求大小的兩個或兩個以上鄰接區塊單元(例如,64位元組區塊)構成。圖塊中之64位元組區塊單元之數目取決於圖塊類型(明度類型或圖5至圖7中說明的色度類型中之一者)。圖塊跨距(tile stride)指定兩個垂直鄰近巨集區塊之間的以位元組為單位之距離,且由64n給定。自基底位址自記憶體線性地讀取,將貫穿第一列讀取圖塊0,接著讀取圖塊1等等,在第二列上之圖塊n處繼續等等,直至讀取對應於圖框之最後一個巨集區塊的圖塊。
圖5至圖7以圖形方式說明根據至少一些實施例之用於色度的實例圖塊格式。全大小色度區塊針對色度格式4:2:0、4:2:2及4:4:4分別為8×8、8×16或16×16像素。然而,每一色度像素具有Cb(藍色差異)及Cr(紅色差異)色度分量。因此,在色度格式中,每一像素由兩個位元組(Cb/Cr)表示。因此,針對色度格式4:2:0、4:2:2及4:4:4之位元組中之圖塊大小分別為16×8、16×16及32×16。如圖5至圖7中所示,Cb及Cr分量可交錯。圖5以圖形方式說明根據至少一些實施例之針對色度4:4:4之圖塊格式。在色度4:4:4圖塊格式中,每一圖塊包括八個16×4之64位元組區塊。區塊0至3包括左側八行色度像素,而區塊4至7包括右側八行色度像素。應注意,在記憶體中,可依序配置區塊0至7。圖6以圖形方式說明根據至少一些實施例之針對色度4:2:2之圖塊格式。如圖6中所示,在色度4:2:2圖塊格式中,每一圖塊包括四個16×4之64位元組區塊。圖7以圖形方式說明根據至少一些實施例之針對色度4:2:0之圖塊格式。如圖7中所示,在色度4:2:0圖塊格式中,每一圖塊包括兩個16×4之64位元組區塊。
雖然主要參考處理16×16位元組巨集區塊之區塊處理管線及支援64個位元組之區塊請求大小的記憶體系統來描述實施例,但實施例可應用於處理其他大小之區塊(例如,如HEVC編碼中所使用之6×16像素至64×64像素寫碼樹單元(CTU))及/或利用具有不同區塊請求大小(例 如,16位元組、32位元組、128位元組、256位元組等)之記憶體系統的管線。
區塊處理管線之色度快取架構
本發明描述用於快取視訊編碼器裝置之區塊處理管線中之色度參考資料的方法及裝置之各種實施例。在至少一些視訊編碼器中,可至少部分地使用來自一或多個先前編碼之圖框(被稱作參考圖框)的像素區塊來編碼來自當前視訊圖框之像素區塊。在至少一些視訊編碼器中,區塊處理管線之一或多個級可判定通過管線之巨集區塊之最佳運動向量的集合,該等最佳運動向量集合經傳遞至管線之後續級以用於執行運動補償及重建構。舉例而言,參看圖22,圖框內及圖框間估計6010及模式決策6020可判定巨集區塊之最佳運動向量,且該等運動向量可藉由各別巨集區塊傳遞至運動補償及重建構6030。在諸如H.264及H.265之許多視訊編碼標準中,由於運動補償而允許各種分割區大小(4×4、8×4、4×8、8×8、16×8、8×16、16×16等)。巨集區塊之運動向量之集合可指示針對巨集區塊之一或多個分割區的一或多個參考圖框中之像素的最佳匹配區域的位置。
在區塊處理管線之至少一些實施例中,可在管線之上游級處存取明度參考資料以判定巨集區塊之最佳運動向量且執行明度之運動補償及重建構,且可在管線之下游級處存取色度參考資料以執行色度之運動補償及重建構。舉例而言,參看圖22,圖框內及圖框間估計6010及模式決策6020可根據明度參考資料判定巨集區塊之最佳運動向量,且該等運動向量可傳遞至運動補償及重建構6030,其使用該等運動向量以自參考圖框擷取所指示像素資料。運動補償及重建構6030可再分成在管線之一或多個級處執行之明度運動補償及重建構,及在管線之一或多個後續或下游級處執行的色度運動補償及重建構。明度運動補償及重建構級可根據運動向量存取明度參考資料,且色度運動補償及 重建構級可根據運動向量存取色度參考資料。在至少一些實施例中,可在兩個級中執行色度運動補償及重建構。在第一級中,基於輸入巨集區塊類型、運動向量及參考圖框索引而自記憶體讀取框間預測所需要之色度參考區塊(被稱作記憶體區塊)。接著應用子像素內插及加權預測以產生預測巨集區塊。在第二級中,可執行色度框內預測及色度框內/框間正變換及量化(FTQ)及/或逆變換及量化(ITQ)。在至少一些實施例中,色度運動補償組件執行第一級,而色度重建構組件執行第二級。此情形允許一個額外管線級負載色度參考資料。由於未在圖框內及圖框間估計6010處之運動估計期間搜尋色度參考像素,所以可自外部(至管線)記憶體讀取色度參考資料,且因此可具有大延時。
在管線之級處在按需基礎上自外部記憶體存取參考資料可導致管線中之延遲或停止,此係因為外部記憶體存取(例如,DMA讀取)可具有大延時,且由於外部記憶體可與其他處理程序或組件共用而可為不可預測的。因此,區塊處理管線之實施例經描述為包括本機(管線內部)色度快取記憶體,可在巨集區塊到達色度運動補償及重建構級之前且因此在色度運動補償及重建構級存取用於巨集區塊之色度參考資料之前將用於巨集區塊之色度參考資料擷取至該本機色度快取記憶體中。在一些實施例中,例如,對於給定巨集區塊之所需色度參考資料之讀取可在明度運動補償及重建構之第一級處或之前發出。在明度運動補償及重建構執行於兩個級上之實施例中,此情形針對待自外部記憶體讀取至本機色度快取記憶體中之色度參考資料給出至少兩個管線循環。
圖16為根據至少一些實施例之用於預取及快取色度快取記憶體中之色度參考資料的方法之高階流程圖。圖16之方法可藉由可延伸超過區塊處理管線之兩個或兩個以上級的色度快取邏輯實施。如1600處所指示,可針對當前巨集區塊接收一或多個運動向量。如1602處所指 示,可根據運動向量判定色度快取命中及遺漏。在至少一些實施例中,針對每一巨集區塊運動向量產生一或多個參考運動向量,每一參考運動向量指示含有巨集區塊運動向量所需之色度像素區域之至少一部分的參考資料中之記憶體區塊。參考運動向量可用以檢查快取標記之集合以判定命中及遺漏。如1604處所指示,可根據色度快取替換原則判定針對快取遺漏之色度快取記憶體中之快取區塊的位置。如1606處所指示,可針對快取遺漏發出讀取請求以將參考資料之指定記憶體區塊預取至在經判定之快取位置處的快取區塊中。參考運動向量可用作參考資料之記憶體區塊的讀取位址。如1608處所指示,可儲存用於快取遺漏之參考運動向量作為用於各別快取區塊之快取標記。在至少一些實施例中,各別快取區塊之狀態可經標示為待決。當記憶體區塊經讀取至快取區塊中時,快取區塊的狀態可變為就緒。在管線之自快取記憶體存取參考資料之下游級處,可檢查在該級之給定巨集區塊之快取區塊的狀態以判定是否已擷取各別記憶體區塊。以下論述中更詳細地描述圖16之元素。
圖8說明根據至少一些實施例之使用色度參考資料882之色度快取記憶體830的高階實例區塊處理管線800。在視訊編碼區塊處理管線800中,來自先前已在管線800中處理之一或多個圖框之色度參考資料882可儲存至在管線800外部之記憶體880,例如,如圖3中所說明。在至少一些實施例中,管線800可包括藉由色度快取單元、模組或引擎所實施之色度快取邏輯管理的色度快取830記憶體,色度參考資料882之部分可自記憶體880讀取至該色度快取830記憶體以用於管線800之一或多個級810處之本機存取。色度快取記憶體830可(例如)在諸如SRAM(靜態隨機存取記憶體)之本機(至管線)記憶體中實施。如圖8中所示,對於通過管線800之給定巨集區塊之色度參考資料的請求可在需要色度參考資料之級(級810B)前的一或多個級處(例如,在級810A 處)起始,以提供時間(一或多個管線循環)以在級810B根據自色度快取記憶體830存取之色度參考資料處理給定巨集區塊前,將所需色度參考資料自記憶體880讀取至色度快取記憶體830中。舉例而言,級810A可為管線800之明度補償及重建構組件的第一級,且級810B可為管線800之色度補償及重建構組件的第一級。
在至少一些實施例中,色度快取邏輯可實施替換原則,其中色度參考資料在色度快取記憶體830中快取達若干管線循環,以使得快取記憶體830中之色度參考資料可再用於管線800中即將到來或附近之巨集區塊。色度參考資料可重疊管線處理中之附近的至少一些巨集區塊。舉例而言,在至少一些實施例中,可根據諸如使用可提供用於通過管線800之巨集區塊之參考資料之時間局部性的列群組之奈特次序處理方法之一方法,將巨集區塊輸入至區塊處理管線800。
在至少一些實施例中,可針對每一巨集區塊之命中及遺漏檢查色度快取記憶體830,且僅需要擷取之資料(亦即,遺漏)可自記憶體882擷取至根據替換原則判定之色度快取記憶體830位置中。在至少一些實施例中,根據替換原則將色度參考資料擷取至已過期的快取位置中。含有用於在管線800中但尚未經由級810B(例如,色度運動補償)處理之巨集區塊之色度參考資料的快取位置經判定為「不接觸」位置並由替換原則保護。在替換原則中,將含有用於已經由級810B(色度運動補償)處理之巨集區塊之色度參考資料的快取位置之指示放入兩個或兩個以上老化貯體中之第一者(「最新」貯體)中,且在若干管線循環內沿著該等老化貯體推送該等指示。若可能,則可自最後(最舊的)老化貯體判定快取遺漏所需之快取位置,且若不可能,則自下一最舊的貯體判定,等等。
在至少一些實施例中,色度參考資料882可根據如圖4至圖7中所說明之巨集區塊圖塊格式儲存於外部記憶體880中,每一圖塊取決於 如圖5至圖7中所說明之色度格式而包括兩個或兩個以上記憶體區塊(例如,16×4之64位元組記憶體區塊)。色度快取記憶體830可包括N個(例如,512個)快取區塊(例如,64位元組快取區塊)以用於快取自外部記憶體880中之圖塊擷取之色度像素資料的記憶體區塊。色度快取記憶體830可為全向關聯快取記憶體;亦即,色度像素之記憶體區塊可經快取至快取記憶體830中之任何可用快取區塊位置。色度快取邏輯可維持與快取記憶體830中之N個快取區塊成一對一對應的N個快取標記之集合。關於可經儲存作為色度快取標記之實例參考運動向量,參見圖10。關於具有快取標記之實例色度快取記憶體,參見圖14。
在級810A處發出之色度資料請求(例如,DMA讀取請求)可指定待讀取至色度快取記憶體830之特定快取區塊中之色度參考資料882中的特定記憶體區塊。在至少一些實施例中,可基於巨集區塊之藉由管線800之上游級判定及自該上游級(例如,自如圖22中所說明之圖框內及圖框間估計6010及模式決策6020級)接收之運動向量集合來判定色度參考資料882中的記憶體區塊,該等記憶體區塊之請求在級810A處針對給定巨集區塊發出。在至少一些實施例中,對於自上游級獲得之每一巨集區塊運動向量,色度快取邏輯可產生相對於參考圖框之一個、兩個或更多個運動向量之集合,例如,如圖11中所說明。此等運動向量中之每一者指示記憶體880中之色度參考資料之記憶體區塊的位置,如圖3至圖7中所說明。在至少一些實施例中,此等運動向量中之每一者為或表示記憶體880中用於色度參考資料之各別記憶體區塊的DMA讀取位址。
在至少一些實施例中,用以將色度參考資料之記憶體區塊自記憶體880預取至色度快取記憶體830之快取區塊中之運動向量(例如,DMA讀取位址)可用作快取區塊的快取標記。對於每一所產生之運動向量,色度快取邏輯檢查快取標記以判定色度快取記憶體830中之命 中及遺漏。對於每一快取遺漏,可根據替換原則判定色度快取位置,並可發出DMA讀取請求(使用各別運動向量)至記憶體882以將色度參考資料之各別記憶體區塊自記憶體882讀取至經判定之色度快取記憶體830位置中。用以將色度參考資料之記憶體區塊預取至經判定之色度快取區塊中之運動向量經儲存為經判定之色度快取區塊的快取標記。因此,為了檢查巨集區塊之色度快取命中及遺漏,色度快取邏輯僅需要將巨集區塊之運動向量與現有快取標記進行比較,且不必進行昂貴的記憶體位址轉譯。
圖9更詳細地說明根據至少一些實施例之實例視訊編碼區塊處理管線900中之色度快取記憶體930及色度快取邏輯920。作為區塊處理管線900之非限制性實例,參看圖22,在一些實施例中,級910A可為模式決策6020級,級910B及910C可為明度運動補償及重建構級,且級910D及910E可為色度運動補償及重建構級。每一級910可包括實施各別級910之功能性的一或多個硬體及/或軟體組件912。圖21A至圖21C說明可在區塊處理管線900之級910處使用之實例管線處理單元。儘管未在圖9中展示,但每一級910可包括一或多個雙緩衝式記憶體單元,其允許級910之管線組件912自記憶體讀取及處理用於當前巨集區塊之資料,而用於下一巨集區塊之資料正自先前級910寫入至記憶體單元。
來自先前已在管線900中處理之一或多個圖框的色度參考資料982可儲存至在管線900外部之記憶體980,例如,如圖3中所說明。在至少一些實施例中,可實施色度快取930記憶體,可在管線之上游級910B處將對應於在管線900中正經處理之巨集區塊之運動向量的色度參考資料982之部分自記憶體980預取至該色度快取930記憶體,以用於在管線900之下游級910D處之存取。在至少一些實施例中,色度快取記憶體930可由區塊處理管線900之色度快取邏輯920管理。色度快 取邏輯920可延伸超過管線之多個級910(例如,如圖9中所示之三個級910B至910D),且可以硬體、軟體或其組合實施。色度快取邏輯920可由一或多個色度快取單元、模組或引擎實施。圖21A及圖21B說明可實施管線900中之色度快取邏輯920之實例處理單元。如圖9中所示,對於通過管線之給定巨集區塊之運動向量的擷取(例如,DMA讀取請求)可在管線900之級910D處之存取之前的兩個級處經由級910B處之色度快取邏輯920起始,以提供多個管線循環以在級910D處理各別巨集區塊前,將各別記憶體區塊自記憶體980預取至色度快取記憶體930中。
在至少一些實施例中,色度參考資料982可根據如圖4至圖7中所說明之巨集區塊圖塊格式儲存於外部記憶體980中,每一圖塊取決於如圖5至圖7中所說明之色度格式而包括兩個或兩個以上記憶體區塊。在至少一些實施例中,色度快取記憶體930可包括N個快取區塊(例如,64位元組快取區塊),色度參考資料之記憶體區塊可自記憶體980預取至該N個快取區塊中。在至少一些實施例中,色度快取記憶體930可為全向關聯快取記憶體;亦即,自記憶體980讀取之色度像素之記憶體區塊可經快取至快取記憶體930中之任何可用快取區塊。在至少一些實施例中,在快取標記932與色度快取記憶體930中之快取區塊之間具有一對一對應的情況下,快取標記932可用以引用色度快取記憶體930中之快取區塊。
在至少一些實施例中,快取標記932可由各別運動向量定義。當在色度快取邏輯之第一級(圖9中之級910B)處處理當前巨集區塊之運動向量時,可根據運動向量檢查快取標記932而無需位址轉譯以判定快取記憶體930中是否存在對應於運動向量的快取區塊。自運動向量導出一或多個參考運動向量,且根據參考運動向量檢查快取命中及遺漏的快取標記932。在快取遺漏時,根據替換原則選擇快取記憶體930 中之快取區塊,且發出使用各別參考運動向量之預取請求(例如,DMA讀取請求)至記憶體980以便將參考資料的記憶體區塊讀取至經選擇之快取區塊中。參考運動向量經儲存為用於經選擇之快取區塊的快取標記932。關於可經儲存為色度快取標記之實例參考運動向量,參見圖10。關於具有快取標記之實例色度快取記憶體,參見圖14。
在至少一些實施例中,色度快取邏輯920亦可維持快取記憶體930中之快取區塊的狀態。當針對經選擇之快取區塊(例如,在圖9中之級910B處)發出預取請求時,該經選擇之快取區塊的狀態可經標示為待決。當記憶體區塊經讀取至快取區塊中時,快取區塊的狀態可變為就緒。在管線之自快取記憶體存取參考資料之下游級處(例如,在圖9中之級910D處),可檢查用於在該級處之給定巨集區塊之快取區塊的狀態以判定是否已擷取各別記憶體區塊。
在至少一些實施例中,在級910B處,色度快取邏輯920可自管線900之上游級910A(例如,自如參考圖22描述之模式決策6020級)獲得給定巨集區塊的最佳運動向量之集合。每一運動向量指示針對當前處於管線之級910B或在管線之級910B處接收之巨集區塊的各別分割區之匹配的像素區域之參考圖框中之位置。該等運動向量可指示相對於巨集區塊之匹配區域的位置(例如,如圖11中所說明),並可被稱作巨集區塊運動向量。應注意,匹配區域可包含於一個記憶體區塊內(如圖5至圖7中所說明)、可延伸至圖塊內之兩個或兩個以上記憶體區塊中(如圖5至圖7中所說明),或可延伸至跨越兩個或四個圖塊之記憶體區塊中(如圖4中所說明)。圖12展示跨越多個(四個)色度4:4:4圖塊中之多個(六個)記憶體區塊延伸之像素區域的實例。因此,對於給定運動向量,可需要將參考圖框中之一個、兩個或更多記憶體區塊自記憶體980預取至色度快取記憶體930中。
在至少一些實施例中,對於自上游級910A獲得之每一運動向 量,色度快取邏輯920可產生相對於參考圖框之位置(例如,左上角)的一個、兩個或更多運動向量之集合,例如,如圖11中所說明。出於清晰及方便起見,自前一級接收之運動向量在本文中可被稱作管線運動向量(PMV),且針對該等PMV產生之運動向量在本文中可被稱作參考運動向量(RMV)。每一RMV指示記憶體中之色度參考資料之記憶體區塊的位置,如圖3至圖7中所說明。在至少一些實施例中,每一RMV為或表示記憶體980中用於色度參考資料之各別記憶體區塊的DMA讀取位址。
在至少一些實施例中,經預取至色度快取記憶體930中之快取區塊中的色度參考資料之記憶體區塊的RMV可用作各別快取區塊之快取標記。對於每一所產生之RMV,色度快取邏輯920檢查快取標記以判定色度快取記憶體930中之命中及遺漏。對於每一快取遺漏,可根據替換原則判定色度快取區塊,且可發出DMA讀取請求(使用RMV)至記憶體980以將色度參考資料之各別記憶體區塊自記憶體980讀取至經判定之色度快取區塊中。RMV經儲存為經判定之色度快取區塊的快取標記932。因此,為了檢查快取命中及遺漏,色度快取邏輯930僅需比較RMV,且不必進行昂貴的記憶體位址轉譯。
可將在級910B處接收之針對巨集區塊的PMV與巨集區塊資料一起沿管線900傳遞通過級910C至級910D。在一些實施例中,在級910D處,PMV可經傳遞至該級處之色度快取邏輯920且由色度快取邏輯920使用,以存取該級處之管線組件912D所需之經預取的色度參考資料,以用於處理來自色度快取記憶體930之各別巨集區塊。在至少一些實施例中,色度快取邏輯920可檢查用於級910D處之各別巨集區塊之快取區塊的狀態,以判定是否已成功地擷取各別記憶體區塊。通常,用於巨集區塊之快取區塊將就緒,係因為預取上游級(例如,級910B)處之參考資料允許多個管線循環自外部記憶體980讀取參考資 料。然而,若快取區塊中之任一者為待決或未就緒的,則可停止管線900以等待各別記憶體區塊自記憶體980擷取至快取記憶體930中。
色度快取替換原則
在色度快取替換原則之至少一些實施例中,色度快取邏輯920可(例如)使用N位元暫存器940之集合追蹤對應於在管線900中之各別級910處之巨集區塊的色度快取區塊。當針對色度快取邏輯920之第一級910B處之巨集區塊判定快取區塊時,可設定第一暫存器940中之對應位元。圖15A展示具有針對實例巨集區塊設定之實例位元的實例暫存器。將暫存器940之內容與巨集區塊一起向下傳遞通過管線900之級910。在級910D(例如,色度運動補償級)前之級910B及910C及對應的暫存器940可被稱作執行中級910及暫存器940;色度運動補償級及對應的暫存器940可被稱作使用中級及暫存器940。在至少一些實施例中,執行中及使用中暫存器940之邏輯運算(例如,按位元OR)向色度快取邏輯920指示色度快取記憶體中之所有當前「不接觸」快取區塊,例如,如圖15B中所說明。當級910B處之色度快取邏輯920選擇色度快取記憶體930中之快取區塊以供管線900中待處理之下一巨集區塊的運動向量再用時,並不選擇由執行中及使用中暫存器940所指示之當前「不接觸」快取區塊。
在色度快取替換原則之至少一些實施例中,一M個暫存器之額外集合可用作自其選擇替換候選者之老化貯體950,例如,如圖15C中所說明。舉例而言,在一些實施例中,可使用四個貯體(貯體0至3)。色度快取邏輯920可使用老化貯體950儲存當前並不在「不接觸」類別中之快取區塊的指示。在至少一些實施例中,當與級910D(例如,色度運動補償級)處之巨集區塊有關係時,可將使用中暫存器之並不亦在執行中暫存器中之內容推送至第一老化貯體950中。邏輯運算可用於以管線循環(在一些實施例中,每四個循環)推送可用快取區塊之指 示通過老化貯體950,其中第一貯體(貯體0)根據執行中及使用中暫存器940之內容填充,貯體1根據貯體0之內容填充,等等。當級910B處之色度快取邏輯920自色度快取遺漏將擷取至之色度快取930選擇替換候選快取區塊時,首先檢查最後老化貯體(貯體3),接著檢查下一貯體(貯體2),等等。在至少一些實施例中,每當自老化貯體950選取替換候選者時,清除其在貯體950中之對應位元。在至少一些實施例中,可按需要新增更多老化貯體。
在至少一些實施例中,如圖9中所說明之色度快取架構允許根據由該架構致能之確證檢查在管線900之一或多個級910處之色度快取記憶體930的狀態。邏輯運算可用於檢查此等確證,且色度快取邏輯920可經組態以基於結果採取合適行動。舉例而言,可僅在一個老化貯體950中指示色度快取記憶體930中之每一快取區塊。經指示為不接觸快取區塊(例如,根據執行中及使用中暫存器940之按位元OR)之快取區塊不應在任何老化貯體950中。在至少一些實施例中,所有老化貯體950加藉由執行中及使用中暫存器940指示之不接觸快取區塊的邏輯總和應指示色度快取記憶體930中之所有快取區塊的整個集合。
將運動向量轉換為DMA讀取位址
圖10至圖13B以圖形方式說明根據至少一些實施例之用於將相對於在色度快取邏輯920之第一級910B處接收之巨集區塊的運動向量(被稱作管線運動向量(PMV))轉換為相對於參考圖框的運動向量之集合(被稱作參考運動向量(RMV))的方法之實施例,該運動向量之集合可用作DMA讀取位址以自外部記憶體980預取參考資料之記憶體區塊。RMV可用於自記憶體980預取色度參考像素之記憶體區塊,且可經儲存為色度快取記憶體930之快取標記932。因此,不同於其快取標記通常含有虛擬或實體記憶體位址且通常需要昂貴的記憶體位址轉譯以供存取之習知快取記憶體,色度快取記憶體930之快取標記932含有可自 輸入PMV快速建構之RMV。
在至少一些實施例中,色度參考資料982可根據如圖3至圖7中所說明之巨集區塊圖塊格式儲存於外部記憶體980中,每一圖塊取決於如圖5至圖7中所說明之色度格式而包括兩個或兩個以上記憶體區塊。由色度快取邏輯920發出之DMA讀取請求可各自指定儲存於記憶體980中之特定參考圖框中的特定圖塊中之特定記憶體區塊。使用如圖3至圖7中所說明之巨集區塊圖塊格式,擷取至色度快取記憶體930之每一記憶體區塊含有來自最彼此鄰近的像素之Cr/Cb分量。在快取術語中,此使得色度快取記憶體930能夠提供其快取之色度像素之空間局部性。應注意,如本文所描述之替換原則的實施例亦可提供色度參考資料之時間局部性。另外,如圖3至圖7中所說明之巨集區塊圖塊格式允許色度快取邏輯920藉由僅調節DMA讀取請求/快取標記中所使用之位元的數目以定址圖塊內之記憶體區塊而在4:4:4、4:2:2與4:2:0視訊格式之間切換。
圖10說明根據至少一些實施例之可經儲存為色度快取標記之參考運動向量。參考運動向量1000說明可由色度快取邏輯920使用以(例如)經由「讀取」DMA通道請求來自儲存於外部記憶體980中之參考圖框1050的色度像素之記憶體區塊的實例位址格式。參考運動向量1000亦可經儲存為用於色度像素之記憶體區塊經讀取至其中之快取記憶體930中之各別位置(快取區塊)之快取標記932。在至少一些實施例中,參考運動向量1000可包括至少參考圖框數目1002、X位移1004、Y位移1006及記憶體區塊數目1008。
在至少一些實施例中,可使用來自一個、兩個或四個參考圖框之參考資料編碼巨集區塊。因此,在至少一些實施例中,參考運動向量1000可包括用於指示此參考運動向量1000定址參考圖框中之哪一者之參考圖框數目1002欄位。
X位移1004可指示巨集區塊圖塊(MB圖塊1052)自記憶體980中所指示之參考圖框的原點位址(左上方)或基底位址之水平位移。Y位移1006可指示巨集區塊圖塊(MB圖塊1052)自記憶體980中所指示之參考圖框的原點位址(左上方)或基底位址之垂直位移。在一些實施例中,X位移及Y位移可表達為如圖4中所展示之巨集區塊圖塊行及列之數目。
區塊數目1008可用於指定MB圖塊1052內之記憶體區塊。在至少一些實施例中,色度參考資料可根據如圖4至圖7中所說明之巨集區塊圖塊格式儲存於記憶體980中,如圖5至圖7中所說明,每一圖塊取決於色度格式而包括兩個或兩個以上記憶體區塊。因此,如圖10中所展示,區塊數目1008可用於指定4:4:4模式中之圖塊內的八個記憶體區塊(0至7)中之一者、4:2:2模式中之圖塊內的四個記憶體區塊(0至3)中之一者,或4:2:2模式中之圖塊內的兩個記憶體區塊(0至1)中之一者。
在至少一些實施例中,區塊數目1008可為3位元欄位。在4:4:4模式中,三個位元[2:0]用於選擇形成4:4:4色度巨集區塊圖塊的八個記憶體區塊(0至7)中之一者。在4:2:2模式中,僅位元[1:0]用於選擇形成4:2:2色度巨集區塊圖塊的四個記憶體區塊(0至3)中之一者。在4:2:0模式中,僅位元[0]用於選擇形成4:2:0圖塊的兩個記憶體區塊(0至1)中之一者。
圖11說明根據至少一些實施例之相對於巨集區塊且相對於參考圖框之運動向量。參見圖9,在色度快取邏輯920之第一級910B處自上游級910A接收之運動向量可指示參考圖框中相對於當前圖框中之巨集區塊的匹配區域的位置。自先前級接收之運動向量可被稱作管線運動向量(PMV)。對於每一PMV,色度快取邏輯920可產生相對於參考圖框之位置(例如,左上角)的一個、兩個或更多運動向量之集合。針對該等PMV產生之運動向量在本文中可被稱作參考運動向量(RMV)。 每一RMV指示記憶體中之色度參考資料之記憶體區塊的位置,如圖3至圖7及圖10中所說明。在至少一些實施例中,每一RMV為或表示記憶體980中用於色度參考資料之各別記憶體區塊的DMA讀取位址。
圖12說明根據至少一些實施例之針對運動向量之巨集區塊圖塊中的記憶體區塊。圖12使用如圖5中所說明之4:4:4色度格式圖塊作為實例。參看圖9及圖11,在至少一些實施例中,在級910B處,色度快取邏輯920可自管線900之上游級910A(例如,自如參看圖22描述之模式決策6020級)獲得給定巨集區塊的管線向量(PMV)之集合。在色度快取邏輯920之第一級910B處自上游級910A接收之PMV可指示針對當前處於管線之級910B或在管線之級910B處接收之巨集區塊的各別分割區之匹配的像素區域1200之參考圖框中的位置。
應注意,在一些實施例中,針對給定PMV自記憶體980擷取之區域1200可大於各別分割區大小以(例如)允許子像素內插。舉例而言,對於對應於4:4:4色度格式中之4×4巨集區塊分割區之PMV,可擷取9×9像素區域1200(由圖12中之陰影正方形展示),其中4×4匹配區域(由圖12中之虛線正方形展示)經擴展以包括左上方兩個額外像素列及像素行,及右下方三個額外像素列及像素行。應注意,區域1200大小可基於色度格式或其他因素變化。
PMV可指示相對於當前在管線900中處理之輸入圖框中的巨集區塊之匹配區域1200之位置,例如,如圖11中所說明。在至少一些實施例中,如由PMV所指示之像素區域1200之左上角可由色度快取邏輯920使用以判定巨集區塊圖塊及至少含有區域1200之左上方像素的彼圖塊內之記憶體區塊(由像素X位移及像素Y位移指示),且可針對彼圖塊及記憶體區塊產生RMV,例如,如圖13A中所說明。然而,應注意,像素區域1200可包含於巨集區塊圖塊中之一個記憶體區塊內(如圖5至圖7中所說明)、可延伸至圖塊內之兩個或兩個以上記憶體區塊 中(如圖5至圖7中所說明),或可延伸至跨越兩個或四個巨集區塊圖塊之記憶體區塊中(如圖4中所說明)。因此,對於給定的PMV,可需要將參考圖框中之一個、兩個或更多記憶體區塊自記憶體980預取至色度快取記憶體930中。因此,在至少一些實施例中,色度快取邏輯920可針對初始(左上方)圖塊自PMV判定RMV(例如,如圖13A中所說明),且接著按需要自初始RMV導出針對一或多個(至多五個)其他圖塊之RMV(例如,如圖13B中所說明)。
圖12展示跨越多個(四個)色度4:4:4巨集區塊圖塊中之多個(六個)記憶體區塊延伸的像素區域1200之實例。四個巨集區塊圖塊經標記為MB(C#,R#),其中C#及R#代表如圖4中所說明之巨集區塊圖塊行及列數目。含有區域1200之六個記憶體區塊經標記為左上方(TL)、左中(ML)、左下方(BL)、右上方(TR)、右中(MR)及右下方(BR)。在此實例中,TL為MB(C,R),區塊6;ML為MB(C,R),區塊7;左下方為MB(C,R+1),區塊4;TR為MB(C+1,R),區塊2;MR為MB(C+1,R),區塊3;且右下方為MB(C+1,R+1),區塊0。在至少一些實施例中,色度快取邏輯920針對各別參考圖框中之此等記憶體區塊中之每一者判定RMV,針對命中及遺漏檢查快取標記932,且針對每一遺漏向記憶體980發出RMV作為DMA讀取請求,以將色度像素之各別記憶體區塊預取至根據色度快取替換原則判定之色度快取記憶體930中的快取區塊位置中。在至少一些實施例中,為了判定待預取之記憶體區塊之RMV,色度快取邏輯920可針對初始記憶體區塊(在此實例中為TL,MB(C,R),區塊6)自PMV判定RMV(例如,如圖13A中所說明),且接著自初始RMV導出針對其他記憶體區塊之RMV(例如,如圖13B中所說明)。
儘管圖12使用4:4:4色度格式作為實例,但類似方法將適用於其他色度格式,例如,如圖6及圖7中所說明之4:2:2及4:2:0格式。
圖13A說明根據至少一些實施例之自輸入管線運動向量(PMV)導出參考運動向量(RMV)。如圖13A中所展示,輸入PMV之X及Y分量之部分可用於導出在參考圖框中位移的巨集區塊圖塊之X及Y分量、該圖塊內之記憶體區塊數目及該記憶體區塊內之像素。在一些實施例中,像素X及Y分量之最低有效位元(LSB)中之一或多者可指示記憶體區塊內之(左上方)像素位置,一或多個下一位元可指示記憶體區塊,且最高有效位元(MSB)可指示參考圖框內之巨集區塊圖塊。如自PMV導出之巨集區塊圖塊及記憶體區塊數目可用於參考運動向量中,例如,如圖10中所展示之參考運動向量1000。
在一些實施例中,參看圖12,自PMV導出之像素位置可指示針對自PMV導出之記憶體區塊內的像素區域1200之左上角的32個可能像素位置中之一者。此資訊可(例如)用於判定來自何記憶體區塊之何像素在像素區域1200中,且亦可用於判定當不必要擷取全像素區域1200時之最佳化。舉例而言,參看圖12,在針對由虛線正方形指示之4×4分割區大小給定由陰影正方形指示之9×9區域1200的情況下,若X及Y運動向量分量兩者之分數位元不為零,則需要整個9×9區域,且需要擷取所有TL、ML、BL、TR、MR及BR記憶體區塊。然而,若X及Y運動向量分量兩者之分數位元為零,則僅需要由虛線正方形指示之4×4分割區。因此,僅需要擷取ML記憶體區塊。若僅X分量之分數位元為零,則需要4×9區域,且僅需要擷取TL、ML及BL記憶體區塊。若僅Y分量之分數位元為零,則需要9×4區域,且僅需要擷取ML及MR記憶體區塊。
圖13B說明根據至少一些實施例之針對輸入管線運動向量(PMV)產生參考運動向量(RMV)之集合。在至少一些實施例中,可自PMV導出初始RMV(左上方(TL)RMV),例如,如圖13A中所說明。TL RMV包括指示參考圖框中之巨集區塊圖塊之位置的X及Y位移,及指示圖 塊內之特定記憶體區塊之區塊數目,例如,如圖10中所說明。左中(ML)RMV及右上方(TR)RMV可自TL RMV導出。左下方(BL)RMV可自ML RMV導出。右中(MR)RMV可自ML RMV及TR RMV導出。最後,右下方(BR)RMV可自BL RMV及MR RMV導出。
色度快取記憶體實例
圖14以圖形方式說明根據至少一些實施例之實例色度快取記憶體及快取標記。色度快取記憶體1430可包括N個(例如,512個)快取區塊位置以用於快取自外部記憶體中之色度參考圖框擷取的色度像素資料之記憶體區塊。色度快取記憶體1430可為全向關聯快取記憶體;亦即,色度像素之記憶體區塊可經預取及快取至快取記憶體1430中之任何可用快取區塊。色度快取邏輯可維持與快取記憶體1430中之N個快取區塊成一對一對應的N個快取標記1432之集合。
在至少一些實施例中,藉由色度快取邏輯針對巨集區塊之PMV判定之RMV可用作快取標記1432。對於每一所產生之RMV,色度快取邏輯檢查快取標記1432以判定色度快取記憶體1430中之命中及遺漏。對於每一快取遺漏,可根據替換原則判定色度快取記憶體1430位置,並可發出DMA讀取請求(使用各別RMV)至記憶體以將色度參考資料之各別記憶體區塊自記憶體讀取至色度快取記憶體1430中的經判定之快取區塊中。RMV經儲存為用於經判定之快取區塊的快取標記1432。因此,為了檢查快取命中及遺漏,色度快取邏輯1430僅需比較自PMV導出之RMV與儲存於快取標記中之RMV,且不必執行昂貴的記憶體位址轉譯。
在圖14中所展示之實例中,如圖12至圖13B中所說明之針對PMV判定之TL、ML、BL、TR、BR及MR RMV經展示為對應於色度快取記憶體1430中之快取區塊的快取標記1432,在該色度快取記憶體1430處快取來自如圖12中所說明之參考圖框之各別記憶體區塊。
應注意,當針對給定PMV之RMV之命中及遺漏檢查快取標記1432時,在一些狀況下,RMV中之一或多者可在快取標記1432中之命中,而一或多個其他者可為遺漏。舉例而言,此實例中之TL RMV、ML RMV及TR RMV可為命中,而BR RMV及MR RMV可為遺漏。在該情況下,根據替換原則針對BR RMV及MR RMV判定色度快取記憶體1430中之快取區塊,針對BR RMV及MR RMV發出DMA讀取請求以將記憶體區塊(針對BR RMV為MB(C+1,R+1)、區塊0,針對MR RMV為MB(C+1,R)、區塊3)讀取至快取記憶體1430的經判定之快取區塊中,且將BR RMV及MR RMV儲存為用於經判定之快取區塊之各別快取標記1432。
替換原則細節
圖15A至圖15C以圖形方式說明根據至少一些實施例之替換原則的態樣。此等圖式之論述參考圖17。
圖15A說明根據至少一些實施例之可用於在替換原則中追蹤快取區塊的暫存器。在至少一些實施例中,色度快取邏輯可使用N位元暫存器1540之集合追蹤用於管線中之各別級處之巨集區塊的色度快取位置。如圖17之1700所指示,色度快取邏輯可判定當前巨集區塊之色度快取位置,如先前所描述。當藉由色度快取邏輯判定巨集區塊之快取位置時,可設定第一暫存器1540中之對應位元。如圖17之1702所指示,將巨集區塊之快取位置傳遞通過執行中暫存器至使用中暫存器。如圖15B中所展示,將第一暫存器1540之內容與巨集區塊一起向下傳遞管線之級處之一或多個其他暫存器1540。在自快取記憶體存取色度資料之級(例如,色度運動補償級)前的級處之暫存器可被稱作執行中暫存器1540A;自快取記憶體存取色度資料之級(例如,色度運動補償級)處的暫存器可被稱作使用中暫存器1540B。
圖15A展示執行中或使用中暫存器1540之內容的一部分作為實 例,該執行中或使用中暫存器1540對應於如圖12至圖13B中所說明之針對PMV判定的及如圖14中所說明之儲存於快取記憶體1430中的TL RMV、ML RMV、BL RMV、TR RMV、BR RMV及MR RMV。如此實例中所展示,暫存器1540中對應於如圖14中所展示之快取標記1432/快取記憶體1430位置的位元經設定以指示各別快取區塊儲存待用於處理各別巨集區塊之參考像素的記憶體區塊。應注意,亦可在暫存器1540中設定對應於針對巨集區塊之其他PMV判定的RMV之其他位元。亦應注意,暫存器1540中之經設定位元指示為命中之快取位置及為遺漏之快取位置兩者。
圖15B進一步說明根據至少一些實施例之自執行中暫存器1540A及使用中暫存器1540B判定「不接觸」快取區塊。在至少一些實施例中,執行中暫存器1540A及使用中暫存器1540B之邏輯運算(例如,按位元OR)向色度快取邏輯指示色度快取記憶體中之所有當前「不接觸」快取區塊。在至少一些實施例中,在圖17之元素1700處,當色度快取邏輯選擇色度快取記憶體中之快取區塊以供管線中之下一巨集區塊的運動向量再用時,並不選擇由應用於執行中暫存器1540A及使用中暫存器1540B之邏輯運算所指示的當前「不接觸」快取區塊。
圖15C說明根據至少一些實施例之老化貯體。在至少一些實施例中,M個暫存器之額外集合可用作自其選擇替換候選者的老化貯體1550。舉例而言,如此實例中所展示,可使用四個貯體(貯體0至3)。色度快取邏輯可使用老化貯體1550儲存當前不在如參考圖15B所描述之「不接觸」類別中之快取區塊的指示。
如圖17之1704所指示,可在一級(例如,色度運動補償級)處根據來自使用中暫存器1540B中所指示之快取記憶體的色度參考資料處理巨集區塊。在至少一些實施例中,當完成處理自色度快取記憶體存取巨集區塊之色度參考資料之級(例如,色度運動補償級)處的巨集區塊 時,可將使用中暫存器1540B之並不亦在執行中暫存器1540A中的內容推送至第一老化貯體1550(例如,貯體0)中。邏輯運算可用於以管線循環(在一些實施例中,每四個循環)推送可用快取區塊之指示通過老化貯體1550,其中第一貯體(貯體0)用使用中暫存器1540B之並不亦在執行中暫存器1540A中的內容填充,貯體1根據貯體0之內容填充,等等。
在至少一些實施例中,區塊處理管線可根據列群組(例如,以各自含有四個巨集區塊列之列群組)處理來自輸入圖框(例如,巨集區塊)之像素區塊。作為非限制性實例,在一些實施例中,區塊處理管線可如名為奈特次序處理之章節中所描述處理四重列中之巨集區塊。在如圖17中所說明之替換原則的一些實施例中,可根據列群組將可用快取區塊之指示推送通過老化貯體1550。在圖17之1706處,若已完成處理之巨集區塊不在列群組之最後列中,則如1710處所指示,將來自使用中暫存器之亦不處於執行中的快取位置放入貯體0中;不改變其他老化貯體1550(此實例中為貯體1至3)。否則,在1706,若已完成處理之巨集區塊在列群組之最後列中,則如1720處所指示,將貯體2注入至貯體3中,且如1722處所指示,將貯體1注入至貯體2中。最後,如1724處所指示,將來自使用在中暫存器1540B之並不亦在執行中暫存器1540A的快取位置及貯體0之內容放入貯體1中。應注意,當貯體之內容老化至另一貯體中時,清除該貯體中之位元。
在至少一些實施例中,當色度快取邏輯自色度快取遺漏將擷取至之色度快取記憶體選擇替換候選快取區塊時,首先檢查最後老化貯體(貯體3),接著檢查下一貯體(貯體2),等等。在至少一些實施例中,每當自老化貯體1550選取替換候選者時,清除其在貯體1550中之對應位元。
儘管圖8至圖17大體上係關於提供用於快取視訊編碼器區塊處理 管線中之色度參考資料的快取記憶體、快取邏輯及快取替換原則,但是應注意,如本文所描述之各種快取方法及裝置的實施例可用於視訊編碼器區塊處理管線中以快取除色度參考資料外之其他資料,或用於其中可局部快取來自外部記憶體之資料之各種其他裝置、應用或環境中。
10位元支援
參看圖9,儘管圖中未展示,但除8位元記憶體格式之外,區塊處理管線900之一些實施例還可支援10位元記憶體格式。舉例而言,區塊處理管線900之一些實施例可在H.265高效視訊編碼(HEVC)格式視訊編碼中實施對10位元處理之支援。在此等實施例中,參考圖9及其他圖式所描述之色度快取架構可經調適以支援色度參考資料之10位元記憶體區塊。舉例而言,在一項實施例中,色度快取架構可將色度快取記憶體930分割成8位元部分及2位元部分。當處理8位元資料時,僅使用8位元部分。當處理10位元資料時,使用8位元部分,且亦啟用2位元部分。在處理8位元或10位元色度參考資料時,如上文所描述之快取標記932、色度快取替換原則及色度快取架構之其他態樣可實質上相同地操作。
奈特次序處理
描述如下區塊處理方法及裝置之實施例:其中根據在本文中被稱作「奈特次序」之次序而將區塊輸入至管線中且處理管線中之該等區塊,而非根據習知方法中之掃描次序來處理管線中之區塊。奈特次序係參考西洋棋奈特件之移動,其中奈特向下移動一列且向左移動兩行。然而,應注意,如本文所使用之「奈特次序」更通常涵蓋一個列向下之移動及p個行向左之移動,其中p可為2但未必為2。
奈特次序處理方法可提供管線中之鄰近區塊之間的間隔(一或多個級),此(例如)促進資料自處理第一區塊之管線之下游級回饋至處理 第二區塊(其取決於來自第一區塊之資料)之管線之上游級。區塊處理管線之一或多個級可在處理給定區塊時需要來自一或多個其他相鄰區塊之資訊。圖18展示可需要資訊的當前區塊(m,n)之相鄰者--左側(m-1,n);頂部(m,n-1);左上方(m-1,n-1);右上方(m+1,n-1);及右右上方(m+2,n-1)。對來自相鄰區塊之資訊之此等要求可被稱作相依性。舉例而言,參看圖18,可需要來自區塊(m,n)之左側相鄰者之資訊以對該區塊執行特定操作。在奈特次序處理方法中,輸入至管線之下一區塊為區塊(m-2,n+1),而非緊跟在區塊(m,n)之後將區塊(m+1,n)輸入至管線中。以奈特次序而非掃描次序將區塊輸入至管線中提供該管線中之一列上之鄰近區塊之間的間隔(例如,一或多個級)。
在奈特次序處理方法之至少一些實施例中,可將輸入圖框中之區塊之列劃分成四個列之集合,其在本文中被稱作四重列,其中奈特次序處理方法受四重列邊界約束。參看圖18,當使用運用奈特次序處理之四重列邊界時,區塊(m-1,n)將在將區塊(m,n)輸入至管線時之下游四個級,且區塊(m,n)將在將區塊(m+1,n)輸入至管線時之下游四個級。因此,在一列上鄰近之區塊將在管線中隔開四個級。因此,在對取決於左側相鄰資訊之區塊執行操作之級處,更有可能易於以比在以掃描次序處理區塊將具有的延時少的延時可獲得用於左側相鄰者之資訊。除了取決於左側相鄰者,區塊處理方法之一或多個操作可取決於來自先前(或上方)列之相鄰區塊,諸如如圖18所示之頂部相鄰區塊、左上方相鄰區塊、右上方相鄰區塊,及右右上方相鄰區塊。具有四重列約束之奈特次序處理方法提供相鄰者資訊之位置,其可被利用以提供在相對小緩衝器中之每一級處之此相鄰者資料之本端快取。
在至少一些實施例中,用於使用四重列約束根據奈特次序處理方法來判定供輸入至管線之下一區塊之基本演算法係如下:若不在四重列之底部列上: 則下一區塊為向左兩行,向下一列(-2,+1)。
否則,在四重列之底部列處:下一區塊為向右七行,向上三列(+7,-3)。
然而,亦可用除了向左兩個區塊、向下一個區塊(-2,+1)以外的其他間隔來實施奈特次序處理方法。舉例而言,代替向左兩個區塊及向下一個區塊,該方法可經實施以向左三個區塊且向下一個區塊以獲得下一區塊。作為另一實例,該方法可經實施以向左一個區塊且向下一個區塊(-1,+1)以獲得下一區塊。另外,可用除了四重列(四列)約束以外的其他列約束來實施奈特次序處理方法。亦即,可在實施例中使用至少兩個列之列群組以約束奈特次序處理方法。假定r作為用以約束奈特次序處理方法之列的數目,可將演算法一般化為:如不在列群組之底部列上:則下一區塊為向左p行,向下一列(-p,+1)。
否則,在列群組之底部列處:下一區塊向右q行,向上(r-1)列(+q,-(r-1))。
改變p之值將影響q之值,將不影響來自管線中之一列之鄰近區塊之間的間隔,但將影響給定區塊與其其他相鄰區塊(例如,其左上相鄰者、頂部相鄰者及右上方相鄰者)之間的間隔。特定言之,應注意,使用間隔(-1,+1)將引起在管線之鄰近級處同時地處理一區塊及其對角(右上方)相鄰區塊。因此,可使用向左至少兩個區塊之間隔使得不在區塊處理管線之鄰近級處同時地處理對角鄰近區塊。改變r之值將影響q之值,將影響來自管線中之一列之鄰近區塊之間的間隔,且將影響區塊與其其他相鄰區塊(例如,其左上方相鄰者、頂部相鄰者及右上方相鄰者)之間的間隔。
用於判定下一區塊之上述演算法可在初始區塊處開始。在到達一四重列之末端(其接著為另一四重列)時,演算法跳至下一四重列之 第一區塊且接著在該四重列與該下一四重列之間交越歷時幾個循環,從而引起來自該四重列之末端的一些區塊與來自該下一四重列之起點之一些區塊交錯。亦即,奈特次序處理方法將四重列視為好像其端對端地配置。為了避免演算法之複雜化且維持管線中之區塊之一致間隔,至少一些實施例可用無效區塊填補第一四重列之起點及最後四重列之末端。無效區塊可經定義為在圖框之邊界外部且經輸入至管線但不含有有效圖框資料且因此在級處不被處理的區塊。因此,用於判定下一區塊之演算法可在初始區塊處開始,該初始區塊可為第一四重列之頂部列中之第一區塊或第一四重列之頂部列中之第一區塊左側的無效區塊,經由所有四重列繼續,且在最後四重列之末端繼續直至最後四重列之最後區塊已經輸入至管線為止。在圖框之起點及末端處在管線中將存在氣泡,但來自管線中之圖框之有效區塊之間隔將始終保持一致。在一些實施例中,作為對用無效區塊填補視訊圖框之最後四重列之末端之替代例,可使視訊圖框之最後四重列與區塊處理管線中之待處理之下一視訊圖框之第一列重疊。
圖19A及圖19B以圖形方式說明根據至少一些實施例之奈特次序處理方法。為簡單起見,此等圖使用劃分成144個16×16像素區塊之實例192×192像素圖框,其具有區塊之12個列及12個行。然而,應注意,奈特次序處理方法可應用於任何尺寸之輸入視訊圖框。在圖19A中,實例圖框劃分成區塊之若干列及若干行。該等區塊列分割成三個四重列,每一四重列包括四個列。在左側上用無效區塊填補第一四重列之最後三個列,且在右側上用無效區塊填補最後(第三)四重列之前三個列。在此實例中,區塊中之數字表示根據奈特次序處理方法將區塊輸入至區塊處理管線之次序,其以區塊0(第一四重列之頂部列中之第一區塊)開始。將區塊0輸入至管線之第一級,且當第一級對於另一區塊就緒時,該方法藉由向左兩行、向下一列以獲得供輸入之下一 區塊(圖19A中之區塊1)而繼續進行。重複此型樣直至到達四重列之底部為止。在四重列之底部處,該方法向右七行、向上三列以獲得下一區塊。此情形繼續直至圖框中之所有區塊(以及圖19A所展示之所有無效區塊)皆被輸入至管線中為止。當到達四重列之末端時,若在該四重列之後存在另一四重列,則輸入演算法繼續進行至下一四重列之起點。在此實例中,在輸入區塊47之後,方法繼續進行至區塊48(第二四重列之頂部列中之第一區塊)。如由自區塊47至區塊44右側之被標示為48的虛線矩形之虛線箭頭所展示,第二四重列之頂部列之第一區塊(區塊48)被視為緊接在第一四重列之頂部列之最後區塊(區塊44)右側,且因此自區塊47藉由向右七行、向上三列而到達。亦即,奈特次序處理方法將四重列視為好像其端對端地配置,其中在每一末端處具有無效區塊,如圖19B所展示。因此,用於判定下一區塊之演算法橫越整個圖框保持相同。
在一些實施例中,第一四重列之每一列可用額外無效區塊填補,例如,用額外兩個無效區塊填補。代替以第一四重列之頂部列中之第一區塊開始(如圖19A所展示),至管線之輸入可以第一四重列之頂部列中之第一區塊左側的第一無效區塊開始。
圖20A及圖20B為根據至少一些實施例之用於區塊處理管線之奈特次序處理方法的高階流程圖。在圖20A中,如3100處所指示,根據用於判定藉由奈特次序處理方法而實施的下一輸入區塊之演算法來判定下一區塊。如3102處所指示,將區塊(例如)自記憶體經由直接記憶體存取(DMA)而輸入至管線。如由3104所展示,只要存在待處理之區塊,就繼續元素3100及3102之輸入程序。在管線中處理藉由元素3100及3102而輸入至管線之每一區塊,如3106處所指示。最初將每一區塊輸入至管線之第一級,處理每一區塊,將每一區塊輸出至第二級,處理每一區塊,等等。當一區塊自管線之一級移動至下一級時,該級可 開始處理管線中之下一區塊。因此,輸入區塊移動通過管線之該等級,其中每一級每次處理一個區塊。如3108處所指示,一旦一區塊已藉由管線之最後級處理,即將該經處理區塊(例如)經由直接記憶體存取(DMA)而輸出至記憶體。
圖20B為用於判定可藉由奈特次序處理方法而實施的下一輸入區塊之實例演算法的流程圖,且對圖20A之元素3100進行擴展。圖20B假定圖框劃分成四重列,且用以判定下一圖框之演算法在不處於四重列之底部列上的情況下為向左兩行、向下一列(-2,+1),在處於底部列上的情況下為向右七行、向上三列(+7,-3)。然而,可使用其他列分組及/或間隔演算法。在3150處,若在圖框之開始處,則方法獲得初始區塊,如3152處所指示。若此並非圖框之開始,則在3154處,若此為四重列之最後列,則下一區塊為向右七行、向上三列,如3156處所指示。若此並非四重列之最後列,則下一區塊為向左兩行、向下一列,如3158處所指示。
實例管線單元
圖21A至圖21C為根據至少一些實施例之實例管線處理單元之方塊圖,該等實例管線處理單元可用於實施如本文所描述之區塊處理方法及裝置中之一或多者之區塊處理管線的級處。舉例而言,如圖21A及圖21B所展示之管線單元5000A及/或5000B中之一或多者可用於圖22所展示之實例區塊處理管線之每一級處。應注意,圖21A至圖21C並不意欲為限制性的;管線處理單元可包括比該等圖中所展示之組件及特徵更多或更少的組件及特徵。
如圖21A所展示,管線單元5000A可包括至少一記憶體5010及一單元核心5020。單元核心5020可為經組態以在區塊處理管線之特定級處對或對於一區塊或一區塊之一部分執行特定操作的組件(例如,電路)。記憶體5010可(例如)為允許單元核心5020自記憶體5010讀取用於 一區塊之資料並處理該資料,而用於下一區塊之資料正自先前管線單元寫入至記憶體5010之雙緩衝式記憶體。
如圖21B所展示,除了如圖21A所展示之記憶體5010及單元核心5020以外,管線單元5000B亦可包括處理器5030。處理器5030可(例如)為行動或M類處理器。區塊處理管線之管線單元5000B中之處理器5030可(例如)用以控制區塊邊界處之區塊處理管線。管線單元5000B中之處理器5030可(例如)用低階韌體微碼組態,以允許針對各種應用由區塊處理管線實施的演算法之靈活性。在至少一些實施例中,管線中之管線單元5000B之處理器5030可經組態以自先前(上游)管線單元5000B之處理器5030接收資料且將資料發送至後續(下游)管線單元5000B之處理器5030。另外,管線之最後級處之管線單元5000B之處理器5030可經組態以將回饋資料發送至管線之第一級處之管線單元5000B之處理器5030。
如圖21A及圖21B所展示,管線單元5000A或5000B可經組態以(例如)根據直接記憶體存取(DMA)而存取外部記憶體。另外,管線單元5000A或5000B可經組態以將資訊傳遞回至管線之一或多個先前(上游)級及/或接收自管線之一或多個後續(下游)級傳遞回之資訊。另外,管線單元5000A或5000B可經組態以將資訊前向傳遞至管線之一或多個後續(下游)級及/或接收自管線之一或多個先前(上游)級前向傳遞之資訊。
如圖21C所展示,如圖21A所展示之兩個或兩個以上單元5000A可分組在一起且經組態以在管線中執行操作。單處理器5030可用以控制及/或組態管線單元5000A。
實例區塊處理管線
圖22為根據至少一些實施例之用於H.264編碼之實例區塊處理方法6000中之一般操作的高階方塊圖,該實例區塊處理方法6000可在級 中藉由可實施本文所描述之區塊處理方法及裝置中之一或多者之區塊處理管線來實施。實施區塊處理方法6000之區塊處理管線可(例如)經實施為H.264視訊編碼器裝置之組件,其經組態以將輸入視訊圖框自輸入格式轉換成如H.264/AVC標準中所描述的H.264/進階視訊寫碼(AVC)格式。H.264/AVC標準係由ITU-T在名為「ITU-T Recommendation H.264:Advanced video coding for generic audiovisual services」之文件中發佈,該文件可被稱作H.264推薦。實例輸入視訊格式為經編碼於YCbCr色彩空間中之1080p(1920×1080像素、2.1兆像素)。然而,其他輸入視訊格式可使用視訊編碼器裝置中之管線之實施例而編碼成H.264。
視訊編碼器裝置可(例如)經實施為積體電路(IC)或經實施為IC上之子系統,諸如,系統單晶片(SOC)。在至少一些實施例中,視訊編碼器裝置可包括至少一管線組件、一處理器組件(例如,低功率多核心處理器),及將該裝置之功能組件互連之匯流排子系統或網狀架構。視訊編碼器裝置之處理器組件可(例如)執行管線之圖框層級控制(諸如,速率控制)、執行管線組態,且經由驅動器而與應用程式軟體介接。管線組件可實施多個處理級,每一處理級經組態以執行如圖22所展示之操作中之一或多者之一部分或全部,每一級包括一或多個處理單元。管線中之處理單元中之至少一者可包括一處理器組件(例如,M類處理器),該處理器組件可(例如)組態在巨集區塊層級處在各別級處之處理單元之參數。視訊編碼器裝置可包括其他功能組件或單元,諸如,記憶體組件;以及至(例如)一或多個視訊輸入源及外部記憶體之外部介面。至視訊編碼器裝置之實例視訊輸入源可包括如下各者中之一或多者(但不限於該等器件):用於原始視訊輸入處理之視訊攝影機、用於重新編碼/轉碼之解碼器裝置、快閃或其他記憶體,及JPEG解碼器。圖23說明實例視訊編碼器裝置。圖24說明包括視訊編 碼器裝置之實例SOC。雖然實施例大體上關於使用奈特次序處理來實施區塊處理方法6000之區塊處理管線之硬體實施予以描述,但應注意,使用奈特次序處理之區塊處理方法6000可藉由以軟體實施之區塊處理管線予以實施。
實施如圖22所展示之方法6000的管線可根據H.264標準處理來自輸入視訊圖框之16×16像素巨集區塊,每一巨集區塊包括可在管線之級處單獨地處理之兩個或兩個以上區塊或分割區。輸入視訊圖框可(例如)經編碼於YCbCr色彩空間中;每一巨集區塊可由可在管線之級處單獨地處理之色度元素及明度元素之單獨區塊構成。實施區塊處理方法6000之管線可自記憶體接收輸入巨集區塊且將經處理巨集區塊輸出至記憶體。記憶體可包括視訊編碼器裝置之記憶體及/或視訊編碼器裝置外部之記憶體。在至少一些實施例中,記憶體可按需要由管線(例如)經由直接記憶體存取(DMA)而存取。在至少一些實施例中,記憶體可經實施為多層級記憶體,其中快取記憶體實施於管線與外部記憶體之間。舉例而言,在一些實施中,可自外部記憶體讀取一或多個四重列,且將一或多個四重列快取至快取記憶體以供由管線存取以減少至外部記憶體之讀取數目。
如圖22所展示之可在級中藉由管線執行的實例H.264視訊編碼器方法6000之一般操作以及通過管線之一般資料流在下文中予以簡要描述。方法6000之一般操作中之每一者可藉由管線之一或多個級處之一或多個管線單元予以實施。圖21A至圖21C說明實例管線單元。亦應注意,圖22所展示之每一一般操作可再分成可藉由管線之一個、兩個或更多級處之管線單元實施的兩個或兩個以上操作。然而,圖22所展示之操作中之兩個或兩個以上操作可在管線之同一級處予以執行。管線中之每一級每次處理一個巨集區塊,且因此,該等操作中之兩個或兩個以上操作可對當前處於各別級處之相同巨集區塊同時地操作。應 注意,管線可執行比圖22所展示及下文所描述之彼等操作更多、更少的操作或不同於圖22所展示及下文所描述之彼等操作的操作。
巨集區塊輸入
在至少一些實施例中,巨集區塊輸入6002可藉由管線之初始級來執行。在至少一些實施例中,巨集區塊輸入6002自記憶體(例如)經由DMA而接收明度像素及色度像素、計算對由管線之下游級中之韌體所使用的輸入像素之統計,且緩衝輸入巨集區塊進以使韌體能夠向前看。緩衝輸入巨集區塊像素資料及對應統計,且將該等輸入巨集區塊像素資料及對應統計發送至管線之實施圖框內及圖框間估計6010操作之一或多個下游級。在至少一些實施例中,高達16個巨集區塊之輸入緩衝器經維持用於輸入像素及統計。在至少一些實施例中,可根據如先前在題為奈特次序處理之章節中所描述之奈特次序輸入演算法將巨集區塊像素資料及對應統計輸入至管線之下游級。
在至少一些實施例中,巨集區塊輸入6002自四重列邊界處之記憶體讀取來自先前四重列之底部列之相鄰者資料,且將相鄰者資料傳遞至至少一下游級。
圖框內及圖框間估計
圖框內及圖框間估計6010操作可判定待用於編碼輸入至管線之巨集區塊的先前經編碼像素之區塊。在H.264視訊編碼中,可使用已經編碼於當前圖框內之像素區塊來編碼每一巨集區塊。判定此等區塊之程序可被稱作圖框內估計,或簡單地被稱作框內估計。然而,亦可使用來自一或多個先前經編碼圖框(被稱作參考圖框)之像素區塊來編碼巨集區塊。在參考圖框中找到匹配像素區塊之程序可被稱作圖框間估計,或更通常被稱作運動估計。圖框內及圖框間估計6010操作可再分成可在管線之一個、兩個或更多級處執行的兩個或兩個以上子操作,其中每一級處之一或多個組件或管線單元經組態以執行一特定子 操作。
在至少一些實施例中,巨集區塊輸入6002自四重列邊界處之記憶體讀取來自先前四重列之底部列之相鄰者資料,且將相鄰者資料傳遞至圖框內及圖框間估計6010,例如傳遞至圖框內估計組件。另外,運動補償及重建構6030(例如,明度重建構組件)可將相鄰者資料作為回饋傳遞至圖框內及圖框間估計6010,例如傳遞至圖框內估計組件。
運動估計
在至少一些實施例中,為了執行運動估計,管線可包括用於待搜尋之每一參考圖框之運動估計引擎之一個個例。每一運動估計引擎僅搜尋一個參考圖框。在至少一些實施例中,每一運動估計引擎可包括一低解析度運動估計組件、一全像素運動估計組件,及一子像素運動估計組件。在至少一些實施例中,運動估計引擎中之每一者之三個組件可實施於管線之不同級處。在至少一些實施例中,每一運動估計引擎亦可包括一記憶體組件,該記憶體組件根據需要自記憶體讀取參考圖框資料且儲存參考圖框資料。在至少一些實施例中,處理器之單一個例管理運動估計引擎之所有個例。在至少一些實施例中,處理器可使用經預測且同置型運動向量來判定一或多個候選者,且將候選者者輸入至運動估計引擎之全像素運動估計組件。
在至少一些實施例中,每一運動估計引擎之低解析度運動估計組件對各別參考圖框之按比例縮小之低解析度版本執行詳盡搜尋,以產生候選者。在至少一些實施例中,全像素運動估計組件使用來自低解析度運動估計組件之候選者而對全大小像素執行搜尋。在至少一些實施例中,子像素運動估計組件使用自全像素運動估計組件接收之最好候選者而對二分之一像素及四分之一像素執行搜尋。在一些實施例中,可基於在管線之上游級處所執行之直接模式估計之結果來停用全像素運動估計及子像素運動估計。在至少一些實施例中,每一運動估 計引擎將結果資料輸出至模式決策6020。
在至少一些實施例中,運動估計亦可包括一直接模式估計組件,該直接模式估計組件接收同置型及空間運動向量資料且計算其提供至模式決策6020之直接/跳過模式成本。基於該等結果,直接模式估計組件可停用全像素運動估計及子像素運動估計。
框內估計
在至少一些實施例中,管線之框內估計組件執行框內模式選擇以判定已經編碼於可用於編碼當前巨集區塊中之當前圖框內之像素區塊。在至少一些實施例中,框內估計組件僅對明度執行框內模式選擇。在此等實施例中,色度框內估計係藉由管線之下游級處之色度重建構組件來執行。在至少一些實施例中,框內估計組件可對一巨集區塊中之兩個或兩個以上區塊或分割區(例如,4×4、8×8、4×8、8×4、16×8、及/或8×16區塊)中之每一者獨立地執行框內估計。對於每一區塊,首先自相鄰區塊提取預測像素(相鄰區塊可在圖框中之當前巨集區塊外部或在當前巨集區塊內)。對於當前區塊中之每一預測模式,藉由自相鄰像素產生預測區塊、計算模式成本且比較模式成本與用於彼區塊之最小成本來評估當前模式之成本。一旦評估所有預測模式且判定最好模式,即可對最好模式執行重建構使得經重建構像素可用以預測巨集區塊內之未來區塊。框內估計組件可將最好框內模式資訊傳遞至模式決策6020。
在至少一些實施例中,巨集區塊輸入6002自四重列邊界處之記憶體讀取來自先前四重列之底部列之相鄰者資料,且將相鄰者資料傳遞至框內估計組件。在至少一些實施例中,至少一下游級(例如,下游級處之明度重建構組件)可將相鄰者資料傳遞回至框內估計組件。
模式決策
在至少一些實施例中,模式決策6020可藉由在實施圖框內及圖 框間估計6010操作之級的下游的管線之級處之模式決策組件來實施。然而,在一些實施例中,模式決策6020操作可再分成可在管線之一個、兩個或更多級處執行的兩個或兩個以上子操作,其中每一級處之一或多個組件或管線單元經組態以執行一特定子操作。在至少一些實施例中,模式決策6020組件自框內估計接收最好框內模式、自直接模式估計接收直接/跳過模式成本,且自運動估計引擎接收運動向量候選者。在至少一些實施例中,模式決策組件計算用於雙向模式之額外成本且判定最好巨集區塊類型,包括巨集區塊分割區、子分割區、預測方向及參考圖框索引。在至少一些實施例中,模式決策6020組件亦執行所有運動向量預測。可在模式決策期間估計運動向量速率時使用運動向量預測結果。在至少一些實施例中,亦可將運動向量預測結果自模式決策6020組件回饋至運動估計,例如供用於直接模式估計及運動向量速率估計。
運動補償及重建構
在至少一些實施例中,運動補償及重建構6030操作可再分成可在管線之一個、兩個或更多級處執行的兩個或兩個以上子操作,其中每一級處之一或多個組件或管線單元經組態以執行一特定子操作。舉例而言,在一些實施例中,運動補償及重建構6030可再分成明度運動補償及重建構以及色度運動補償及重建構。在至少一些實施例中,運動補償及重建構6030之此等子操作中之每一者可藉由管線之一或多個級處之一或多個組件或管線單元來執行。
明度運動補償及重建構
在至少一些實施例中,管線之明度運動補償組件自模式決策6020接收最好模式及對應運動向量。如先前所提及,每一運動估計引擎可包括一記憶體組件,該記憶體組件自記憶體讀取並儲存參考圖框資料。若最好模式經框間預測,則明度運動補償組件向對應於運動向 量之運動估計引擎請求參考圖框巨集區塊。運動估計引擎取決於請求大小而恢復子像素內插式4×4或8×8區塊。明度運動補償組件接著將該等區塊組合成預測巨集區塊。明度運動補償組件接著將加權預測應用於預測巨集區塊以產生最終巨集區塊預測子,該最終巨集區塊預測子接著被傳遞至明度重建構組件。
在至少一些實施例中,管線之明度重建構組針對明度執行巨集區塊重建構,包括框內預測(在至少一些實施例中,明度運動補償組件執行框間預測)、前向變換及量化(FTQ),及反向變換及量化(ITQ)。
在至少一些實施例中,基於來自模式決策6020之最好模式,框間預測巨集區塊係自明度運動補償組件傳遞或框內預測係藉由明度重建構組件執行,以產生預測區塊。在框內模式中,以區塊(掃描)次序來執行預測,係因為來自相鄰區塊之經重建構像素係為未來區塊之預測所需。自預測區塊減去輸入區塊以產生殘餘區塊。藉由經由明度重建構組件實施之FTQ技術來轉換及量化此殘餘像素資料。將係數資料發送至藉由明度重建構組件實施之ITQ技術,且亦可將係數資料向下游發送至CAVLC編碼。ITQ技術產生經重建構之殘餘像素區塊。將預測區塊加至殘餘區塊以產生經重建構區塊。可將經重建構像素向下游傳遞至解區塊濾波器。在至少一些實施例中,亦可將經重建構像素傳遞回至圖框內及圖框間估計6010之圖框內估計組件,以用於預測當前巨集區塊內部之未來區塊。
色度運動補償及重建構
在至少一些實施例中,在兩個級中執行色度重建構。在第一級中,基於輸入巨集區塊類型、運動向量及參考圖框索引而自記憶體讀取為框間預測所需之色度參考區塊。接著應用子像素內插及加權預測以產生預測巨集區塊。在第二級中,執行色度框內預測及色度框內/ 框間FTQ/ITQ。此情形允許一個額外管線級負載色度預測像素資料。因為色度像素未由運動估計搜尋,所以自外部記憶體讀取色度預測資料且色度預測資料可具有大延時。在至少一些實施例中,色度運動補償組件執行第一級,而色度重建構組件執行第二級。
在至少一些實施例中,色度運動補償組件產生包括用於Cb及Cr色度區塊之子像素內插之預測區塊;大小係基於分割區大小及色度格式。全大小色度區塊針對色度格式4:2:0、4:2:2及4:4:4分別為8×8、8×16或16×16像素。在至少一些實施例中,色度運動補償組件可自外部(至管線)記憶體預取及快取色度預測像素。在至少一些實施例中,可基於模式決策6020結果讀取參考資料。色度運動補償組件執行子像素內插以產生預測區塊。模式決策6020提供巨集區塊類型及子類型、每分割區之參考圖框索引,及對應運動向量。將預測輸出至色度重建構組件。
在至少一些實施例中,色度重建構組件針對框間模式及框內模式執行色度預測、色度框內估計及色度重建構。對於色度格式4:2:0及4:2:2,執行框內色度估計及預測。在至少一些實施例中,在此級處而非在圖框內及圖框間估計6010處執行色度框內估計,使得可在估計程序期間使用經重建構像素。在至少一些實施例中,若最好模式在框內,則可基於最好框內色度模式來執行框內色度估計,且可使用四個框內色度模式中之一者來執行框內預測。對於框間巨集區塊,自色度運動補償接收框間色度預測像素。對於色度格式4:4:4,使用明度框內預測模式以產生色度區塊預測,且以與針對明度相同的方式來執行框間色度預測。因此,色度重建構概念上包括用於以4:4:4色度格式重建構色度之4:2:0及4:2:2色度重建構及明度重建構。
CAVLC編碼及解區塊
在至少一些實施例中,CAVLC編碼及解區塊可藉由管線之最後 級處之一或多個組件來執行。在至少一些實施例中,管線之解區塊濾波器組件自色度重建構組件接收經重建構明度及色度像素且根據H.264推薦執行解區塊濾波。可將結果輸出至記憶體。
在至少一些實施例中,管線之CAVLC編碼組件自色度重建構組件接收至少明度及色度經量化係數、相鄰者資料及色度重建構結果,且產生CAVLC(上下文自適應性可變長度寫碼)經編碼輸出串流而至記憶體。
在至少一些實施例中,解區塊濾波器組件及CAVLC編碼組件將用於四重列之底部列之相鄰者資料寫入至四重列邊界處之記憶體。對於下一四重列之頂部列,巨集區塊輸入6002可接著自四重列邊界處之記憶體讀取此相鄰者資料且將相鄰者資料傳遞至管線之至少一下游級。
轉碼器
在至少一些實施例中,轉碼操作可藉由轉碼器6050執行。該轉碼器可經實施為管線之功能組件或經實施為在管線外部之功能組件。在至少一些實施例中,轉碼器6050可執行由管線輸出之CAVLC(上下文自適應性可變長度寫碼)經編碼串流至CABAC(上下文自適應性二進位算術寫碼)經編碼串流之記憶體間轉換。
在至少一些實施例中,管線可以不同於掃描次序之次序進行編碼,例如,如本文中先前所描述之奈特次序。然而,最終,應以習知巨集區塊掃描次序傳輸H.264視訊編碼器之經編碼位元串流。在至少一些實施例中,重排序自奈特次序至掃描次序輸出之巨集區塊係藉由將經編碼資料寫入至四個不同輸出緩衝器之CAVLC編碼組件來實現,每一輸出緩衝器對應於一巨集區塊列。在四重列之末端處,每一列緩衝器將含有用於一各別列之經編碼巨集區塊之掃描次序串流。轉碼器6050處置縫合每一列之開始及末端以在巨集區塊列邊界處產生連 續串流。在至少一些實施例中,管線可將後設資料嵌入於CAVLC輸出串流中以促進藉由轉碼器6050進行之列之縫合。
實例視訊編碼器裝置
圖23為根據至少一些實施例之實例視訊編碼器裝置7000之方塊圖。視訊編碼器裝置7000可(例如)經實施為積體電路(IC)或經實施為IC上之子系統,諸如,系統單晶片(SOC)。在至少一些實施例中,視訊編碼器裝置7000可包括管線7040組件、處理器7010組件(例如,低功率多核心處理器)、記憶體管理單元(MMU)7020、DMA 7030及互連件7050(諸如將該裝置之功能組件互連之匯流排子系統或網狀架構)。視訊編碼器裝置7000之處理器7010組件可(例如)執行管線7040之圖框層級控制,諸如,速率控制;執行管線7040組態(包括管線7040內之個別管線單元之組態);且經由驅動器而與應用程式軟體介接(例如,針對視訊編碼器7000組態)。MMU 7020可充當至外部記憶體之介面,(例如)以用於串流視訊輸入及/或輸出。管線7040組件可穿過DMA 7030經由MMU 7020而存取記憶體。在一些實施例中,視訊編碼器裝置7000可包括圖23中未展示之其他功能組件或單元,或比圖23所展示之功能組件少的功能組件。圖22展示可藉由管線7040組件實施之實例區塊處理方法。圖24說明可包括至少一個視訊編碼器裝置7000之實例系統單晶片(SOC)。
實例系統單晶片(SOC)
現轉向至圖24,系統單晶片(SOC)8000之一項實施例之方塊圖可包括視訊編碼器裝置之至少一項個例,該視訊編碼器裝置包括可實施如圖3至圖23所說明之區塊處理方法及裝置中之一或多者之區塊處理管線。SOC 8000經展示為耦接至記憶體8800。如由名稱暗示,SOC 8000之組件可作為積體電路「晶片」而整合至單一半導體基板上。在一些實施例中,該等組件可實施於系統中之兩個或兩個以上離散晶片 上。然而,SOC 8000將在本文中用作一實例。在所說明之實施例中,SOC 8000之組件包括中央處理單元(CPU)複合體8020、晶片上周邊組件8040A至8040B(更簡要地,「周邊裝置」)、記憶體控制器(MC)8030、視訊編碼器7000(其自身可被認為周邊組件),及通信網狀架構8010。組件8020、8030、8040A至8040B及7000可全部耦接至通信網狀架構8010。記憶體控制器8030可在使用期間耦接至記憶體8800,且周邊裝置8040B可在使用期間耦接至外部介面8900。在所說明之實施例中,CPU複合體8020包括一或多個處理器(P)8024及一層級二(L2)快取記憶體8022。
周邊裝置8040A至8040B可為包括於SOC 8000中之額外硬體功能性之任何集合。舉例而言,周邊裝置8040A至8040B可包括視訊周邊裝置,諸如,經組態以處理來自攝影機或其他影像感測器之影像捕獲資料之影像信號處理器、經組態以在一或多個顯示器件上顯示視訊資料之顯示控制器、圖形處理單元(GPU)、視訊編碼器/解碼器、定標器、旋轉器、摻合器等等。周邊裝置可包括音訊周邊裝置,諸如,麥克風、揚聲器、至麥克風及揚聲器之介面、音訊處理器、數位信號處理器、混頻器等等。周邊裝置可包括用於在SOC 8000之外部之各種介面8900之周邊介面控制器(例如,周邊裝置8040B),該等介面8900包括諸如通用串列匯流排(USB)、周邊組件互連件(PCI)(包括PCI Express(PCIe))、串聯及並聯埠等等之介面。周邊裝置可包括網路連接周邊裝置,諸如,媒體存取控制器(MAC)。可包括硬體之任何集合。
更特定地在圖24中,SOC 8000可包括視訊編碼器7000組件之至少一個例,例如,如圖23所說明的視訊編碼器7000,其包括實施如圖22所說明之區塊處理方法6000之區塊處理管線7040組件。視訊編碼器7000可為(例如)可經組態以將輸入視訊圖框自輸入格式轉換成如 H.264/進階視訊寫碼(AVC)標準中所描述之H.264/AVC格式之H.264視訊編碼器裝置。區塊處理管線7040可實施如本文中關於圖3至圖22所描述之區塊處理方法及裝置中之一或多者。
CPU複合體8020可包括充當SOC 8000之CPU之一或多個CPU處理器8024。系統之CPU包括執行系統(諸如,作業系統)之主控制軟體之處理器。通常,由CPU在使用期間執行之軟體可控制系統之其他組件以實現該系統之所要的功能性。處理器8024亦可執行其他軟體,諸如,應用程式。應用程式可提供使用者功能性,且可為了較低層級器件控制而依賴於作業系統。因此,處理器8024亦可被稱作應用程式處理器。CPU複合體8020可進一步包括其他硬體,諸如,L2快取記憶體8022及/或至系統之其他組件的介面(例如,至通信網狀架構8010之介面)。通常,處理器可包括經組態以執行在由處理器實施之指令集架構中定義的指令之任何電路及/或微碼。由處理器回應於執行該等指令而操作之指令及資料可通常儲存於記憶體8800中,但亦可針對存取周邊裝置之直接處理器定義某些指令。處理器可涵蓋經實施於具有其他組件之積體電路上的處理器核心,作為系統單晶片(SOC 8000)或其他層級之整合。處理器可進一步涵蓋離散微處理器、整合至多晶片模組實施中的處理器核心及/或微處理器、實施為多個積體電路之處理器等。
記憶體控制器8030可通常包括用於自SOC 8000之其他組件接收記憶體操作及用於存取記憶體8800以完成記憶體操作之電路。記憶體控制器8030可經組態以存取任何類型之記憶體8800。舉例而言,記憶體8800可為靜態隨機存取記憶體(SRAM)、動態RAM(DRAM),諸如同步DRAM(SDRAM),包括雙資料速率(DDR、DDR2、DDR3等)DRAM。可支援DDR DRAM之低功率/行動版本(例如,LPDDR、mDDR等)。記憶體控制器8030可包括用於記憶體操作、用於將操作 排序(且潛在地重排序)且將操作呈現給記憶體8800之佇列。記憶體控制器8030可進一步包括資料緩衝器以儲存等待寫入至記憶體之寫入資料及等待返回至記憶體操作之來源之讀取資料。在一些實施例中,記憶體控制器8030可包括用以儲存最近存取之記憶體資料之快取記憶體。舉例而言,在SOC實施中,快取記憶體可藉由避免來自記憶體8800之資料之重新存取(若預期不久將再次存取)來減少SOC中之功率消耗。在一些狀況下,快取記憶體亦可被稱作系統快取記憶體,與僅伺服某些組件的諸如L2快取記憶體8022或處理器8024中之快取記憶體的私用快取記憶體相對。另外,在一些實施例中,系統快取記憶體無需位於記憶體控制器8030內。
在一實施例中,可用SOC 8000以疊層晶片或疊層封裝組態來封裝記憶體8800。亦可使用SOC 8000及記憶體8800之多晶片模組組態。此類組態相較於至系統中之其他組件之傳輸可相對更安全(就資料可觀測性而言)。因此,受保護資料可未經加密地駐留於記憶體8800中,而受保護資料可經加密以用於SOC 8000與外部端點之間的交換。
通信網狀架構8010可為用於在SOC 8000之組件當中通信之任何通信互連件及協定。通信網狀架構8010可以匯流排為基礎,包括共用匯流排組態、縱橫式組態,及具有橋接器之階層式匯流排。通信網狀架構8010亦可以封包為基礎,且可為具有橋接器之階層式、縱橫式、點對點或其他互連件。
應注意,SOC 8000之組件之數目(及用於圖24所展示之彼等組件之子組件之數目(諸如,在CPU複合體8020內))可在實施例間變化。可存在比圖24中展示之數目多或少的每一組件/子組件。
實例系統
圖25為系統9000之一項實施例的方塊圖。在所說明實施例中, 系統9000包括耦接至一或多個外部周邊裝置9020及外部記憶體8800之SOC 8000之至少一個例。提供功率管理單元(PMU)9010,其將供應電壓供應至SOC 8000以及將一或多個供應電壓供應至記憶體8800及/或周邊裝置9020。在一些實施例中,可包括SOC 8000之一個以上個例(且亦可包括一個以上記憶體8800)。
周邊裝置9020可取決於系統9000之類型包括任何所要電路。舉例而言,在一項實施例中,系統9000可為行動器件(例如,個人數位助理(PDA)、智慧型手機等),且周邊裝置9020可包括用於各種類型之無線通訊的器件,諸如wifi、藍芽、蜂巢式、全球定位系統等。周邊裝置9020亦可包括額外儲存器,包括RAM儲存器、固態儲存器,或磁碟儲存器。周邊裝置9020可包括使用者介面器件,諸如顯示器螢幕,包括觸控顯示器螢幕或多觸控顯示螢幕、鍵盤或其他輸入器件、麥克風、揚聲器等。在其他實施例中,系統9000可為任何類型之計算系統(例如,桌上型個人電腦、膝上型電腦、工作站、平板電腦(net top)等)。
外部記憶體8800可包括任何類型之記憶體。舉例而言,外部記憶體8800可為SRAM、動態RAM(DRAM),諸如,同步DRAM(SDRAM)、雙資料速率(DDR、DDR2、DDR3等)SDRAM、RAMBUS DRAM、DDR DRAM之低功率版本(例如,LPDDR、mDDR等),等等。外部記憶體8800可包括記憶體器件被安裝至之一或多個記憶體模組,諸如單列直插記憶體模組(SIMM)、雙列直插記憶體模組(DIMM),等等。替代地,外部記憶體8800可包括以疊層晶片或疊層封裝實施安裝於SOC 8000上之一或多個記憶體器件。
本文所描述之方法在不同實施例中可以軟體、硬體或其組合予以實施。另外,可改變該等方法之區塊之次序,且可新增、重排序、組合、省略、修改各種元素等等。如將對受益於本發明之熟習此項技 術者所顯見,可作出各種修改及改變。本文所描述之各種實施例意謂說明性的而非限制性的。許多變化、修改、新增及改良係可能的。因此,可針對本文所描述之組件提供複數個個例作為單一個例。各種組件、操作及資料儲存器之間的邊界係稍微任意的,且在特定說明性組態之上下文中說明特定操作。預見功能性之其他分配,且功能性之其他分配可屬於以下之申請專利範圍之範疇。最後,在實例組態中呈現為離散組件之結構及功能性可實施為組合式結構或組件。此等及其他變化、修改、新增及改良可屬於如以下之申請專利範圍中所定義的實施例之範疇。
900‧‧‧區塊處理管線
910A‧‧‧級
910B‧‧‧級
910C‧‧‧級
910D‧‧‧級
910E‧‧‧級
912B‧‧‧管線組件
912C‧‧‧管線組件
912D‧‧‧管線組件
920‧‧‧色度快取邏輯
930‧‧‧色度快取記憶體
932‧‧‧快取標記
940‧‧‧暫存器
950‧‧‧老化貯體
980‧‧‧記憶體
982‧‧‧色度參考資料

Claims (20)

  1. 一種裝置,其包含:一區塊處理管線,其包含複數個級,每一級經組態以對來自通過該管線之一輸入圖框之像素區塊執行一或多個操作;一記憶體,其經組態以儲存一或多個參考圖框;一快取記憶體,其包含用於快取在該管線之一或多個上游級處自該記憶體預取之參考資料以供由該管線之一下游級存取的複數個快取區塊;及其中該區塊處理管線經組態以:產生用於來自該輸入圖框之一當前像素區塊之複數個參考運動向量,其中每一參考運動向量指示該一或多個參考圖框中之一者中之一記憶體區塊;根據該等參考運動向量檢查用於該等快取區塊之快取標記以判定對於該等參考運動向量之快取命中及快取遺漏,其中一快取遺漏指示由該各別參考運動向量指示之該記憶體區塊不在該快取記憶體中;及對於每一快取遺漏:根據一替換原則選擇一快取區塊;發出一讀取請求以將由該各別參考運動向量指示之參考資料之一記憶體區塊預取至該經選擇之快取區塊中;及儲存該各別參考運動向量作為用於該各別快取區塊之一快取標記。
  2. 如請求項1之裝置,其中為了產生針對該當前區塊之該複數個參考運動向量,該區塊處理管線經組態以自該當前區塊之一或多個運動向量導出該等參考運動向量,每一參考運動向量指示相 對於該當前區塊之該等參考圖框中一者中之一各別像素區域。
  3. 如請求項1之裝置,其中根據一圖塊格式將該一或多個參考圖框儲存於該記憶體中,該記憶體儲存來自對應圖塊中之一圖框之經處理區塊的參考資料,其中每一圖塊包括該記憶體中之兩個或兩個以上鄰接記憶體區塊,且其中每一參考運動向量包含該一或多個參考圖框中之一特定者之一指示、該經指示之參考圖框中之一特定圖塊之一指示及該經指示之圖塊中之一特定記憶體區塊之一指示。
  4. 如請求項1之裝置,其中該參考資料為針對一YCbCr色彩空間色度格式之色度參考資料。
  5. 如請求項4之裝置,其中該管線之該下游級經組態以根據自該快取記憶體中之各別快取區塊存取之一像素區塊的該色度參考資料來執行該級處之該區塊的色度運動補償。
  6. 如請求項1之裝置,其進一步包含複數個暫存器,每一暫存器經組態以儲存該快取記憶體中對應於來自當前在該管線之一各別級處之該輸入圖框之一各別像素區塊的快取區塊之指示,其中該複數個暫存器包括一或多個執行中暫存器,其指示對應於來自該管線之該一或多個上游級處之該輸入圖框之一或多個像素區塊的快取區塊,及一使用中暫存器,其指示對應於來自當前在該管線之該下游級處正經處理之該輸入圖框之一像素區塊的快取區塊。
  7. 如請求項6之裝置,其中該區塊處理管線經進一步組態以根據對應於來自該輸入圖框之該當前像素區塊的該等快取區塊來設定該複數個暫存器之一第一暫存器之內容,其中對應於該當前區塊之該等快取區塊包含由該等快取命中指示之快取區塊及針對該當前區塊之該等快取遺漏而選擇之快取區塊。
  8. 如請求項6之裝置,其中該一或多個執行中暫存器及該使用中暫存器共同指示該快取記憶體中之包括處理來自當前在該管線中之該輸入圖框之像素區塊所需要的參考資料之快取區塊,其中由該等執行中暫存器及該使用中暫存器指示之該等快取區塊並未藉由該替換原則選擇為用於該當前區塊之該等參考運動向量之快取區塊。
  9. 如請求項6之裝置,其進一步包含兩個或兩個以上暫存器,該等暫存器經組態以作為用於老化該快取記憶體中之該等快取區塊之貯體,其中快取參考資料之該等快取區塊的指示經由該等貯體自一第一貯體至一最後貯體而老化,且其中該替換原則首先自該最後貯體且最後自該第一貯體選擇用於快取遺漏之快取區塊。
  10. 如請求項9之裝置,其中該區塊處理管線經進一步組態以藉由根據該先前貯體之該內容設定該第一貯體後之每一貯體之該內容及藉由設定該第一貯體之內容以指示由該使用中暫存器指示但不亦由該一或多個執行中暫存器所指示之該等快取區塊來老化該等貯體中之該等快取區塊。
  11. 如請求項6之裝置,其進一步包含複數個貯體,其中該快取記憶體中之快取區塊經由該等貯體自一第一貯體至一最後貯體而老化,其中該裝置經組態以根據列群組處理來自該區塊處理管線中之該輸入圖框之像素區塊,每一列群組包含來自該圖框之複數個區塊列,且其中該區塊處理管線經進一步組態以:在該管線之該下游級處理來自該輸入圖框之一像素區塊;當該像素區塊來自一列群組之最後列時,設定一第一貯體之內容以指示由該使用中暫存器指示但不亦由該一或多個執行中暫存器指示之該等快取區塊;及 當該像素區塊並非在一列群組之最後列上時:將一第二貯體之內容注入至一第三貯體中;及設定該第二貯體之內容以指示該第一貯體之內容及該使用中暫存器之並不亦在該一或多個執行中暫存器中之該內容。
  12. 一種方法,其包含:將來自一輸入圖框之像素區塊輸入至包含複數個級之一區塊處理管線,每一級經組態以對一像素區塊執行一或多個操作,其中該管線之一下游級經組態以根據來自一或多個參考圖框之參考資料來處理該等像素區塊;藉由該區塊處理管線將來自該等參考圖框之參考資料區塊快取至包含複數個快取位置之一快取記憶體中,每一快取位置經組態以儲存一參考資料區塊;藉由該管線之一上游級產生用於來自該輸入圖框之一當前像素區塊之一或多個參考運動向量,其中每一參考運動向量指示一或多個參考圖框中之一者中之一參考資料區塊;對於用於該當前區塊之該等參考運動向量中之至少一者:判定由該參考運動向量指示之該參考資料區塊並未在該快取記憶體中;根據一替換原則判定該參考運動向量之一快取位置;及根據該參考運動向量產生一讀取請求以將藉由該參考運動向量所指示之該參考資料區塊預取至該經判定之快取位置中。
  13. 如請求項12之方法,其進一步包含:儲存參考運動向量作為該等快取位置之快取標記;及根據該一或多個參考運動向量檢查該等快取標記以判定該一或多個參考運動向量之快取命中及快取遺漏。
  14. 如請求項12之方法,其中根據一圖塊格式將該一或多個參考圖框儲存於該記憶體中,該記憶體儲存來自對應圖塊中之一圖框之經處理區塊的參考資料,其中每一圖塊包括該記憶體中之兩個或兩個以上鄰接記憶體區塊,且其中每一參考運動向量包含該一或多個參考圖框中之一特定者之一指示、該經指示之參考圖框中之一特定圖塊之一指示及該經指示之圖塊中之一特定記憶體區塊之一指示。
  15. 如請求項12之方法,其中該參考資料為針對一YCbCr色彩空間色度格式之色度參考資料,該方法進一步包含該下游級根據用於自該快取記憶體存取之該等區塊的該色度參考資料針對通過該管線之每一像素區塊執行色度運動補償。
  16. 如請求項12之方法,其中該根據一替換原則判定該參考運動向量之一快取位置包含自複數個老化貯體選擇該快取位置,其中儲存該參考資料之該等快取位置之指示經由該等貯體自一第一貯體至一最後貯體而老化,且其中該替換原則首先自該最後貯體且最後自該第一貯體選擇快取位置。
  17. 如請求項16之方法,其進一步包含將對應於在該管線中正經處理之像素區塊之參考資料的快取位置之指示儲存至複數個暫存器,其中該複數個暫存器包括一或多個執行中暫存器,其指示在該管線之一或多個上游級處之像素區塊之快取位置,及一使用中暫存器,其指示當前在該管線之該下游級處正經處理之一像素區塊之快取位置。
  18. 如請求項16之方法,其進一步包含設定該第一老化貯體之內容以指示由該使用中暫存器指示但不亦由該一或多個執行中暫存器指示之該等快取位置。
  19. 一種器件,其包含: 一記憶體;及一裝置,其經組態以處理視訊圖框及經組態以將該等經處理之視訊圖框作為圖框資料儲存至該記憶體,該裝置包含實施複數個級之一區塊處理管線,每一級經組態以對來自通過該管線之一輸入圖框之像素區塊執行一或多個操作,其中該裝置進一步包含一快取記憶體,該快取記憶體包含複數個快取位置,每一快取位置經組態以儲存一參考資料區塊;其中該區塊處理管線經組態以:產生用於來自該輸入圖框之像素區塊之參考運動向量,其中每一參考運動向量指示儲存於該記憶體中之複數個參考圖框中之一者中之一參考資料區塊;儲存參考運動向量作為該等快取位置之快取標記;根據參考運動向量檢查該等快取標記以判定該等參考運動向量之快取命中及快取遺漏,其中一快取遺漏指示由該各別參考運動向量指示之該參考資料區塊不在該快取記憶體中;及對於對應於快取遺漏之參考運動向量,根據該參考運動向量產生一讀取請求以將由該參考運動向量所指示之該參考資料區塊預取至根據一替換原則判定之一快取位置中。
  20. 如請求項19之器件,其中根據一圖塊格式將該一或多個參考圖框儲存於該記憶體中,該記憶體儲存來自對應圖塊中之一圖框之經處理區塊的參考資料,其中每一圖塊包括該記憶體中之兩個或兩個以上鄰接記憶體區塊,且其中每一參考運動向量包含該一或多個參考圖框中之一特定者之一指示、該經指示之參考圖框中之一特定圖塊之一指示及該經指示之圖塊中之一特定記憶體區塊之一指示。
TW104128225A 2014-08-28 2015-08-27 用於在區塊處理管線中處理視訊圖框之視訊編碼器、方法及計算器件 TWI586149B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/472,119 US9762919B2 (en) 2014-08-28 2014-08-28 Chroma cache architecture in block processing pipelines

Publications (2)

Publication Number Publication Date
TW201620306A true TW201620306A (zh) 2016-06-01
TWI586149B TWI586149B (zh) 2017-06-01

Family

ID=54008012

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104128225A TWI586149B (zh) 2014-08-28 2015-08-27 用於在區塊處理管線中處理視訊圖框之視訊編碼器、方法及計算器件

Country Status (3)

Country Link
US (1) US9762919B2 (zh)
TW (1) TWI586149B (zh)
WO (1) WO2016032765A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107846597A (zh) * 2016-09-20 2018-03-27 上海澜至半导体有限公司 用于视频解码器的数据缓存方法和装置

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10218983B2 (en) 2015-09-30 2019-02-26 Apple Inc. Adapting mode decisions in video encoder
US10728546B2 (en) 2016-02-05 2020-07-28 Apple Inc. Sample adaptive offset systems and methods
US9866862B2 (en) * 2016-03-18 2018-01-09 Google Llc Motion vector reference selection through reference frame buffer tracking
US10460642B2 (en) 2016-06-30 2019-10-29 Apple Inc. Noise reduction in LED sensing circuit for electronic display
TWI684358B (zh) 2017-04-21 2020-02-01 美商時美媒體公司 用於基於編碼器提示以演現及預編碼負載估計的系統及方法
AU2018254591B2 (en) 2017-04-21 2021-01-07 Zenimax Media Inc. Systems and methods for encoder-guided adaptive-quality rendering
US10567788B2 (en) 2017-04-21 2020-02-18 Zenimax Media Inc. Systems and methods for game-generated motion vectors
GB2576286B (en) 2017-04-21 2022-09-07 Zenimax Media Inc Systems and methods for deferred post-processes in video encoding
TWI788772B (zh) 2017-04-21 2023-01-01 美商時美媒體公司 用於藉由預測運動向量及/或快取重複運動向量的玩家輸入運動補償的系統及方法
US10839477B2 (en) * 2017-09-29 2020-11-17 Intel Corporation Tile aware sector cache for graphics
US10798402B2 (en) * 2017-10-24 2020-10-06 Google Llc Same frame motion estimation and compensation
KR102516833B1 (ko) * 2017-12-28 2023-04-03 삼성전자주식회사 메모리 장치 및 그 데이터 처리 방법
US11074196B1 (en) 2018-09-28 2021-07-27 Splunk Inc. Evicting data associated with a data intake and query system from a local storage
US11874773B2 (en) * 2019-09-20 2024-01-16 Intel Corporation Apparatuses, methods, and systems for dual spatial pattern prefetcher
US11057637B1 (en) 2020-01-29 2021-07-06 Mellanox Technologies, Ltd. Efficient video motion estimation by reusing a reference search region
US20230403404A1 (en) * 2022-06-10 2023-12-14 Qualcomm Incorporated Storing misaligned reference pixel tiles

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW245871B (en) 1994-08-15 1995-04-21 Gen Instrument Corp Method and apparatus for efficient addressing of dram in a video decompression processor
US6636222B1 (en) * 1999-11-09 2003-10-21 Broadcom Corporation Video and graphics system with an MPEG video decoder for concurrent multi-row decoding
US20060050976A1 (en) 2004-09-09 2006-03-09 Stephen Molloy Caching method and apparatus for video motion compensation
US8705630B2 (en) 2006-02-10 2014-04-22 Nvidia Corporation Adapting one type of encoder to another type of encoder
WO2008037113A1 (en) 2006-09-25 2008-04-03 Thomson Licensing Apparatus and method for processing video data
US20080285652A1 (en) * 2007-05-14 2008-11-20 Horizon Semiconductors Ltd. Apparatus and methods for optimization of image and motion picture memory access
US8761253B2 (en) 2008-05-28 2014-06-24 Nvidia Corporation Intra prediction mode search scheme
US8477146B2 (en) 2008-07-29 2013-07-02 Marvell World Trade Ltd. Processing rasterized data
US20100166073A1 (en) 2008-12-31 2010-07-01 Advanced Micro Devices, Inc. Multiple-Candidate Motion Estimation With Advanced Spatial Filtering of Differential Motion Vectors
WO2010080646A2 (en) * 2009-01-12 2010-07-15 Maxim Integrated Products, Inc. Video acquisition and processing systems
US9432674B2 (en) 2009-02-02 2016-08-30 Nvidia Corporation Dual stage intra-prediction video encoding system and method
US8681873B2 (en) 2010-02-19 2014-03-25 Skype Data compression for video
US9609342B2 (en) 2010-02-19 2017-03-28 Skype Compression for frames of a video signal using selected candidate blocks
US8503534B2 (en) 2010-04-22 2013-08-06 Maxim Integrated Products, Inc. Multi-bus architecture for a video codec
US8786625B2 (en) 2010-09-30 2014-07-22 Apple Inc. System and method for processing image data using an image signal processor having back-end processing logic
WO2012086829A1 (ja) 2010-12-21 2012-06-28 日本電気株式会社 動き推定装置、動き推定方法、動き推定プログラム、および動画像符号化装置
KR20130050406A (ko) 2011-11-07 2013-05-16 오수미 머지 모드에서의 움직임 정보 생성 방법
WO2013140722A1 (ja) * 2012-03-21 2013-09-26 パナソニック株式会社 画像符号化方法、画像復号方法、画像符号化装置、画像復号装置、および画像符号化復号装置
US9338451B2 (en) 2012-04-12 2016-05-10 Qualcomm Incorporated Common spatial candidate blocks for parallel motion estimation
US9277222B2 (en) 2012-05-14 2016-03-01 Qualcomm Incorporated Unified fractional search and motion compensation architecture across multiple video standards
US9503724B2 (en) 2012-05-14 2016-11-22 Qualcomm Incorporated Interleave block processing ordering for video data coding
WO2014009864A2 (en) 2012-07-09 2014-01-16 Squid Design Systems Pvt Ltd Programmable variable block size motion estimation processor
US20140071146A1 (en) 2012-09-07 2014-03-13 Texas Instruments Incorporated Methods and systems for multimedia data processing
WO2014054896A1 (ko) 2012-10-07 2014-04-10 엘지전자 주식회사 비디오 신호 처리 방법 및 장치
AU2013202653A1 (en) * 2013-04-05 2014-10-23 Canon Kabushiki Kaisha Method, apparatus and system for generating intra-predicted samples
US9648335B2 (en) * 2013-07-12 2017-05-09 Qualcomm Incorporated Bitstream restrictions on picture partitions across layers

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107846597A (zh) * 2016-09-20 2018-03-27 上海澜至半导体有限公司 用于视频解码器的数据缓存方法和装置
CN107846597B (zh) * 2016-09-20 2019-12-10 上海澜至半导体有限公司 用于视频解码器的数据缓存方法和装置
US10542276B2 (en) 2016-09-20 2020-01-21 Montage Lz Semiconductor (Shanghai) Co., Ltd. Data caching method and apparatus for video decoder

Also Published As

Publication number Publication date
US9762919B2 (en) 2017-09-12
US20160065973A1 (en) 2016-03-03
TWI586149B (zh) 2017-06-01
WO2016032765A1 (en) 2016-03-03

Similar Documents

Publication Publication Date Title
TWI586149B (zh) 用於在區塊處理管線中處理視訊圖框之視訊編碼器、方法及計算器件
US9292899B2 (en) Reference frame data prefetching in block processing pipelines
TWI533209B (zh) 並行硬體及軟體之區塊處理管線
US9843813B2 (en) Delayed chroma processing in block processing pipelines
US10757437B2 (en) Motion estimation in block processing pipelines
US9351003B2 (en) Context re-mapping in CABAC encoder
US9571846B2 (en) Data storage and access in block processing pipelines
US9224187B2 (en) Wavefront order to scan order synchronization
US9224186B2 (en) Memory latency tolerance in block processing pipelines
US9392292B2 (en) Parallel encoding of bypass binary symbols in CABAC encoder
US9106888B2 (en) Reducing quantization artifacts using neighbor-based weighted dithering
US20150092855A1 (en) Skip thresholding in pipelined video encoders
US9299122B2 (en) Neighbor context processing in block processing pipelines
US9336558B2 (en) Wavefront encoding with parallel bit stream encoding
US9218639B2 (en) Processing order in block processing pipelines
US20160007046A1 (en) Estimating rate costs in video encoding operations using entropy encoding statistics
US9305325B2 (en) Neighbor context caching in block processing pipelines
TWI583180B (zh) 具有上下文切換之視訊編碼器