專利名稱:用于直接存儲器訪問的圖像數(shù)據(jù)結構的制作方法
技術領域:
本發(fā)明涉及數(shù)據(jù)處理器的組織與操作,尤其涉及諸如對于數(shù)據(jù)處理器是局部的存儲器的第一存儲器與另一存儲器之間圖像數(shù)據(jù)的傳送。
背景技術:
通常需要從存儲器傳送大量數(shù)據(jù)到處理器進行處理以產(chǎn)生用于顯示的高質量圖像,尤其是顯示速率和分辨率等于或超過標準電視接收機、錄像機(VTR)、數(shù)字視盤(DVD)播放器等的視頻圖像。
近年來,諸如由國際標準化組織(ISO)所采用的、通常被稱為MPEG-2(運動圖像專家組)的標準的數(shù)字視頻壓縮標準已被開發(fā),以降低顯示包含視頻圖像、具有可接受質量的圖像所需的數(shù)據(jù)量。
然而,盡管降低了需要從存儲器向處理器傳送的數(shù)據(jù)量,但是某些問題仍然存在,其導致圖像數(shù)據(jù)傳送操作低效,并且可能導致影響圖像處理性能的瓶頸。
提高圖像處理系統(tǒng)的性能的特別挑戰(zhàn)是通過直接存儲器訪問控制器(DMAC)降低傳送用于處理圖像的數(shù)據(jù)的開銷量。DMAC通常具有被設計成能處理主存儲器和局部存儲器之間的總線上預定最小尺寸的數(shù)據(jù)的傳送的硬件,這樣的最小尺寸被稱作“硬件傳送尺寸”。這樣的操作通常較好地適合于指令流和相關數(shù)據(jù)的各部分從主存儲器到處理器的局部存儲器的傳送,因為指令流中的指令通常占用存儲器的鄰接區(qū),相關數(shù)據(jù)也一樣。因此,可以以DMAC的硬件傳送尺寸為單位傳送指令和/或相關數(shù)據(jù)。
然而,圖像數(shù)據(jù)不是這樣的。就圖像數(shù)據(jù)而言,將被處理的數(shù)據(jù),例如MPEG-2數(shù)據(jù)經(jīng)常被以不容易以DMAC的硬件傳送尺寸為單位在主存儲器與另一存儲器之間傳送的方式排列??梢源鎯ζ鞯脑S多行的形式在存儲器中排列數(shù)據(jù),從而需要基于逐行地獲取和存儲數(shù)據(jù)行。這導致了至少兩個問題。一個問題是DMAC必須執(zhí)行大量操作來將數(shù)據(jù)的所有行從一個存儲器傳送到另一個。DMAC通常被設計成能一次處理有限數(shù)量的數(shù)據(jù)傳送操作。傳送例如從處理器一次接收的數(shù)據(jù)的大量請求可能超過DMAC的能力,并且使DMAC拒絕請求。反過來,這可以使處理器停止提交請求,直到傳送請求被接受。另一個問題是存儲器的行通常小于DMAC的硬件傳送尺寸。例如,在一個系統(tǒng)中,圖像數(shù)據(jù)的行具有16字節(jié)存儲器,而硬件傳送尺寸是128字節(jié)。在這種情況下,因為只有包含在存儲器的行中的16字節(jié)是有用的,所以通過一個傳送操作(128字節(jié))傳送的數(shù)據(jù)的較大百分比(87.5%)被丟棄。因此,在這些條件下,系統(tǒng)被說成具有12.5%的“總線效率”。
因此,期望提供一種傳送數(shù)據(jù)的系統(tǒng)及方法,其降低由直接存儲器訪問控制器(DMAC)執(zhí)行的用于傳送圖像數(shù)據(jù)的傳送操作的數(shù)量,并且其將傳送圖像數(shù)據(jù)的總線效率提高到比之前高更多的水平。
發(fā)明內(nèi)容
根據(jù)本發(fā)明一個方面,提供了一種用于在第一存儲器與可由處理器訪問的第二存儲器之間傳送用于圖像的處理的數(shù)據(jù)的方法。根據(jù)這樣的方法,在第一存儲器中提供用于該圖像的處理的數(shù)據(jù),所述數(shù)據(jù)被組織成多個塊,其中每個塊涉及該圖像的一部分。由直接存儲器訪問控制器在第一存儲器和第二存儲器之間以塊為單位傳送至少一些數(shù)據(jù)。
根據(jù)本發(fā)明的另一個方面,提供了一種能處理用于圖像的顯示的數(shù)據(jù)的處理器,所述數(shù)據(jù)被組織成存儲在第一存儲器中的多個塊。根據(jù)這個方面,處理器能控制直接存儲器訪問控制器從第一存儲器向能由處理器訪問的第二存儲器以塊為單位傳送數(shù)據(jù),該處理器進一步能從第二存儲器訪問數(shù)據(jù)以處理數(shù)據(jù)。
根據(jù)本發(fā)明的另一個方面,提供了一種系統(tǒng),包括處理器和能存儲用于處理器對圖像的處理的數(shù)據(jù)的第一存儲器,所述數(shù)據(jù)被組織成多個塊,以及能由處理器訪問的第二存儲器。系統(tǒng)進一步包括能在第一存儲器與第二存儲器之間以塊為單位傳送至少一些數(shù)據(jù)的直接存儲器訪問控制器。
根據(jù)本發(fā)明的另一個方面,提供了一種系統(tǒng),包括多個處理器,每個處理器能處理用于圖像的顯示的數(shù)據(jù),所述數(shù)據(jù)被組織成存儲在主存儲器中的多個塊。根據(jù)這個方面,系統(tǒng)進一步包括能應多個處理器中的處理器的請求在主存儲器和專用于請求方處理器的局部存儲器之間以塊為單位傳送至少一些數(shù)據(jù)的直接存儲器訪問控制器。
根據(jù)本發(fā)明的另一個方面,提供了一種系統(tǒng),包括多個處理器和由該多個處理器共享的主存儲器,該主存儲器能存儲用于該處理器的至少一個對圖像的處理的數(shù)據(jù),所述數(shù)據(jù)被組織成多個塊。根據(jù)本發(fā)明的這個方面,系統(tǒng)進一步包括多個局部存儲器,每個局部存儲器專用于該多個處理器中的特定處理器,以及能應該多個處理器中的處理器的請求在主存儲器和專用于請求方處理器的局部存儲器之間以塊為單位傳送至少一些數(shù)據(jù)的直接存儲器訪問控制器。
根據(jù)本發(fā)明的另一個方面,提供了一種記錄介質,其上記錄有用于執(zhí)行在第一存儲器與能由處理器訪問的第二存儲器之間傳送用于圖像的處理的數(shù)據(jù)的方法的指令。該方法包含在第一存儲器中提供用于該圖像的處理的數(shù)據(jù),所述數(shù)據(jù)被組織成多個塊,其中每個塊涉及該圖像的一部分。由直接存儲器訪問控制器在第一存儲器和第二存儲器之間以塊為單位傳送至少一些數(shù)據(jù)。
圖1根據(jù)本發(fā)明圖解了計算機網(wǎng)絡的總體結構。
圖2是根據(jù)本發(fā)明圖解處理器單元(PE)的結構的圖例。
圖3是根據(jù)本發(fā)明圖解寬帶引擎(BE)的結構的圖例。
圖4是根據(jù)本發(fā)明圖解附連處理單元(APU)的結構的圖例。
圖5是根據(jù)本發(fā)明的一個實施例圖解如圖所示連接到網(wǎng)絡的處理器的圖例。
圖6A是圖解基于MPEG-2的視頻編碼的原理的圖例。
圖6B是圖解針對逐行掃描視頻的過去幀和未來幀的運動補償模塊的組織的圖例。
圖7是圖解針對隔行掃描視頻的過去幀的奇和偶場以及未來幀的奇和偶場的運動補償模塊的組織的圖例。
圖8圖解了傳送運動補償模塊的數(shù)據(jù)的光柵掃描方法。
圖9圖解了運動補償模塊在存儲器數(shù)據(jù)邊界上的重疊。
圖10圖解了在本發(fā)明的一個實施例中使用的宏模塊數(shù)據(jù)結構(MDS)的組織。
圖11根據(jù)本發(fā)明的實施例圖解了在DMA傳送邊界上宏模塊數(shù)據(jù)結構的重疊。
具體實施例方式
以下本發(fā)明的實施例的描述結合計算機系統(tǒng)可被更好地理解,所述計算機系統(tǒng)中具體實施例被有利地采用,并且其它實施例有利地組成其一部分。圖1示出了這樣的計算機系統(tǒng)101的整體體系結構。
如該圖所示,系統(tǒng)101包含多個計算機和計算設備連接到的網(wǎng)絡104。網(wǎng)絡104可以是局域網(wǎng)(LAN)、諸如因特網(wǎng)的全球網(wǎng),或任何其他計算機網(wǎng)絡。
連接到網(wǎng)絡104的計算機和計算設備(網(wǎng)絡的“成員”)包括例如客戶端計算機106,服務器計算機108,個人數(shù)字助理(PDA)110,數(shù)字電視(DTV)112以及其它有線或無線計算機和計算設備。由網(wǎng)絡104的成員使用的處理器用相同的公共計算模塊構建。這些處理器最好也全部具有相同的指令集體系結構(ISA),并且根據(jù)相同的指令集執(zhí)行處理。包括在任何特定處理器內(nèi)的模塊的數(shù)量取決于處理器所需的處理能力。
例如,因為系統(tǒng)101的服務器108比客戶端106執(zhí)行更多的數(shù)據(jù)和應用程序的處理,所以服務器108比客戶端106包含更多計算模塊。另一方面,PDA 110執(zhí)行最少量的處理。因此,PDA 110包含最小數(shù)量的計算模塊。DTV 112執(zhí)行處理的水平處于客戶端106和服務器108之間。因此,DTV 112包含的計算模塊的數(shù)量在客戶端106和服務器108所包含的數(shù)量之間。如下面討論的,每個計算模塊包含一個處理控制器,以及用于執(zhí)行通過網(wǎng)絡104傳輸?shù)臄?shù)據(jù)和應用程序的并行處理的多個相同處理單元。
系統(tǒng)101的該同構配置有利于提高適應能力、處理速度和處理效率。因為系統(tǒng)101的每個成員都利用一個或多個(或某部分)相同計算模塊執(zhí)行處理,所以執(zhí)行實際數(shù)據(jù)和應用程序處理的特定計算機或計算設備是不重要的。此外,特定應用程序和數(shù)據(jù)的處理可以在網(wǎng)絡的成員間分享。通過在整個系統(tǒng)唯一地標識包括由系統(tǒng)101處理的數(shù)據(jù)和應用程序的單元,無論該處理在哪兒發(fā)生,處理結果可被送到請求處理的計算機或計算設備。因為執(zhí)行該處理的模塊具有公共結構并且使用公共ISA,所以可避免附加軟件層實現(xiàn)處理器間兼容性的計算負擔。該結構和程序設計模型有利于達到執(zhí)行例如實時多媒體應用所需要的處理速度。
為進一步利用由系統(tǒng)101促進的處理速度和效率,由該系統(tǒng)處理的數(shù)據(jù)和應用程序被封裝成唯一標識的、統(tǒng)一格式化的軟件單元102。每個軟件單元102包含或可以包含應用程序和數(shù)據(jù)。每個軟件單元還包含ID,以便在整個網(wǎng)絡104和系統(tǒng)101中全局地標識單元。軟件單元的這種結構統(tǒng)一性,以及軟件單元在整個網(wǎng)絡上的唯一標識有利于網(wǎng)絡的任何計算機或計算設備上的應用程序和數(shù)據(jù)的處理。例如,客戶端106可形成軟件單元102,但是由于客戶端106的有限處理能力,客戶端106將該軟件單元傳送到服務器108來處理。因此,基于網(wǎng)絡上處理資源的可用性,軟件單元可以在整個網(wǎng)絡104上遷移以進行處理。
系統(tǒng)101的處理器和軟件單元的同構結構還避免了當前異構網(wǎng)絡的許多問題。例如,可以避免設法允許在利用任何指令集的任何ISA,例如諸如Java虛擬機的虛擬計算機上處理應用程序的低效程序設計模型。因此,系統(tǒng)101可以實現(xiàn)比當前網(wǎng)絡更有效和高效的寬帶處理。
網(wǎng)絡104的所有成員的基本處理模塊是處理器單元(PE)。圖2圖解了PE的結構。如該圖所示,PE 201包括處理單元(PU)203、直接存儲器訪問控制器(DMAC)205、以及此處也被稱為附連處理單元(APU)的多個協(xié)同處理單元(SPU),即APU 207、APU 209、APU 211、APU 213、APU 215、APU 217、APU 219和APU 221。本地PE總線223在APU、DMAC 205和PU 203間傳送數(shù)據(jù)和應用程序。局部PE總線223可以具有例如常規(guī)結構,或被實現(xiàn)成分組交換網(wǎng)絡。雖然需要更多的硬件,但實現(xiàn)成分組交換網(wǎng)絡提高了可用帶寬。
利用用于實現(xiàn)數(shù)字邏輯的各種方法可以構成PE 201。然而,PE201最好被構成在硅質基底上采用互補金屬氧化物半導體(CMOS)的單一集成電路。基底的替代材料包括砷化鎵、鎵鋁的砷化物和其它采用各種摻雜劑的所謂III-V化合物。PE 201也可利用超導材料,例如快速單磁通量子(RSFQ)邏輯來實現(xiàn)。
PE 201通過高帶寬存儲器連接227與動態(tài)隨機訪問存儲器(DRAM)225緊密相關。DRAM 225充當PE 201的主存儲器。雖然DRAM 225最好是動態(tài)隨機訪問存儲器,但DRAM 225可以用其它手段實現(xiàn)為例如靜態(tài)隨機訪問存儲器(SRAM)、磁性隨機訪問存儲器(MRAM)、光存儲器或全息存儲器。DMAC 205有利于DRAM 225與PE 201的APU和PU之間數(shù)據(jù)的傳送。如下面進一步討論的,DMAC 205在DRAM 225中為每個APU指定一個獨占區(qū)域,只有該APU可以往該區(qū)域寫數(shù)據(jù)和從中讀數(shù)據(jù)。這個獨占區(qū)域被稱為“沙箱”。
PU 203可以是例如能夠獨立進行數(shù)據(jù)和應用程序處理的標準處理器。在操作中,PU 203調(diào)度并且協(xié)調(diào)由APU進行的數(shù)據(jù)和應用程序的處理。APU最好為單指令多數(shù)據(jù)(SIMD)處理器。在PU 203的控制下,APU以并行并且獨立的方式執(zhí)行這些數(shù)據(jù)和應用程序的處理。DMAC 205控制由PU 203和APU對存儲在共享DRAM 225中的數(shù)據(jù)和應用程序的訪問。雖然PE 201最好包括8個APU,但是根據(jù)所需的處理能力,PE中可以采用更多或更少數(shù)量的APU。并且,諸如PE 201的若干PE可被連接或封裝在一起以提供增強的處理能力。
例如,如圖3所示,可將四個PE一起封裝或連接在例如一個或多個芯片封裝內(nèi),以形成用于網(wǎng)絡104的成員的單個處理器。這種結構被稱為寬帶引擎(BE)。如圖3所示,BE 301包含四個PE,即PE 303、PE305、PE 307和PE 309。通過BE總線311進行這些PE之間的通信。寬帶寬存儲器連接313提供共享DRAM 315與這些PE之間的通信。就BE總線311而言,能夠通過DRAM 315和這個存儲器連接進行BE 301的PE間的通信?;蛘?,DRAM 315可被并入BE 301,其具有到BE總線311的連接,在這種情況下,DRAM 315可由PE 303、305、307和309中的每個經(jīng)由用于對其和從其傳送數(shù)據(jù)的總線311進行訪問。
輸入/輸出(I/O)接口317和外部總線319提供寬帶引擎301與網(wǎng)絡104的其他成員之間的通信。BE 301的每個PE以類似于由PE的APU執(zhí)行的并行和獨立數(shù)據(jù)和應用程序處理的并行和獨立方式執(zhí)行數(shù)據(jù)和應用程序的處理。
圖4說明了APU的結構。APU 402包括局部存儲器406,寄存器410,四個浮點單元412和四個整數(shù)單元414。然而,根據(jù)所需要的處理能力,可以使用更多或更少數(shù)目的浮點單元412和整數(shù)單元414。在優(yōu)選實施例中,局部存儲器406包含128千字節(jié)的存儲量,并且寄存器410的容量是128×128位。浮點單元412最好以320億(32 billion)次浮點運算每秒(32 GFLOPS)的速度工作,整數(shù)單元414最好以320億次運算每秒(32 GOPS)的速度工作。
局部存儲器402不是高速緩沖存儲器。局部存儲器402最好被構造成SRAM。對APU的高速緩存一致性支持是沒有必要的。PU可能需要對于由PU啟動的直接存儲器訪問的高速緩存一致性支持。然而,對于由APU啟動的直接存儲器訪問或針對外部設備的存取,則不需要高速緩存一致性支持。
APU 402還包含總線404,用于向和從APU傳送應用程序和數(shù)據(jù)。在優(yōu)選實施例中,該總線的寬度是1024位。APU 402還包括內(nèi)部總線408、420和418。在優(yōu)選實施例中,總線408的寬度是256位,并且提供局部存儲器406與寄存器410之間的通信。APU 402通常能夠以比訪問DRAM 225更快的速度訪問局部存儲器??偩€420和418分別提供寄存器410和浮點單元412之間,寄存器410和整數(shù)單元414之間的通信。在優(yōu)選實施例中,從寄存器410到浮點單元或整數(shù)單元的總線418和420的寬度是384位,從浮點或整數(shù)單元到寄存器410的總線418和420的寬度是128位。這些總線中,從寄存器410到浮點或整數(shù)單元的寬度比從這些單元到寄存器410的寬度大,這樣可適應處理期間來自寄存器410的較大數(shù)據(jù)流。每次計算最多需要三個字。然而,每次計算的結果通常只是一個字。
圖5根據(jù)本發(fā)明的另一個實施例圖解了可選處理器500。如其中所示,處理器系統(tǒng)500包括中央處理器單元(“CPU”)505,其可包括能夠以單指令單數(shù)據(jù)(“SISD”)方式執(zhí)行指令的單處理器單元?;蛘?,CPU 505包含能夠以單指令多數(shù)據(jù)(“SIMD”)方式執(zhí)行指令的多個處理器單元。在另一個可選實施例中,CPU 505可包含多個獨立或半獨立處理器單元(未示出),其每個能夠以或多或少獨立于任何其他處理器單元的方式執(zhí)行指令。在另一個可選實施例中,CPU 505可具有代表前面描述的處理器組織類型的組合的結構。CPU 505優(yōu)選地配有存儲用于CPU 505對一個或多個程序的執(zhí)行的指令和數(shù)據(jù)的高速緩存502。
雖然圖形處理器單元非必需的單元,但是處理器500優(yōu)選地也包含圖形處理器單元(“GPU”)515,GPU是特別為圖形數(shù)據(jù)的高效處理而設計的。在這種情況下,GPU 515可處理處理器500的大部分圖像數(shù)據(jù)處理任務,并且CPU 505可處理大部分其它任務?;蛘?,CPU 505和GPU 515可以協(xié)同處理圖像數(shù)據(jù)。類似于CPU 505,CPU 515優(yōu)選地配有存儲用于GPU 515對一個或多個程序的執(zhí)行的指令和數(shù)據(jù)的高速緩存512。
雖然CPU 505可以通過如上所述的許多方式的任何一種來組織,但是為簡單起見,下面的描述將集中于其中CPU 505包含單處理器單元,以及其中GPU 515包含單處理器單元的結構。
當存在時,CPU 505和GPU 515被連接到總線504,以向和從CPU505和GPU 515傳送數(shù)據(jù)、指令、命令和地址到存儲器510。存儲器510優(yōu)選地通過任何合適的固態(tài)技術來實現(xiàn),包括但不限于動態(tài)隨機訪問存儲器(DRAM)、靜態(tài)隨機訪問存儲器(SRAM)、快擦寫存儲器、磁電阻隨機訪問存儲器(MRAM)。
可包含操作數(shù)和/或指令的數(shù)據(jù)的傳送可以作為在連接到總線504的直接存儲器訪問控制器(“DMAC”)520的控制下的直接存儲器訪問(“DMA”)操作來發(fā)生,所述操作發(fā)生在存儲器510與同CPU 505相關聯(lián)的相應高速緩沖存儲器502,或與CPU515相關聯(lián)的高速緩沖存儲器512之間。換言之,在執(zhí)行傳送所需的存儲器510與高速緩沖存儲器502(或高速緩沖存儲器512)之間的通信的每個步驟期間,DMAC 520無需CPU 505或GPU 515的介入就執(zhí)行此類數(shù)據(jù)的傳送。處理器500優(yōu)選地還包含用于產(chǎn)生在顯示屏幕595上顯示的圖像的顯示控制器590??偩€504進一步被連接到用于傳送諸如數(shù)據(jù)、指令、命令和地址的信息到外部存儲設備540的輸入輸出接口(“I/O接口”)530。存儲器510與外部存儲設備540之間的傳送被優(yōu)選地作為在DMAC 520的控制下的直接存儲器訪問操作來執(zhí)行。
I/O接口530被進一步連接到用于傳送諸如數(shù)據(jù)、指令、命令和地址的信息到諸如另一個聯(lián)網(wǎng)處理器550的其它設備的網(wǎng)絡535。網(wǎng)絡535可以是任何類型網(wǎng)絡。例如,網(wǎng)絡535不局限于具有局域網(wǎng)(LAN)拓撲或廣域網(wǎng)(WAN)拓撲的網(wǎng)絡,并且不局限于有線或無線的網(wǎng)絡。進一步地,網(wǎng)絡535的類型不局限于那些把計算機之間的通信傳送作為主要目的的網(wǎng)絡,例如網(wǎng)際協(xié)議(IP)網(wǎng)絡、X.25的分組交換,以及諸如異步傳輸模式(“ATM”)網(wǎng)絡的信元傳送網(wǎng)絡。進一步地,網(wǎng)絡535不局限于任何特定類型的網(wǎng)絡,例如包含但不限于蜂窩數(shù)字分組數(shù)據(jù)(“CDPD”)、通用分組無線業(yè)務(“GPRS”)的無線網(wǎng)絡,而且也包括諸如公共交換電話網(wǎng)(“PSTN”)、有線通信網(wǎng)絡、衛(wèi)星通信網(wǎng)絡等的更加通用的傳統(tǒng)網(wǎng)絡。
因為處理器550與處理器500之間的通信必須通過網(wǎng)絡535,所以處理器550可被稱為“遠程”處理器。因為涉及處理器500和550,所以術語“遠程”沒有其它意義。換言之,除了通信必須通過網(wǎng)絡535之外,術語“遠程”不表示或暗示處理器500與處理器550之間的任何最小距離,并且不表示或暗示處理器500與處理器550之間的通信的任何難度。
在一個實施例中,處理器550以相同于或類似于處理器500的方式進行內(nèi)部組織,其具有DMAC、內(nèi)部存儲器和至少一個具有高速緩存的CPU,在這種情況下,可以說是“同構”設備的網(wǎng)絡?;蛘撸幚砥?50以不同方式進行組織,在這種情況下,網(wǎng)絡為“異構”的。例如,處理器550可從其內(nèi)部組構中省略一個或多個以下單元固態(tài)隨機訪問存儲器,DMAC或高速緩存。處理器500和處理器550之間的數(shù)據(jù)傳送優(yōu)選地例如在DMAC 520的控制或協(xié)助下通過直接存儲器訪問來執(zhí)行。
此處所描述的本發(fā)明的實施例找到諸如主存儲器的存儲器與諸如局部存儲器的另一存儲器之間的數(shù)據(jù)傳送的具體應用,以支持數(shù)據(jù)處理。例如在具體實施例中,在諸如DRAM225(圖2)的存儲器與APU(圖4)的局部存儲器406之間傳送數(shù)據(jù)。或者,在一個例子中,在存儲器510與GPU 515(圖5)的高速緩存512之間傳送數(shù)據(jù)。本發(fā)明的具體實施例被用于此類數(shù)據(jù)傳送以支持根據(jù)諸如MPEG-2的壓縮格式的圖像數(shù)據(jù)的編碼和/或解碼。根據(jù)MPEG-2編碼的圖像數(shù)據(jù)的組織和流程的簡要描述將有助于對如下所述的本發(fā)明的實施例的理解。
MPEG-2規(guī)定了視頻和音頻編碼格式。MPEG-2編碼視頻的原理在圖6A中說明。如其中所示,諸如可被記錄在數(shù)字視盤(DVD)上的來自影片的畫面的MPEG-2編碼視頻序列包含“圖片”組GOP0,GOP1,GOP2,…,GOPn的有序序列,其中每組中的“圖片”包含在諸如監(jiān)視器或電視接收機的顯示設備上顯示實際視頻幀序列所需的所有編碼圖像信息。由于根據(jù)MPEG-2編碼,每個圖片組(GOP)包含多達三個的不同類型的“幀”,每個類型代表實際可顯示視頻幀或圖像的像素的編碼壓縮版本。為便于引用,顯示在監(jiān)視器或電視接收機上的視頻幀以下將被簡稱為“圖像”,以區(qū)別于GOP的編碼“幀”。不同類型的幀允許視頻數(shù)據(jù)被暫時地壓縮。換言之,壓縮視頻數(shù)據(jù)以使得只有少數(shù)的“I”類型(內(nèi)部)GOP的幀具有用于編碼圖像的完全信息,而具有P(預測)或B(雙向插值)類型的大部分幀僅包含表明幀(P)或(B)與在其前面或跟隨其后的一個或多個其它幀之間的差值的數(shù)據(jù)。具體B型幀的解碼要求來自前面幀和后繼幀的相應數(shù)據(jù)可用于解壓縮其中的圖像數(shù)據(jù)。
B和P型幀是通常最經(jīng)常發(fā)生在GOP中的幀。因此,它們是視頻序列的顯示期間最頻繁訪問的類型,并且是從一類存儲器,例如與處理器緊密相關的局部存儲器,例如高速緩存,以及例如計算系統(tǒng)的主存儲器的另一類存儲器最頻繁訪問的類型。
具體例子由B型幀610和I型幀615之間,以及B型幀610和P型幀620之間所繪出的曲線箭頭示出。當這種B型幀610在處理器處排隊等待解碼時,為了顯示與B幀610相應的圖像,必須訪問B幀610引用的I幀615和P幀620。
如圖6A進一步所示的,GOP的每個編碼幀被組織成“時間片(slice)”,每個時間片代表圖像的水平延伸部分。例如0片,1片,…,n片的每一片被組織成各個宏模塊MB0,MB1,MB2,MB3,…,MBn的有序序列。尤其在B和P型幀的情況下,例如MB1的每個宏模塊則包含代表圖像的16×16尺寸像素陣列的壓縮數(shù)據(jù)。每個宏模塊進一步包含在亮度(Y)數(shù)據(jù)的1,2,3和4處標記的一組四個“塊”625,每個塊包含有關圖像的8x8像素陣列的灰度值的編碼壓縮信息。每個宏模塊進一步包含這樣的塊,其包含兩種針對圖像的相同16×16像素區(qū)域的編碼色差信息,即色度藍數(shù)據(jù)和色度紅數(shù)據(jù)。色度藍(Cb)數(shù)據(jù)和色度紅(CR)數(shù)據(jù)每個是一個塊,而不是四個塊,和亮度數(shù)據(jù)(Y)情況一樣,因為MPEG-2對人機接口研究的結論允許每個方向上的圖像彩色清晰度減少一半。利用來自GOP的前面或“過去”幀的宏模塊,以及后繼或“未來”幀的宏模塊的信息執(zhí)行B型幀的解碼。該解碼在宏模塊的水平執(zhí)行。
圖6B圖解了根據(jù)涉及逐行掃描,即非隔行視頻幀的圖像數(shù)據(jù)的運動補償模塊(“MCB”)的組織。如圖6B明顯所示,數(shù)據(jù)的組織對過去或未來幀來說不是唯一的。典型地,現(xiàn)在代表″未來″圖像的特定幀最終將變成“當前”幀,并且接著稍后變成“過去”幀。圖6B示出了一個涉及過去幀的MCB 650和涉及未來幀的MCB 660。這樣的MCB優(yōu)選地包含可用于特定目的的數(shù)據(jù),例如用于提供從一個幀到另一個的圖像的運動的運動補償。如圖6B所示,MCB 650包含17字節(jié)×17字節(jié)陣列的亮度(Y)數(shù)據(jù),以及9字節(jié)×9字節(jié)陣列的色度藍(Cb)數(shù)據(jù)和9字節(jié)×9字節(jié)陣列的色度紅(Cr)數(shù)據(jù)。因為宏模塊(圖6A)每個包含16×16陣列亮度(Y)數(shù)據(jù)和每個Cr數(shù)據(jù)和Cb數(shù)據(jù)的一個8×8陣列,所以特定MCB 650或660包含覆蓋兩個或更多宏模塊的數(shù)據(jù)。
當GOP中的當前幀是B型幀時,必須訪問一個過去MCB 650和一個未來MCB 660。兩個MCB 650,660一起包含六個不同字節(jié)陣列的數(shù)據(jù),即分別存儲并且通常必須由不同獲取操作來取出的數(shù)據(jù)陣列。
圖7圖解了隔行視頻的過去幀的其它類型的MCB 700、710,以及隔行視頻的未來幀的MCB 720,730內(nèi)的數(shù)據(jù)組織,這樣的隔行視頻為例如根據(jù)由國家電視系統(tǒng)委員會(NTSC)采用的標準格式化的視頻。即,圖7圖解了隔行視頻的過去幀的奇場的MCB 700的數(shù)據(jù)組織,以及過去幀的偶場的MCB 710的數(shù)據(jù)組織。類似地,圖7示出了未來幀的奇場的MCB 720,以及未來幀的偶場的MCB 730。在隔行視頻的情況下,MCB 700、710、720和730的每個都包含9字節(jié)×17字節(jié)陣列的亮度(Y)數(shù)據(jù),以及5字節(jié)×9字節(jié)陣列的色度藍(Cb)數(shù)據(jù)和5字節(jié)×9字節(jié)陣列的色度紅(Cr)數(shù)據(jù)。不同于上述情況,當B幀將被解碼時,每個均針對隔行視頻的過去幀和未來幀的奇和偶場的四個MCB 700、710、720和730必須被訪問。四個MCB 700,710,720和730一起包含12個不同字節(jié)數(shù)據(jù)陣列,即分別存儲并且通常必須由分別的獲取指令來獲取的數(shù)據(jù)陣列。
由此處所描述的本發(fā)明的實施例所克服的一個缺點是需要許多數(shù)據(jù)傳送以允許與一個圖像的當前幀的正好一個宏模塊相關聯(lián)的圖像信息的解碼。正如參考圖2和圖4所指出的,根據(jù)圖1-4中圖解的系統(tǒng)組織,直接存儲器訪問(DMA)傳送方法是DRAM 225與處理器單元(PU)的每個SPU的局部存儲器406之間優(yōu)選的。同樣,通過DMAC 520的直接存儲器訪問是向和從存儲器510以及向圖5中所圖解的替代結構中的高速緩沖存儲器502或512傳送數(shù)據(jù)的優(yōu)選方式。圖8圖解了一種訪問包含在諸如圖7中所示出的MCB 700字節(jié)陣列中的數(shù)據(jù)的方法。圖8中示例性地示出,用涉及針對Y數(shù)據(jù)810的每個單獨行801,802,803,…,809的分別傳送操作的光柵掃描方法來傳送Y(亮度)數(shù)據(jù)810,繼之以Cr(色度紅)數(shù)據(jù)820的光柵掃描(單獨行811,812,813等的傳送),以及Cb(色度藍)數(shù)據(jù)830的單獨行821,822和823等的傳送。因此,對于圖8中所示的MCB 800,Y數(shù)據(jù)的陣列810、Cr數(shù)據(jù)的陣列820和Cb數(shù)據(jù)的陣列830的每一行通常在由DMAC,例如DMAC205(圖2)或DMAC 520(圖5)控制的分別操作中被傳送。參考圖2和4,對于Cr數(shù)據(jù),因為陣列的每行是9字節(jié)寬,所以DMAC 205逐行地執(zhí)行DRAM 225與局部存儲器406之間的數(shù)據(jù)傳送,其中DMAC 205傳送包含行內(nèi)9字節(jié)色度數(shù)據(jù)的16字節(jié)數(shù)據(jù)。因為隔行掃描場的Cr數(shù)據(jù)塊包含五行,所以為了訪問對于正好一個B型幀的正好一個MCB的正好一個場的Cr數(shù)據(jù),五個這樣的16字節(jié)傳送必須由DMAC 205來執(zhí)行。同樣,Cb數(shù)據(jù)被以同樣方式傳送,并且也需要DMAC執(zhí)行五個傳送操作。然而,就Y數(shù)據(jù)而言,因為陣列的每一行是比16字節(jié)傳送寬度大的17字節(jié)寬,所以執(zhí)行32字節(jié)傳送操作。因此,9行Y數(shù)據(jù)被逐行傳送,每一行由32字節(jié)傳送操作在DRAM 225(圖2)與局部存儲器406(圖4)之間傳送。在另一個例子中,參考圖5,由DMAC 520在存儲器510與高速緩沖存儲器502或高速緩沖存儲器512之間逐行傳送9行“Y”數(shù)據(jù)。在另一個例子中,在DMAC 520的控制下,在外部存儲器540與存儲器510之間逐行傳送9行Y數(shù)據(jù)。
由于諸如存儲器系統(tǒng)的成本以及需要以高頻率操作,即以高傳送速率執(zhí)行數(shù)據(jù)傳送的設計約束,DMA控制器通常被硬件編碼,或由固件或中間件編程以在每一傳送操作中傳送最低量數(shù)據(jù)。例如,DMAC205(圖2)被優(yōu)選地硬件編碼以向或從存儲器一次傳送最少128相連字節(jié)數(shù)據(jù)。不幸的是,對于單獨行需要傳送的數(shù)據(jù)量,即對于Cb色度數(shù)據(jù)或Cr色度數(shù)據(jù)的行的16字節(jié),以及對于Y數(shù)據(jù)的行的32字節(jié)比128字節(jié)的數(shù)據(jù)硬件傳送尺寸少得多。這些相同考慮適用于DMAC 520的硬件傳送尺寸,其也示例性地比將被傳送的單獨行的長度大得多。在這種情況下,對于16字節(jié)傳送操作,DMAC 205(圖2)的硬件在DRAM225(圖2)與局部存儲器406(圖4)之間傳送128字節(jié)數(shù)據(jù),然后丟棄128傳送數(shù)據(jù)字節(jié)中不需要的部分。因此,在這種情況下,傳送的總量(128字節(jié))中只有16字節(jié)是單獨行實際需要的。該關系提供了針對由DMAC 205向和從DRAM 225傳送的數(shù)據(jù)的利用率的總線效率測量。因此,當單獨16字節(jié)寬行數(shù)據(jù)由每次128字節(jié)的硬件傳送操作傳送時,總線效率為16/128,即12.5%。相反,由每一硬件傳送所傳送的數(shù)據(jù)的87.5%被丟棄了。在32字節(jié)寬數(shù)據(jù)傳送情況下,因為數(shù)據(jù)的可用部分(32字節(jié))是由硬件傳送的數(shù)據(jù)的總數(shù)的四分之一(32/128),所以總線效率提高到25%??偩€效率在處理器500(圖5)中受類似地影響,其中傳送的每一行的尺寸,例如16字節(jié)僅是DMAC 520的硬件傳送尺寸的一小部分。
此外,顯然,利用光柵掃描方法要求大量數(shù)據(jù)行必須被傳送以訪問過去和未來幀二者的奇和偶隔行掃描場二者的每個MCB的Y、Cr和Cb數(shù)據(jù)。再次參照圖7,受DMAC控制的數(shù)據(jù)傳送的最小數(shù)量等于其中所示的每一MCB的每個塊的行的數(shù)量。因此,因為四個MCB中的每個的每個Y塊具有9行,所以為了訪問四個場的對應MCB 700、710、720和730的Y數(shù)據(jù),至少9+9+9+9=36行需要傳送。然而,因為四個MCB中的每個的每個Cr塊具有五行,所以為了訪問四個場的MCB700、710、720和730的對應Cr數(shù)據(jù),至少5+5+5+5=20行需要傳送。類似地,因為四個MCB中的每個的每個Cb塊具有五行,所以為了訪問四個場的MCB 700、710、720和730的對應Cb數(shù)據(jù),至少5+5+5+5=20行需要傳送??偣?,為了解碼GOP的B幀,需要76個DMA傳送操作以訪問過去和未來幀的奇和偶場的MCB。
圖9圖解了光柵掃描方法的另一個復雜情況,其中數(shù)據(jù)的MCB900并不總是在存儲器中沿著數(shù)據(jù)的16字節(jié)寬區(qū)域910、912、914和916的邊界對齊。在該情況下,例如參照圖6B或圖7所示出以及如上所述的,塊900可以是幀的或幀的場的數(shù)據(jù)的Y塊、Cr塊或Cb塊。如圖9所示,當這樣的失準發(fā)生時,必須通過DMA傳送從所有四個區(qū)域910、912、914和916訪問數(shù)據(jù)。參照圖8如上所述,如果對于將被傳送的數(shù)據(jù)的每個塊的每行將發(fā)生這樣的失準,顯然將需要4×76=304次傳送。作為具有DMA設置開銷形式的許多DMA請求的結果,發(fā)生性能下降。并且,當一次進行的傳送的數(shù)量超過DMAC組織的可接受隊列項的數(shù)量時,DMA操作被減慢。
為解決上述問題,根據(jù)本發(fā)明的實施例提供了具有新組織的宏模塊1000。根據(jù)該實施例,宏模塊1000的Y數(shù)據(jù)1002、Cr數(shù)據(jù)1004和Cb數(shù)據(jù)1006將被組合在一起作為連續(xù)數(shù)據(jù)結構1010,以使宏模塊數(shù)據(jù)結構(此后,“MDS”)能夠通過由DMA控制器,例如DMAC 205(圖2)或DMAC 520(圖5)控制的一個傳送操作來訪問。此外,MDS 1010包含某些流線化(streamlining)的特征,例如組織成16字節(jié)寬行,其中有24行。因此,編碼視頻幀的場(奇或偶)的MCB 700(圖7)所需的所有信息被存儲在MDS 1010中,MDS 1010具有24行數(shù)據(jù),每行具有16字節(jié),總尺寸為384字節(jié)。當這樣的數(shù)據(jù)量由DMAC 205(圖2)或由DMAC 520(圖5)傳送時,因為要傳送的384字節(jié)量數(shù)據(jù)是硬件傳送量(128字節(jié))的倍數(shù)(三倍),所以利用相對較少的硬件傳送操作可以完成該傳送。此外,因為每個128字節(jié)硬件傳送操作所傳送的所有數(shù)據(jù)作為請求傳送的數(shù)據(jù)被傳送到局部存儲器,沒有超過行的尺寸的過剩量,所以當這樣的MDS 1010被傳送時,實現(xiàn)了100%的總線效率。
以和針對圖7如上所述的相類似的方式,在隔行視頻的情況下,在B幀的MCB 700的情況下,顯然需要訪問四個MDS 1010,即針對過去幀的每個奇場和每個偶場各一個,以及針對未來幀的每個奇場和每個偶場各一個。如果每個MDS 1010沿著存儲器的邊界被完全對齊,只要每個傳送的尺寸是384字節(jié),則需要四個DMA傳送。然而,當每個MDS 1010沒有沿著存儲器,例如DRAM 225(圖2)或存儲器510(圖5)的邊界完全對齊時,則為了訪問每個MDS的完全信息,必須向和從存儲器進行更大量傳送。
本發(fā)明的實施例通過使每個DMA傳送操作傳送768數(shù)據(jù)字節(jié)而不是只有384字節(jié),考慮了失準的可能性,以使如被包含在兩個MDS中那樣傳送相同數(shù)據(jù)量。在圖11所示的768字節(jié)傳送操作傳送1和傳送2中,期望每次這樣的操作中傳送的數(shù)據(jù)位于相鄰的連續(xù)存儲器塊中。例如,如圖11所示,將被傳送的數(shù)據(jù)塊可以是彼此水平相鄰,或彼此垂直相鄰。在每次這樣的768字節(jié)傳送操作中,當數(shù)據(jù)在水平相鄰位置中被訪問時,數(shù)據(jù)作為兩個沿水平方向在16字節(jié)邊界1110處鄰接,并且具有以24行字節(jié)垂直間隔出現(xiàn)的垂直邊界1120的相鄰連續(xù)數(shù)據(jù)塊被傳送。
因此,當特定MDS 1010未對齊16字節(jié)邊界,并且也未對齊24行邊界時,因為由其訪問足夠數(shù)據(jù),所以MDS 1010仍然可以在僅僅兩個768字節(jié)DMA傳送操作中被訪問。再回到前面利用四個包含用于過去和未來幀的隔行視頻的奇和偶場的數(shù)據(jù)的宏模塊1000訪問用于運動補償處理的數(shù)據(jù)的例子,顯而易見,因為每個MDS需要最多兩個這樣的傳送操作,所以四個所需的MDS在最多8個768字節(jié)DMA傳送操作中可被訪問。
此外,訪問MDS所需的最多8個DMA傳送是有利地落在DMA控制器,例如DMAC 205(圖2),或DMAC 520(圖5)的隊列長度內(nèi)的較小數(shù)。由于硬件成本約束,通過設計限制DMA控制器的隊列長度。隊列長度代表一次可被排隊的未結束DMA傳送請求的最大數(shù)量。因此,例如在具有受限DMA隊列長度16的系統(tǒng)中,一次最多16個請求的傳送操作可以是未結束的。如果請求傳送操作的數(shù)量超過隊列長度,則其不能由DMA控制器提供服務。
在本實施例中,支持針對利用過去和當前幀的隔行視頻的運動補償處理所需要的最大8個傳送操作低于可允許DMA隊列項的最大數(shù)量16。因此,避免了DMA設置開銷,并且將不會因其而導致DMA性能降低。
雖然此處參考具體實施例已經(jīng)描述了本發(fā)明,但是可以理解,本實施例僅僅是本發(fā)明的原理和應用的說明。因此理解,在不偏離如附權利要求所定義的本發(fā)明的宗旨和范圍的前提下,可對圖解實施例作出許多修改,并且可產(chǎn)生其它結構。
權利要求
1.一種在第一存儲器與可由處理器訪問的第二存儲器之間傳送用于圖像的處理的數(shù)據(jù)的方法,包括在第一存儲器中提供用于該圖像的處理的數(shù)據(jù),所述數(shù)據(jù)被組織成多個塊,其中每個塊涉及該圖像的一部分;以及由直接存儲器訪問控制器在第一存儲器和第二存儲器之間以塊為單位傳送至少一些數(shù)據(jù)。
2.根據(jù)權利要求1的方法,其中該圖像具有由沿橫向的圖像寬度和沿垂直方向的圖像高度定義的區(qū)域,該圖像包含多個部分,并且每一部分具有小于該圖像寬度的寬度以及小于該圖像高度的高度。
3.如權利要求1所述的方法,其中第二存儲器是專用于該處理器的局部存儲器。
4.如權利要求1所述的方法,其中由所述塊之一表示的該圖像的每一部分是直線組成的。
5.如權利要求4所述的方法,其中由所述塊之一表示的該圖像的每一部分包含預定多個像素,其具有沿橫向布置的第一多個像素和沿垂直方向一個在另一個之上布置的第二多個像素,其中第一多個像素以及第二多個像素或者具有相同數(shù)量的像素,或者具有不同數(shù)量的像素。
6.如權利要求5所述的方法,其中該數(shù)據(jù)包含多個字節(jié),其中每個像素由一或多個字節(jié)表示。
7.如權利要求6所述的方法,其中該多個字節(jié)包含排列成具有24行字節(jié)和16列字節(jié)的陣列的384個字節(jié)。
8.如權利要求1所述的方法,其中第二存儲器與處理器比與第一存儲器更緊密地相關聯(lián)。
9.如權利要求1所述的方法,其中第一存儲器能由處理器以第一速率訪問,以及第二存儲器能由處理器以比第一速率更快的第二速率訪問。
10.如權利要求1所述的方法,其中第一存儲器能存儲第一數(shù)量的數(shù)據(jù),以及第二存儲器能存儲第二數(shù)量的數(shù)據(jù),第二數(shù)量要比第一數(shù)量大。
11.如權利要求1所述的方法,其中每一個塊包含代表亮度數(shù)據(jù)的第一數(shù)據(jù)單元陣列,代表第一色度數(shù)據(jù)的第二陣列,以及代表第二色度數(shù)據(jù)的第三陣列。
12.如權利要求11所述的方法,其中每一數(shù)據(jù)單元由多個整數(shù)據(jù)字節(jié)構成。
13.如權利要求1所述的方法,其中該數(shù)據(jù)被壓縮。
14.如權利要求13所述的方法,其中該數(shù)據(jù)包含亮度數(shù)據(jù)和色度數(shù)據(jù),該數(shù)據(jù)根據(jù)運動圖像專家組MPEG格式被壓縮。
15.如權利要求1所述的方法,其中至少一些塊包含用于執(zhí)行運動補償處理的數(shù)據(jù)。
16.一種能處理用于圖像的顯示的數(shù)據(jù)的處理器,所述數(shù)據(jù)被組織成存儲在第一存儲器中的多個塊,該處理器能控制直接存儲器訪問控制器從第一存儲器向能由處理器訪問的第二存儲器以塊為單位傳送數(shù)據(jù),該處理器進一步能從第二存儲器訪問數(shù)據(jù)以處理數(shù)據(jù)。
17.一個系統(tǒng),包括處理器;能存儲用于處理器對圖像的處理的數(shù)據(jù)的第一存儲器,所述數(shù)據(jù)被組織成多個塊;能由處理器訪問的第二存儲器;以及能在第一存儲器與第二存儲器之間以塊為單位傳送至少一些數(shù)據(jù)的直接存儲器訪問控制器。
18.一個系統(tǒng),包括多個處理器,每個處理器能處理用于圖像的顯示的數(shù)據(jù),所述數(shù)據(jù)被組織成存儲在主存儲器中的多個塊;以及能應多個處理器中的處理器的請求在主存儲器和專用于請求方處理器的局部存儲器之間以塊為單位傳送至少一些數(shù)據(jù)的直接存儲器訪問控制器。
19.一個系統(tǒng),包括多個處理器;由該多個處理器共享的主存儲器,該主存儲器能存儲用于該處理器的至少一個對圖像的處理的數(shù)據(jù),所述數(shù)據(jù)被組織成多個塊;多個局部存儲器,每個局部存儲器專用于該多個處理器中的特定處理器;以及能應該多個處理器中的處理器的請求在主存儲器和專用于請求方處理器的局部存儲器之間以塊為單位傳送至少一些數(shù)據(jù)的直接存儲器訪問控制器。
20.一種記錄介質,其上記錄有用于執(zhí)行在第一存儲器與能由處理器訪問的第二存儲器之間傳送用于圖像的處理的數(shù)據(jù)的方法的指令,該方法包括在第一存儲器中提供用于該圖像的處理的數(shù)據(jù),所述數(shù)據(jù)被組織成多個塊,其中每個塊涉及該圖像的一部分;以及由直接存儲器訪問控制器在第一存儲器和第二存儲器之間以塊為單位傳送至少一些數(shù)據(jù)。
全文摘要
提供了用于在第一存儲器與可由處理器訪問的第二存儲器之間傳送用于圖像的處理的數(shù)據(jù)的一種方法。根據(jù)這樣的方法,在第一存儲器中提供了用于圖像的處理的數(shù)據(jù),所述數(shù)據(jù)被組織成多個塊,其中每個塊涉及一部分圖像。至少一些數(shù)據(jù)是由直接存儲器訪問控制器在第一存儲器與可由處理器訪問的第二存儲器之間以塊為單位傳送。
文檔編號H04N7/50GK1989769SQ200580024858
公開日2007年6月27日 申請日期2005年8月18日 優(yōu)先權日2004年8月19日
發(fā)明者巖田英次 申請人:索尼計算機娛樂公司