專利名稱:Soc芯片系統(tǒng)及實現(xiàn)Soc芯片中可配置緩沖器的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及Soc芯片技術(shù),尤其涉及一種Soc芯片中硬件引擎與其它模塊共享內(nèi)部緩沖器的情況下,通過不同的配置方式調(diào)整其緩沖器的使用量及DRAM帶寬的方法。
背景技術(shù):
Soc芯片一般包括一顆或多顆嵌入式處理器(CPU)及若干硬件引擎。通常,對同一個應(yīng)用,基于CPU的軟件方式能提供最大的靈活性,但難以滿足高性能的需求。因此,基于硬件引擎的實現(xiàn)方式由于在功耗,面積和速度等方面的優(yōu)勢在某些嵌入式Soc方案中成為主流,而CPU也被解放出來運行復(fù)雜的操作系統(tǒng)和軟件。硬件引擎從實現(xiàn)上看可以分成兩大類第一類,硬件引擎被實現(xiàn)為純硬件模塊的方式,通過標(biāo)準(zhǔn)的總線協(xié)議(如AMBA總線)與系統(tǒng)的其它部分進行通訊和數(shù)據(jù)交換,CPU對硬件引擎干預(yù)較少,靈活性也較小,硬件引擎和其它模塊基本不能共享資源。第二類,硬件引擎和CPU較為緊密地耦合在一起,部分工作由運行在CPU之上的軟件實現(xiàn),例如硬件引擎被實現(xiàn)為CPU的協(xié)處理器。這類實現(xiàn)具有較高的軟件靈活度,并且和其它模塊可以共享一部分硬件資源。然而,現(xiàn)有技術(shù)中必須提前決定所需片內(nèi)緩沖器的大小,從而導(dǎo)致了系統(tǒng)必須由硬件引擎以獨占的方式使用這些片內(nèi)緩沖器的局限性。
發(fā)明內(nèi)容
為解決上述技術(shù)問題,本發(fā)明的目的在于提供一種實現(xiàn)Soc芯片中可配置緩沖器的方法,根據(jù)所需系統(tǒng)的應(yīng)用需求和性能,靈活地調(diào)整系統(tǒng)帶寬,增強了系統(tǒng)的靈活性。相應(yīng)與所述方法,本發(fā)明的目的還在于提供一種可靈活調(diào)整系統(tǒng)帶寬的Soc芯片系統(tǒng)。為實現(xiàn)上述發(fā)明目的之一,本發(fā)明的一種可靈活調(diào)整系統(tǒng)帶寬的Soc芯片系統(tǒng), 包括
若干硬件引擎;
一個或多個CPU模塊;
片內(nèi)緩沖器設(shè)置于Soc芯片內(nèi)部,所述硬件引擎和CPU模塊共享所述片內(nèi)緩沖器; 片外存儲器設(shè)置于Soc芯片外部;以及
BDAM引擎所述硬件引擎通過所述BDMA引擎在片內(nèi)緩沖器和片外存儲器之間交換數(shù)
據(jù);
其中,所述片外緩沖器和片外存儲器可被擇一地用于存儲所述硬件引擎中相鄰上方塊的相關(guān)信息,以適應(yīng)系統(tǒng)不同帶寬要求。作為本發(fā)明的進一步改進,所述硬件引擎和CPU模塊通過交叉開關(guān)矩陣與所述片內(nèi)緩沖器相連接。作為本發(fā)明的進一步改進,所述片內(nèi)緩沖器可為SRAM (Static Random AccessMemory);所述片外存儲器可為 DRAM (Dynamic Random Access Memory) 為實現(xiàn)本發(fā)明的另一發(fā)明目的,一種實現(xiàn)Soc芯片中的可配置緩沖器的方法,包括如下步驟
51、判斷當(dāng)前系統(tǒng)的應(yīng)用需求;
52、若系統(tǒng)應(yīng)用需求為提高軟件性能,則將所述硬件引擎中至少多數(shù)上方塊信息存儲于片外存儲器中;
53、若系統(tǒng)應(yīng)用需求為減小系統(tǒng)帶寬,則將所述硬件引擎中至少多數(shù)上方塊信息存儲于片內(nèi)緩沖器中。作為本發(fā)明的進一步改進,所述步驟SI具體為通過特定軟件識別當(dāng)前系統(tǒng)的需求,并相應(yīng)地調(diào)整片內(nèi)緩沖器的分配方式。作為本發(fā)明的進一步改進,所述步驟S2具體包括以下步驟
由CPU模塊或硬件引擎控制從片存儲器中讀入運行所需數(shù)據(jù)至所述片內(nèi)緩沖器中; 運行硬件引擎,消耗片內(nèi)緩沖器中的數(shù)據(jù);
由CPU模塊或硬件引擎控制從所述片內(nèi)緩沖器中將需要存儲的數(shù)據(jù)存儲至片外存儲器中。作為本發(fā)明的進一步改進,所述上方塊信息包括上方塊的像素值、或者運動矢量。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是本發(fā)明根據(jù)所需系統(tǒng)的應(yīng)用需求和性能, 通過特定軟件來選擇將硬件引擎中所需的上方塊信息儲存于片內(nèi)緩沖器或者片外存儲器中,以實現(xiàn)靈活地調(diào)整系統(tǒng)帶寬,進而大大增強了系統(tǒng)的靈活性。
圖I是本發(fā)明一實施方式中Soc芯片系統(tǒng)的硬件架構(gòu)圖2和圖3是本發(fā)明一實施方式中采用片內(nèi)緩沖器處理相鄰兩個塊時系統(tǒng)的工作原理示意圖4是本發(fā)明一實施方式中采用片外存儲器處理相鄰兩個塊時系統(tǒng)的工作原理示意
圖5是本發(fā)明一實施方式中實現(xiàn)Soc芯片中的可配置緩沖器的方法的工作流程圖6是圖5所式的實施方式中步驟S2的具體步驟流程圖。
具體實施例方式以下將結(jié)合附圖所示的具體實施方式
對本發(fā)明進行詳細(xì)描述。但這些實施方式并不限制本發(fā)明,本領(lǐng)域的普通技術(shù)人員根據(jù)這些實施方式所做出的結(jié)構(gòu)、方法、或功能上的變換均包含在本發(fā)明的保護范圍內(nèi)??紤]利用硬件引擎按塊進行數(shù)據(jù)處理的情況,例如在多媒體應(yīng)用領(lǐng)域的Soc中, 往往按塊(或宏塊)來組織數(shù)據(jù)。我們以視頻編解碼器為例進行討論,但本方案也適用于其他按塊處理數(shù)據(jù)的應(yīng)用?,F(xiàn)代的視頻編解碼標(biāo)準(zhǔn)如H. 264,VC-I, AVS等都依賴于相鄰塊或宏塊的信息(如像素值,運動矢量,量化參數(shù)等)。在編解碼過程中,需要在當(dāng)前塊(宏塊)編解碼時將其上方塊(宏塊)的相關(guān)信息讀入編解碼引擎。
請參照圖I所示,在本發(fā)明一實施方式中,一種可靈活調(diào)整系統(tǒng)帶寬的Soc芯片系統(tǒng),包括
若干硬件引擎102;
一個或多個CPU模塊101 ;
片內(nèi)緩沖器(Buffer) 104:設(shè)置于Soc芯片內(nèi)部,硬件引擎和CPU模塊共享片內(nèi)緩沖
器;
優(yōu)選地,在本實施方式中,硬件引擎和CPU模塊通過交叉開關(guān)矩陣105 (Crossbar)與所述片內(nèi)緩沖器相連接,實現(xiàn)讀寫操作,并在軟件的協(xié)助下共享片內(nèi)緩沖器(Buffer)內(nèi)存儲的數(shù)據(jù)。硬件引擎從buffer中讀取數(shù)據(jù)不消耗片外存儲器的帶寬;對于CPU而言,利用 buffer來存儲常用數(shù)據(jù)可以避免出現(xiàn)cache miss,有助于提高軟件性能,并且使軟件的性能更容易預(yù)期。片外存儲器(未圖示)設(shè)置于Soc芯片外部;在本發(fā)明優(yōu)選的實施方式中,所述片內(nèi)緩沖器可為SRAM (Static Random Access Memory);所述片外存儲器可為DRAM (Dynamic Random Access Memory)。BDAM引擎(Buffer DMA引擎(簡稱BDMA)) 103 :硬件引擎通過BDMA引擎在片內(nèi)緩沖器和片外存儲器之間交換數(shù)據(jù);
其中,所述片外緩沖器和片外存儲器可被擇一地用于存儲所述硬件引擎中相鄰上方塊的相關(guān)信息,以適應(yīng)系統(tǒng)不同帶寬要求。存儲相鄰上方塊(宏塊)的信息有兩種方式第一種將整行的相關(guān)信息以line buffer的方式存儲在硬件視頻編解碼器中(即存儲于片內(nèi)緩沖器中)。這種方式完全節(jié)省了 DRAM帶寬,但所需的存儲空間最大,并且必須提前確定所支持的最大視頻分辨率;第二種方式將所有的相鄰上方塊(宏塊)相關(guān)信息存儲在片外存儲器(如DRAM)中,在對當(dāng)前塊 (宏塊)編解碼時,提前將所需信息讀入硬件引擎,這種方式消除了對視頻分辨率的限制,但所需DRAM帶寬較大。所以針對上述的問題,本發(fā)明就必須根據(jù)系統(tǒng)的實際需求來選擇將數(shù)據(jù)存儲于片內(nèi)緩沖器中或者片外存儲器中。BDMA引擎可由CPU或硬件引擎控制,在片內(nèi)緩沖器 (Buffer)和片外存儲器之間進行數(shù)據(jù)的交互。例如硬件視頻編解碼器中存在多種相鄰上方塊(宏塊)的數(shù)據(jù),根據(jù)需要,這些數(shù)據(jù)可通過BDMA的方式在片外存儲器DRAM和片內(nèi)緩沖器 (Buffer)之間傳輸。對于需要提高軟件性能的應(yīng)用,系統(tǒng)將把盡可能多的buffer分配給CPU。同時,大多數(shù)甚至全部硬件引擎所需的line buffer信息都被存儲在片外存儲器中,并在CPU或硬件引擎的控制之下,在被使用之前由BDMA引擎讀入片內(nèi)buffer。SOC內(nèi)部buffer中按照 ring buffer的方式來進行管理。圖2和圖3描繪了處理相鄰兩個塊時各部分的關(guān)系。值得一提的是,假設(shè)硬件引擎讀入和寫出數(shù)據(jù)到不同的buffer,如果具體實現(xiàn)時能夠保證先讀入所有的數(shù)據(jù),則可以讀入和寫出數(shù)據(jù)到同一塊buffer,這樣可以節(jié)省一塊 buffer。這種實現(xiàn)方法硬件引擎使用了較少的buffer,但消耗了較多的DRAM帶寬。對于帶寬受限的應(yīng)用,系統(tǒng)將盡可能多地將當(dāng)前塊上方相鄰塊的信息以line buffer的方式直接存儲在片內(nèi)buffer中(如圖4所示),在視頻分辨率確定的情況下,硬件視頻編解碼器可以直接對所需數(shù)據(jù)進行操作,而無需通過DMA引擎與片外存儲器交換數(shù)
5據(jù),因此降低了系統(tǒng)的帶寬。如圖5所示,在本發(fā)明一實施方式中,一種應(yīng)用上述Soc芯片來實現(xiàn)Soc芯片中的可配置緩沖器的方法,包括如下步驟
SI、判斷當(dāng)前系統(tǒng)的應(yīng)用需求;針對不同的系統(tǒng)所具備的性能,所適應(yīng)的應(yīng)用需求也會不一樣,具體地,通過特定軟件識別當(dāng)前系統(tǒng)的需求,根據(jù)系統(tǒng)需求和性能調(diào)整buffer分配和使用方式。例如對于視頻編解碼器,可以在每幀結(jié)束后改變buffer分配和使用方式。S2、若系統(tǒng)應(yīng)用需求為提高軟件性能,則將所述硬件引擎中至少多數(shù)上方塊信息存儲于片外存儲器中;對于需要提高軟件性能的應(yīng)用,系統(tǒng)將把盡可能多的buffer分配給 CPU。同時,大多數(shù)甚至全部硬件引擎所需的line buffer信息都被存儲在片外存儲器中, 并在CPU或硬件引擎的控制之下,在被使用之前由BDMA引擎讀入片內(nèi)buffer。SOC內(nèi)部 buffer中按照ring buffer的方式來進行管理。參圖6所示,步驟S2具體包括以下步驟
521、由CPU模塊或硬件引擎控制從片存儲器中讀入運行所需數(shù)據(jù)至所述片內(nèi)緩沖器
中;
522、運行硬件引擎,消耗片內(nèi)緩沖器中的數(shù)據(jù);
判斷此次步驟是否運行完成后進入下一步驟;
523、由CPU模塊或硬件引擎控制從所述片內(nèi)緩沖器中將需要存儲的數(shù)據(jù)存儲至片外存儲器中。判斷此次步驟是否運行完成;若是,則結(jié)束本次運行,若否,重新循環(huán)一次上述各步驟。S3、若系統(tǒng)應(yīng)用需求為減小系統(tǒng)帶寬,則將所述硬件引擎中至少多數(shù)上方塊信息存儲于片內(nèi)緩沖器中。其中,對于帶寬受限的應(yīng)用,系統(tǒng)將盡可能多地將當(dāng)前塊上方相鄰塊的信息以line buffer的方式直接存儲在片內(nèi)buffer中。在視頻分辨率確定的情況下,硬件視頻編解碼器可以直接對所需數(shù)據(jù)進行操作,而無需通過DMA引擎與片外存儲器交換數(shù)據(jù)。因此降低了對系統(tǒng)帶寬。硬件引擎中對于當(dāng)前正在處理的塊,可能有多種不同類型的上方相鄰數(shù)據(jù)塊。 例如對于H. 264解碼器,上方塊的像素值和運動矢量可以被存儲在不同的片內(nèi)緩沖器 (Buffer)中。這樣可以分別決定某一信息是采用S2中方案還是S3中方案。通過調(diào)整直接存放在片內(nèi)buffer中以及存儲在片外存儲器中的相鄰上方塊(宏塊)數(shù)據(jù),可以定義各種不同的配置方式。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是本發(fā)明根據(jù)所需系統(tǒng)的應(yīng)用需求和性能, 通過特定軟件來選擇將硬件引擎中所需的上方塊信息儲存于片內(nèi)緩沖器或者片外存儲器中,以實現(xiàn)靈活地調(diào)整系統(tǒng)帶寬,進而大大增強了系統(tǒng)的靈活性。以上所描述的裝置實施方式僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施方式方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。為了描述的方便,描述以上裝置時以功能分為各種單元分別描述。當(dāng)然,在實施本申請時可以把各單元的功能在同一個或多個軟件和/或硬件中實現(xiàn)。以上所描述的裝置實施方式僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施方式方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。本申請可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計算環(huán)境中實踐本申請,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。應(yīng)當(dāng)理解,雖然本說明書按照實施方式加以描述,但并非每個實施方式僅包含一個獨立的技術(shù)方案,說明書的這種敘述方式僅僅是為清楚起見,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)將說明書作為一個整體,各實施方式中的技術(shù)方案也可以經(jīng)適當(dāng)組合,形成本領(lǐng)域技術(shù)人員可以理解的其他實施方式。上文所列出的一系列的詳細(xì)說明僅僅是針對本發(fā)明的可行性實施方式的具體說明,它們并非用以限制本發(fā)明的保護范圍,凡未脫離本發(fā)明技藝精神所作的等效實施方式或變更均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種可靈活調(diào)整系統(tǒng)帶寬的Soc芯片系統(tǒng),其特征在于,其包括若干硬件引擎;一個或多個CPU模塊;片內(nèi)緩沖器設(shè)置于Soc芯片內(nèi)部,所述硬件引擎和CPU模塊共享所述片內(nèi)緩沖器; 片外存儲器設(shè)置于Soc芯片外部;以及BDAM引擎所述硬件引擎通過所述BDMA引擎在片內(nèi)緩沖器和片外存儲器之間交換數(shù)據(jù);其中,所述片外緩沖器和片外存儲器可被擇一地用于存儲所述硬件引擎中相鄰上方塊的相關(guān)信息,以適應(yīng)系統(tǒng)不同帶寬要求。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述硬件引擎和CPU模塊通過交叉開關(guān)矩陣與所述片內(nèi)緩沖器相連接。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述片內(nèi)緩沖器可為SRAM(Static Random Access Memory);所述片外存儲器可為 DRAM (Dynamic Random Access Memory)
4.一種應(yīng)用權(quán)利要求I所述的系統(tǒng)實現(xiàn)Soc芯片中的可配置緩沖器的方法,其特征在于,所述方法包括如下步驟51、判斷當(dāng)前系統(tǒng)的應(yīng)用需求;52、若系統(tǒng)應(yīng)用需求為提高軟件性能,則將所述硬件引擎中至少多數(shù)上方塊信息存儲于片外存儲器中;53、若系統(tǒng)應(yīng)用需求為減小系統(tǒng)帶寬,則將所述硬件引擎中至少多數(shù)上方塊信息存儲于片內(nèi)緩沖器中。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟SI具體為通過特定軟件識別當(dāng)前系統(tǒng)的需求,并相應(yīng)地調(diào)整片內(nèi)緩沖器的分配方式。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟S2具體包括以下步驟由CPU模塊或硬件引擎控制從片存儲器中讀入運行所需數(shù)據(jù)至所述片內(nèi)緩沖器中; 運行硬件引擎,消耗片內(nèi)緩沖器中的數(shù)據(jù);由CPU模塊或硬件引擎控制從所述片內(nèi)緩沖器中將需要存儲的數(shù)據(jù)存儲至片外存儲器中。
7.根據(jù)權(quán)利要求4-6任意一項所述的方法,其特征在于,所述上方塊信息包括上方塊的像素值、或者運動矢量。
全文摘要
本發(fā)明提供一種可靈活調(diào)整系統(tǒng)帶寬的Soc芯片系統(tǒng),包括若干硬件引擎;一個或多個CPU模塊;片內(nèi)緩沖器設(shè)置于Soc芯片內(nèi)部,所述硬件引擎和CPU模塊共享所述片內(nèi)緩沖器;片外存儲器設(shè)置于Soc芯片外部;以及BDAM引擎所述硬件引擎通過所述BDMA引擎在片內(nèi)緩沖器和片外存儲器之間交換數(shù)據(jù);其中,所述片外緩沖器和片外存儲器可被擇一地用于存儲所述硬件引擎中相鄰上方塊的相關(guān)信息,以適應(yīng)系統(tǒng)不同帶寬要求。本發(fā)明根據(jù)所需系統(tǒng)的應(yīng)用需求和性能,通過特定軟件來選擇將硬件引擎中所需的上方塊信息儲存于片內(nèi)緩沖器或者片外存儲器中,以實現(xiàn)靈活地調(diào)整系統(tǒng)帶寬,進而大大增強了系統(tǒng)的靈活性。
文檔編號G06F15/76GK102541808SQ201110400658
公開日2012年7月4日 申請日期2011年12月6日 優(yōu)先權(quán)日2011年12月6日
發(fā)明者余紅斌, 妙維, 楊峰松, 袁宏駿 申請人:蘇州希圖視鼎微電子有限公司