專利名稱:基于fifo的流水線實時處理的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多媒體處理芯片中芯片上的系統(tǒng)(S0C, System on Chip ) 的處理實時性領(lǐng)域,具體涉及一種基于FIFO的流水線實時處理的裝置。 本發(fā)明還涉及一種利用該裝置提高流水線系統(tǒng)實時性的方法。
背景技術(shù):
數(shù)字多媒體處理芯片,特別是高清晰度視頻處理芯片對系統(tǒng)性能提出 了很高的要求。但嵌入式系統(tǒng)的處理能力受到器件,電路等物理條件的限 制,所以流水處理的運行方式被廣泛的應(yīng)用到高性能的嵌入式多媒體系統(tǒng) 中。復(fù)雜的多媒體系統(tǒng)被分為許多異構(gòu)的處理單元(模塊)。模塊之間以 流水的方式并行計算,流水線中下級模塊在處理前一個數(shù)據(jù)單元時,上級 模塊并行的處理下一個數(shù)據(jù)單元。流水線的上下級之間用FIFO (先進(jìn)先 出隊列)交換和緩沖數(shù)據(jù)。
但系統(tǒng)中各模塊的處理速度不相同,甚至不固定(隨時間和輸入數(shù)據(jù) 變化),這給評價系統(tǒng)的整體性能帶來了挑戰(zhàn)。FIFO的深度是有限的,所 以當(dāng)FIFO為空時,F(xiàn)IFO后的下級模塊就需要等待前面的上級模塊處理完 它需要的數(shù)據(jù);當(dāng)FIFO為滿時,F(xiàn)IFO前的上級模塊就需要等待后面的下 級模塊處理完它正在處理數(shù)據(jù),以釋放出上級模塊需要的緩沖空間?;?FIFO的流水線機(jī)制使得系統(tǒng)的處理速度不再是簡單的由各模塊單獨決 定。另一方面,由于降低系統(tǒng)成本和優(yōu)化系統(tǒng)結(jié)構(gòu)的需要,大塊數(shù)據(jù)被存
儲到外存儲器中,圖2為現(xiàn)有技術(shù)的訪存結(jié)構(gòu),運算模塊采用直接訪問外 存儲器控制器的方式進(jìn)行訪存,而多個并行處理的運算模塊可能同時訪問 外存儲器,從而造成了各模塊等待外存儲器控制器的響應(yīng)時間不固定。外 存儲器控制器的響應(yīng)時間跟系統(tǒng)的當(dāng)前請求和調(diào)度策略有關(guān),沒有明確的 上限。共享存儲和流水線機(jī)制結(jié)合起來,使得系統(tǒng)的性能分析更加復(fù)雜。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種基于FIFO的流水線實時處理 的裝置,以確保數(shù)字多媒體嵌入式應(yīng)用對系統(tǒng)實時性的要求。為此,本發(fā) 明還要提供一種基于FIFO的流水線實時處理的方法。
為解決上述技術(shù)問題,本發(fā)明的基于FIFO的流水線實時處理的裝置, 包括 一個主控制器、多級運算模塊、 一個外存儲器、及一個外存儲器控 制器,其中,還包括
一個外存儲器前置緩沖器,用于接收各級運算模塊的訪存請求及數(shù) 據(jù),并向外存儲器控制器輸出訪存請求及數(shù)據(jù),其輸入端連接主控制器和 各級運算模塊,輸出端連接外存儲器控制器;
所述的主控制器,用于接收各級運算模塊發(fā)出的閑置信令,并向各級 運算模塊、外存儲器前置緩沖器、和外存儲器控制器發(fā)送同步信令,它具 有 一個高精度時鐘計數(shù)器,該主控制器的輸入端連接各級運算模塊,輸
出端連接流水線中各級運算模塊、外存儲器前置緩沖器和外存儲器控制
器;
所述的各級運算模塊,用于系統(tǒng)數(shù)據(jù)的運算處理,其上下級之間采用FIFO結(jié)構(gòu)交換和緩沖數(shù)據(jù),至少含有2個數(shù)據(jù)單元的數(shù)據(jù)緩沖區(qū),其輸 入端連接主控制器、上級運算模塊和外存儲器控制器,輸出端連接下級運 算模塊和外存儲器緩沖器;
所述的外存儲器控制器,被各級運算模塊所共用,用于控制對外存儲 器的訪存和對各級運算模塊傳送數(shù)據(jù),其輸入端連接外存儲器緩沖器,輸 出端連接外存儲器和各級運算模塊;
所述的外存儲器,用于存儲各級運算模塊處理的大塊數(shù)據(jù)信息,對其 訪存受外存儲器控制器的控制,其輸入端和輸出端均與外存儲器控制器連 接。
本發(fā)明利用上述裝置進(jìn)行實時處理的方法,包括如下步驟
(1) 主控制器定時向各級運算模塊、外存儲器前置緩沖器、及外存 儲器控制器發(fā)送同步信令,每一個同步信令的發(fā)出視為一個新的工作周期 的開始;
(2) 流水線各級運算模塊開始處理下一個數(shù)據(jù)單元的數(shù)據(jù),將處理 好的數(shù)據(jù)發(fā)送至下級流水線的運算模塊,其間如果要訪問外存儲器時將訪 存請求及數(shù)據(jù)發(fā)送至外存儲器前置緩沖器,另一方面也接收來自外存儲器 控制器發(fā)送的數(shù)據(jù),做進(jìn)一步運算處理,在完成該數(shù)據(jù)單元所有數(shù)據(jù)的處 理后向主控制器發(fā)送閑置信令;
(3) 外存儲器前置緩沖器的寫入指針向前移動一個數(shù)據(jù)單元,并收 集各級運算模塊發(fā)出的訪存請求及數(shù)據(jù),存入其當(dāng)前寫入指針指向的一個 數(shù)據(jù)單元中;
(4) 外存儲器控制器對外存儲器緩沖器的讀入指針向前移動一個單元,并依次讀出其讀入指針指向的當(dāng)前數(shù)據(jù)單元中的訪存請求及數(shù)據(jù),將 處理后的各數(shù)據(jù)發(fā)送至外存儲器和相應(yīng)的運算模塊;
(5)流水線系統(tǒng)中各模塊完成本單元數(shù)據(jù)處理工作后處于閑置狀 態(tài),等待下一個同步信令到來才能開始下一個單元的數(shù)據(jù)處理工作,主控 制器接收到所有運算模塊發(fā)出的閑置信令后,在定時器所定時間到達(dá)時重 復(fù)步驟(1)。
如果主控制器在定時器所定時間到達(dá)時仍未能接受到所有運算模塊 發(fā)出的閑置信令,則發(fā)出報錯信息及進(jìn)行相應(yīng)處理。
因為本發(fā)明用采用同步化的控制信號,使系統(tǒng)內(nèi)各模塊采用同步化 的方式運行,流水線的系統(tǒng)吞吐率直接由主控制器控制。同時,對于共享 的外部存儲系統(tǒng),本發(fā)明利用前置緩沖器,把各級運算模塊對外存儲器的 訪存請求分離到不同的流水線級別中,從而充分保障了每一個流水線級別 的最大處理時間不超過實時性要求,只要在存儲器系統(tǒng)帶寬滿足自身實時 性要求的情況下,各模塊的請求都能被及時的響應(yīng)。本發(fā)明給數(shù)字多媒體 系統(tǒng)的實時性提供了系統(tǒng)的保障機(jī)制,且其實現(xiàn)方式簡單,應(yīng)用面廣泛。
下面結(jié)合附圖和具體實施方式
對本發(fā)明作進(jìn)一步詳細(xì)的說明。
圖l是本發(fā)明的系統(tǒng)架構(gòu)圖2是現(xiàn)有技術(shù)的訪存結(jié)構(gòu)示意圖3是本發(fā)明提供的訪存結(jié)構(gòu)示意圖。
具體實施例方式
數(shù)字多媒體應(yīng)用中多采用高性能的流水線結(jié)構(gòu)和大容量的外存儲器構(gòu)架。系統(tǒng)的實時性是系統(tǒng)實現(xiàn)的基本指標(biāo)之一,而本發(fā)明采用的基于同 步流水線的控制方法,能保證系統(tǒng)的實時性要求,將系統(tǒng)的設(shè)計瓶頸簡化 到模塊內(nèi)部和外存儲器控制器內(nèi)部效率。本發(fā)明采用的方法可有效和方便 的適用于各種高性能的數(shù)字多媒體芯片的設(shè)計中。
下面以視頻解碼器系統(tǒng)為例,對本發(fā)明做進(jìn)一步說明。
如圖1所示,該系統(tǒng)包括主控制器,多級運算模塊(具體包括變 長解碼模塊,反量化模塊,反變換模塊,幀內(nèi)預(yù)測模塊,運動向量模塊, 插值模塊,環(huán)路濾波模塊),外存儲器控制器、外存儲器前置緩沖器、及 外存儲器多個功能部件。主控制器中包含一個高精度計時器,各功能模塊 之間有至少兩個數(shù)據(jù)單元的數(shù)據(jù)緩沖區(qū),形成由圖1中虛線標(biāo)記出的6 級流水線。主控制器以總線方式與各運算模塊、外存儲器前置緩沖器、及 外存儲器控制器連接,外存儲前置緩沖器以點對點方式與外存儲器控制器 連接,各級運算模塊相互串聯(lián)且與外存儲器前置緩沖器、外存儲器控制器 相連接,外存儲器控制器與外存儲器連接。
流水線按照宏塊為處理單位進(jìn)行流水。主控制器每一個宏塊處理時 間(工作周期)發(fā)出一個宏塊信令(同步信令),傳送到其他各級運算模 塊、外存儲器前置緩沖器、以及外外存儲器控制器。在該宏塊處理時間內(nèi), 各運算模塊、外存儲器前置緩沖器、外存儲器控制器、外存儲器共同完成 一個宏塊的解碼。流水線中各流水級別處理相繼的連續(xù)宏塊,變長編碼模
塊處理宏塊n的宏塊解碼時間里,反變換和運動向量模塊處理宏塊n-l, 反變換模塊處理宏塊n-2,外存儲器控制器在外存儲器緩沖器中讀出宏塊 n-3的訪存請求并訪問外存儲器獲得宏塊n-3的參考像素數(shù)據(jù),插值模塊處理宏塊n-4,幀內(nèi)預(yù)測模塊處理宏塊n-5,環(huán)路濾波模塊處理宏塊n-6。
各級運算模塊收到同步信令后,同時開始啟動其對新一個宏塊的處 理,并將處理好的數(shù)據(jù)發(fā)送給流水線的下級模塊,其間在需要訪問外存儲 器時將訪存信息和數(shù)據(jù)發(fā)送給外存儲器前置緩沖器(圖1所示時刻運動向 量模塊正向外存儲器前置緩沖器發(fā)出訪存請求),另 一方面也接受外存儲 器控制器發(fā)送的數(shù)據(jù)(圖1所示時刻差值模塊正接收外存儲器控制器發(fā)送 的數(shù)據(jù)),做進(jìn)一步處理(比如差值運算),當(dāng)該模塊處理完本宏塊內(nèi)所有 數(shù)據(jù)后向主控制器發(fā)送閑置信令。
如圖3中所示,各個運算模塊需要進(jìn)行訪存時,其訪存模塊分為發(fā) 送請求的子模塊Mll和處理數(shù)據(jù)的子模塊M12,處理數(shù)據(jù)的子模塊M12與 外存儲器控制器之間包括至少2個宏塊單元(數(shù)據(jù)單元)的數(shù)據(jù)緩存。發(fā) 送請求的子模塊Ml 1具有連接外存儲器緩沖器的輸出端,負(fù)責(zé)向外存儲器 緩沖器發(fā)送訪存請求和數(shù)據(jù),處理數(shù)據(jù)的子模塊M12具有連接外存儲器控 制器的輸入端,負(fù)責(zé)接收來自外存儲器控制器發(fā)出的數(shù)據(jù),做進(jìn)一步處理, 圖1所示時刻,運動向量模塊的發(fā)送請求子模塊正向外存儲器緩沖器發(fā)送 訪存請求,差值模塊的處理數(shù)據(jù)子模塊正接受來自外存儲器控制器發(fā)送的 數(shù)據(jù),進(jìn)一步做差值運算。
外存儲器前置緩沖器以FIFO的方式交換和緩沖數(shù)據(jù),收到同步信令 后其寫入指針向前移動一個宏塊數(shù)據(jù),并寫入一個宏塊處理時間內(nèi)各級運
算模塊發(fā)出的訪存請求以及數(shù)據(jù)(圖1所示時刻外存儲器緩沖器正寫入運 動向量模塊發(fā)出的訪存請求)。
外存儲器控制器收到同步信令后其對外存儲器緩沖器的讀入指針向前移動一個單元,并依次讀出一個宏塊處理時間內(nèi)各訪存請求及數(shù)據(jù)(此 時外存儲器控制器正讀入運動向量模塊發(fā)出的訪存請求),另 一方面將處 理后的數(shù)據(jù)發(fā)送給外存儲器和流水線的下級模塊(此時外存儲器控制器正 向插值模塊發(fā)送數(shù)據(jù))。
流水線系統(tǒng)中各模塊完成本單元數(shù)據(jù)處理工作后處于閑置狀態(tài),等 待下一個同步信令到來才能開始下一個單元的數(shù)據(jù)處理工作,主控制器接 收到所有運算模塊發(fā)出的閑置信令后,在定時器所定時間到達(dá)時發(fā)送同步 信令。
如果主控制器檢查各級運算模塊的狀態(tài),如果都變?yōu)殚e置狀態(tài)(即 收到所有運算模塊發(fā)出的閑置信令)則進(jìn)行下一個宏塊的處理,否則進(jìn)行 實時性不滿足后的錯誤處理。
以上實施例僅用以說明而非限制本發(fā)明的技術(shù)方案,本領(lǐng)域的普通 技術(shù)人員應(yīng)當(dāng)理解可以對本發(fā)明進(jìn)行修改或者等同替換,而不脫離本發(fā) 明的精神和范圍的任何修改或局部替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求 范圍當(dāng)中。
權(quán)利要求
1、一種基于FIFO的流水線實時處理的裝置,包括一個主控制器、多級運算模塊、一個外存儲器、及一個外存儲器控制器,其特征在于它還包括一個外存儲器前置緩沖器,用于接收各級運算模塊的訪存請求及數(shù)據(jù),并向外存儲器控制器輸出訪存請求及數(shù)據(jù),其輸入端連接主控制器和各級運算模塊,輸出端連接外存儲器控制器;所述的主控制器,用于接收各級運算模塊發(fā)出的閑置信令,并向各級運算模塊、外存儲器前置緩沖器、和外存儲器控制器發(fā)送同步信令,它具有一個高精度時鐘計數(shù)器,該主控制器的輸入端連接各級運算模塊,輸出端連接流水線中各級運算模塊、外存儲器前置緩沖器和外存儲器控制器;所述的各級運算模塊,用于系統(tǒng)數(shù)據(jù)的運算處理,其上下級之間采用FIFO結(jié)構(gòu)交換和緩沖數(shù)據(jù),至少含有2個數(shù)據(jù)單元的數(shù)據(jù)緩沖區(qū),其輸入端連接主控制器、上級運算模塊和外存儲器控制器,輸出端連接下級運算模塊和外存儲器緩沖器;所述的外存儲器控制器,被各級運算模塊所共用,用于控制對外存儲器的訪存和對各級運算模塊傳送數(shù)據(jù),其輸入端連接外存儲器緩沖器,輸出端連接外存儲器和各級運算模塊;所述的外存儲器,用于存儲各級運算模塊處理的大塊數(shù)據(jù)信息,對其訪存受外存儲器控制器的控制,其輸入端和輸出端均與外存儲器控制器連接。
2、 根據(jù)權(quán)利要求1所述的基于FIF0的流水線實時處理的裝置,其 特征在于,外存儲器前置緩沖器內(nèi)部采用FIFO結(jié)構(gòu)交換和緩沖數(shù)據(jù)。
3、 根據(jù)權(quán)利要求1中所述的基于FIFO的流水線實時處理的裝置, 其特征在于,各級運算模塊需要進(jìn)行訪存時,其內(nèi)部的訪存模塊分為兩個 流水級別,包括發(fā)送請求的子模塊(Mil)及處理數(shù)據(jù)的子模塊(M12); 其中發(fā)送請求的子模塊(Mil)上具有連接下級運算模塊及外存儲器緩沖 器的輸出端,處理數(shù)據(jù)的子模塊(M12)上具有連接主控制器、上級運算 模塊、及外存儲器控制器的輸入端。
4、 根據(jù)權(quán)利要求3中所述的基于FIFO的流水線實時處理的裝置, 其特征在于,所述的處理數(shù)據(jù)的子模塊(M12)與外存儲器控制器之間, 包括至少2個數(shù)據(jù)單元的緩沖區(qū)。
5、 一種基于FIFO的流水線實時處理的方法,其特征在于,包括如 下步驟(1)主控制器定時向各級運算模塊、外存儲器前置緩沖器、及外存 儲器控制器發(fā)送同步信令,每一個同步信令的發(fā)出視為一個新的工作周 期;(2 )流水線各級運算模塊收到同步信令后開始處理下一個數(shù)據(jù)單元 的數(shù)據(jù),將處理好的數(shù)據(jù)發(fā)送至下級流水線的運算模塊,其間如果要訪問 外存儲器時,將訪存請求及數(shù)據(jù)發(fā)送至外存儲器前置緩沖器,另一方面也 接收來自外存儲器控制器發(fā)送的數(shù)據(jù),做進(jìn)一步運算處理,在完成該數(shù)據(jù) 單元所有數(shù)據(jù)的處理后向主控制器發(fā)送閑置信令;(3 )外存儲器前置緩沖器收到同步信令后其寫入指針向前移動一個數(shù)據(jù)單元,并收集各級運算模塊發(fā)出的訪存請求及數(shù)據(jù),存入其當(dāng)前寫入指針指向的一個數(shù)據(jù)單元中;(4 )外存儲器控制器收到同步信令后其對外存儲器緩沖器的讀入指 針向前移動一個單元,并依次讀出其讀入指針指向的當(dāng)前數(shù)據(jù)單元中的訪 存請求及數(shù)據(jù),將處理后的各數(shù)據(jù)發(fā)送至外存儲器和相應(yīng)的運算模塊;(5)流水線系統(tǒng)中各模塊完成本單元數(shù)據(jù)處理工作后處于閑置狀 態(tài),等待下一個同步信令到來才能開始下一個單元的數(shù)據(jù)處理工作,主控 制器接收到所有運算模塊發(fā)出的閑置信令后,在定時器所定時間到達(dá)時重 復(fù)步驟(1)。
6、 根據(jù)權(quán)利要求5所述的基于FIFO的流水線實時處理的方法,其 特征在于,如果主控制器在定時器所定時間到達(dá)時仍未能接受到所有運算 模塊發(fā)出的閑置信令,則發(fā)出報錯信息及進(jìn)行相應(yīng)處理。
7、 根據(jù)權(quán)利要求5所述的基于FIFO的流水線實時處理的方法,其 特征在于,各級運算模塊需要訪問外存儲器時,由發(fā)送請求子模塊(Mll) 將訪存請求和數(shù)據(jù)發(fā)送至外存儲器緩沖器進(jìn)行緩存,另外由處理數(shù)據(jù)的子 模塊(M12)接受來自外存儲器控制器發(fā)送的數(shù)據(jù),做進(jìn)一步處理。
全文摘要
本發(fā)明公開了一種基于FIFO(先入先出隊列)的流水線實時處理的裝置。該裝置利用主控制器控制流水線各個模塊工作,另外在運算模塊與外存儲器控制器之間增加一個外存儲器緩沖器。同時本發(fā)明又提供了一種利用該裝置將流水線的運行過程同步化和采用變換訪存結(jié)構(gòu)改善訪存過程的方法。使得各模塊和存儲器帶寬滿足各自的實時性要求的情況下,系統(tǒng)的實時性就能夠得到保障。本發(fā)明給數(shù)字多媒體系統(tǒng)的實時性提供了系統(tǒng)的保障機(jī)制,其實現(xiàn)方式簡單,且應(yīng)用面廣。
文檔編號G06T1/20GK101308568SQ20071004077
公開日2008年11月19日 申請日期2007年5月17日 優(yōu)先權(quán)日2007年5月17日
發(fā)明者鵬 張 申請人:北京展訊高科通信技術(shù)有限公司