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