專利名稱:多中斷的緩存裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳輸技術(shù),尤其涉及一種改進(jìn)的用于數(shù)據(jù)傳輸中的緩存裝置和方法。
背景技術(shù):
有數(shù)據(jù)傳輸?shù)南到y(tǒng)設(shè)計中,在系統(tǒng)設(shè)計中選擇了不同的設(shè)備,由于不同的設(shè)備具有不同的數(shù)據(jù)處理數(shù)據(jù),導(dǎo)致了各個設(shè)備之間數(shù)據(jù)傳輸?shù)牟粎f(xié)調(diào),為了解決這個問題,目前很多系統(tǒng)設(shè)計中都選用了緩沖的方式來協(xié)調(diào)這個問題。
在系統(tǒng)設(shè)計中采用了中斷、DMA和通道控制技術(shù)使得系統(tǒng)中各設(shè)備之間可以并行工作。但是,設(shè)備的處理速度不匹配的問題是客觀存在的。這限制了設(shè)備之間連接的數(shù)量。
設(shè)備與設(shè)備速度不匹配的問題可以采用設(shè)置緩沖區(qū)的方法解決。在設(shè)置了緩沖區(qū)之后,數(shù)據(jù)輸出設(shè)備(以下簡稱發(fā)送方)進(jìn)程可把數(shù)據(jù)首先輸出到緩沖區(qū),然后繼續(xù)執(zhí)行后面的工作,數(shù)據(jù)接收設(shè)備(以下簡稱接收方)則可以從緩沖區(qū)取出數(shù)據(jù)進(jìn)行操作。兩個設(shè)備之間互相不影響。
有的系統(tǒng)中采用乒乓結(jié)構(gòu)的Buffer,結(jié)構(gòu)圖如圖1所示。在這個結(jié)構(gòu)中由兩塊相同的單端口存儲器,假定乒乓緩存的總?cè)萘繛镸(單位為存儲單元),這兩個物理上分開的存儲器,每個的容量分別為M/2。圖中Buffer1和Buffer2是同樣的兩塊存儲器,兩個存儲器的兩個端口綁定到一起,共同構(gòu)成乒乓結(jié)構(gòu)的Buffer緩存裝置的輸入接口和輸出接口。
不同設(shè)備通過乒乓Buffer結(jié)構(gòu)傳送數(shù)據(jù),當(dāng)Buffer有一半空間為空時,向發(fā)送方發(fā)出Buffer空中斷,發(fā)送方用新數(shù)據(jù)填滿這半個Buffer空間;當(dāng)Buffer有一半空間為滿時,向接收方發(fā)出Buffer滿中斷,接受方取走這半個Buffer的新數(shù)據(jù)。
由于現(xiàn)有方法中,只有存儲器半滿的一個中斷,而這個中斷必然處于接收方眾多中斷處理中的一個位置,產(chǎn)生了下面的問題如果這個中斷優(yōu)先級很高,那么讀取存儲器中斷來時,接收方必須停止正在進(jìn)行的工作,不響應(yīng)接收方其他中斷,而去讀取數(shù)據(jù)。這時存儲器還有一半的空間供發(fā)送方寫數(shù),可能接收方取走一半Buffer的數(shù)據(jù)時,另一半存儲器還差很多才寫滿,造成存儲器空間的浪費(fèi),另一方面又影響了接收方其他的工作;同樣,對于發(fā)送方來講,當(dāng)寫入存儲器中斷來時,發(fā)送方必須停止正在進(jìn)行的工作,不響應(yīng)發(fā)送方其他中斷,而去寫入數(shù)據(jù)。同樣,這時存儲器還有一半的空間供接收方讀取,造成了存儲器空間的浪費(fèi),同時也影響了發(fā)送方的其他工作。
如果這個中斷優(yōu)先級很低,那么存儲器中斷來時,接收方可能正在處理更高級的中斷而無法響應(yīng),造成取數(shù)不及時,存儲器被填滿,發(fā)送方進(jìn)入等待;或者由于存儲器中斷來時,發(fā)送方可能正在處理更高級的中斷而無法響應(yīng),造成存儲器被取空,接收方進(jìn)入等待,影響了接收方和發(fā)送方相互之間的協(xié)調(diào)。
發(fā)明內(nèi)容
有鑒于此,為了解決存儲器利用率不高,設(shè)備不被不緊急事件打斷以及不錯過緊急寫/取數(shù)中斷等問題,本發(fā)明提出一種使用多中斷緩存的裝置和方法。
一種緩存裝置,其特征在于包括存儲器,用于數(shù)據(jù)傳輸過程中的數(shù)據(jù)暫時存放的部分;存儲器控制單元,用于控制存儲器與外部的操作,包括,讀寫操作,禁止讀寫操作等等;中斷發(fā)生單元,用于產(chǎn)生中斷。
進(jìn)一步,這種緩存裝置產(chǎn)生多個中斷時可以根據(jù)存儲器不同的狀態(tài)產(chǎn)生一個中斷或者不同的多個中斷;這些中斷可以是同樣的優(yōu)先級別,來不斷向設(shè)備發(fā)出申請,也可以根據(jù)存儲器的狀態(tài)發(fā)生不同優(yōu)先級別的中斷;如圖2所示,多中斷中斷發(fā)生單元由多個條件寄存器和對應(yīng)的多個比較器組成,可以形成對應(yīng)的多個中斷,這些中斷可以通過存儲器控制單元上層軟件進(jìn)行靈活設(shè)置。
進(jìn)一步,這種緩存裝置中的中斷發(fā)生單元可以分為接收方中斷發(fā)生單元,也可以為中斷發(fā)送方中斷發(fā)生單元,也可以同時有兩個中斷發(fā)生單元,一個為中斷發(fā)送方中斷發(fā)生單元,一個為接收方中斷發(fā)生單元。
進(jìn)一步,可以將中斷發(fā)生單元固定設(shè)置為兩個,一個為接收方中斷發(fā)生單元,一個為發(fā)送方中斷發(fā)生單元。但是給每個中斷發(fā)生單元配備一個中斷發(fā)生單元使能寄存器,可以根據(jù)這兩個中斷發(fā)生單元使能寄存器來控制這兩個中斷發(fā)生單元是否使用。甚至,當(dāng)接收方讀取速度普遍比較快,而發(fā)送方寫入速度普遍比較慢的情況下,可以將兩個中斷發(fā)生單元都禁用掉。這樣,配置了中斷發(fā)生單元使能寄存器的多中斷緩存裝置可以作為一種通用的器件,適用于各種不同的設(shè)備。
進(jìn)一步,這種緩存裝置所述存儲器可以為多塊存儲單元拼接的乒乓Buffer,也可以是一塊存儲單元的FIFO。
一種數(shù)據(jù)緩沖方法,其特征在于包括以下步驟A.設(shè)置中斷條件產(chǎn)生寄存器;B設(shè)置中斷發(fā)生單元使能寄存器;C發(fā)送數(shù)據(jù);D存儲單元到達(dá)某一特定位置觸發(fā)中斷發(fā)生單元,中斷發(fā)生單元產(chǎn)生中斷給其對應(yīng)的設(shè)備;E對應(yīng)設(shè)備根據(jù)中斷的優(yōu)先級進(jìn)行判斷,是否處理該中斷;F處理中斷,發(fā)送或者接收數(shù)據(jù)。
進(jìn)一步,該方法中的步驟C中的某一特定位置不限定為一個位置,可以設(shè)置多個的特定位置。
進(jìn)一步,該方法中這些不同的特定位置對應(yīng)的中斷可以分配不同級別的優(yōu)先級;這些不同的特定位置可以通過存儲器控制單元上層軟件進(jìn)行靈活的設(shè)置。
進(jìn)一步,該方法中的步驟A中的兩個中斷發(fā)生單元使能寄存器可以都設(shè)置為不用。
通過本發(fā)明,可以解決現(xiàn)有技術(shù)中對存儲器資源浪費(fèi)的情況,提高了存儲器利用效率;同時為發(fā)送和接收雙方提供了充足的時間處理各自的事情,不因?yàn)閿?shù)據(jù)傳輸問題而引起處理停滯,減少了對雙方工作的影響;避免了存儲器的堵塞和空置,提高數(shù)據(jù)傳輸?shù)男省?br>
圖1現(xiàn)有技術(shù)乒乓Buffer緩存裝置示意圖;圖2多中斷中斷發(fā)生單元結(jié)構(gòu)及連接示意圖。
圖3本發(fā)明的多中斷緩存裝置示意圖;圖4本發(fā)明帶有中斷發(fā)生使能寄存器的緩存裝置示意圖;具體實(shí)施方式
本發(fā)明的關(guān)鍵在于提出了中斷發(fā)生單元200可以產(chǎn)生多個中斷。如圖2所示,存儲器控制單元上層軟件203可以通過軟件對各個條件寄存器2001、條件寄存器2002和條件寄存器2003進(jìn)行設(shè)置,存儲器控制單元202將存儲器的信息讀取后,通過比較器20011、比較器20022以及比較器20033和條件寄存器2001、條件寄存器2002以及條件寄存器2003進(jìn)行比較,符合那個那個條件就產(chǎn)生對應(yīng)的中斷。
如圖3所示,以通常意義上的存儲器為例,假定在這個緩存裝置中發(fā)送方中斷發(fā)生單元212和接收方中斷發(fā)生單元222都可以產(chǎn)生三個中斷,第一個是當(dāng)存儲數(shù)據(jù)到達(dá)存儲器201的容量的四分之一時,由發(fā)送方中斷發(fā)生單元212產(chǎn)生一個中斷給發(fā)送方211,該中斷的優(yōu)先級設(shè)為高級,同時,接收方中斷發(fā)生單元222產(chǎn)生一個中斷給接收方221,該中斷的優(yōu)先級設(shè)為低級;第二個是當(dāng)存儲數(shù)據(jù)到達(dá)存儲器201的容量的二分之一時,由發(fā)送方中斷發(fā)生單元212產(chǎn)生一個中斷給發(fā)送方211,該中斷的優(yōu)先級設(shè)為普通級,同時接收方中斷發(fā)生單元222產(chǎn)生一個中斷給接收方221,該中斷的優(yōu)先級設(shè)為普通級;第三個是當(dāng)存儲數(shù)據(jù)到達(dá)存儲器201的容量的四分之三時,由發(fā)送方中斷發(fā)生單元212產(chǎn)生一個中斷給發(fā)送方211,該中斷的優(yōu)先級設(shè)為低級,同時接收方中斷發(fā)生單元222產(chǎn)生一個中斷給接收方221,該中斷的優(yōu)先級設(shè)為高級。
當(dāng)數(shù)據(jù)存儲到達(dá)存儲器201的容量的四分之一時,存儲器201提供讀寫指針給存儲器控制單元202,存儲器控制單元202根據(jù)讀寫指針計算出存儲器201現(xiàn)有的有效數(shù)據(jù)和剩余空間大小,分別提供給發(fā)送方中斷產(chǎn)生單元212和接收方中斷產(chǎn)生單元222。發(fā)送方中斷產(chǎn)生單元212將剩余空間大小與每個中斷產(chǎn)生值進(jìn)行比較,如果剩余空間大小大于四分之三這個中斷產(chǎn)生值,高級中斷產(chǎn)生,發(fā)送方211的高級中斷就產(chǎn)生了;接收方中斷產(chǎn)生器222將有效數(shù)據(jù)大小與每個中斷產(chǎn)生值進(jìn)行比較,如果有效數(shù)據(jù)大小大于某個四分之一這個中斷產(chǎn)生值,低級中斷產(chǎn)生,接收方221的低級中斷產(chǎn)生了。發(fā)送方211接收到這個高級中斷后,和自己正在處理的事件的優(yōu)先級相比較,認(rèn)為這個高級中斷的優(yōu)先級比較高,于是就開始在寫使能的控制下向存儲器201發(fā)送數(shù)據(jù),以防止因?yàn)榇鎯ζ?01中數(shù)據(jù)被取空,而導(dǎo)致接收方221進(jìn)入等待的狀況發(fā)生;同時接收方221的低級中斷被接收方221接收到,接收方221和自己正在處理的事件的優(yōu)先級相比較,認(rèn)為這個低級中斷的優(yōu)先級別比較低,于是并不響應(yīng)該中斷,繼續(xù)進(jìn)行自己正在處理的事件,保證了接收方221處理事務(wù)的連貫性。當(dāng)數(shù)據(jù)存儲到存儲器201的容量的四分之三時,發(fā)送方211的低級中斷和接收方221的高級中斷產(chǎn)生了,發(fā)送方211接收到這個低級中斷后,和自己正在處理的事件的優(yōu)先級相比較,認(rèn)為這個低級中斷的優(yōu)先級比較低,并不響應(yīng)該中斷,繼續(xù)進(jìn)行自己正在處理的事件,保證了發(fā)送方211處理事務(wù)的連貫性;同時,接收方221的高級中斷被接收方221接收到,接收方221和自己正在處理的事件的優(yōu)先級相比較,認(rèn)為這個高級中斷的優(yōu)先級別比較高,于是就開始在讀使能的控制下讀取存儲器201中的數(shù)據(jù),防止因?yàn)榘l(fā)送方211將存儲器201填滿之后,進(jìn)入等待狀態(tài)。同樣在數(shù)據(jù)存儲到存儲器201的容量的二分之一時,同樣產(chǎn)生了發(fā)送方211和接收方221的兩個普通中斷,他們根據(jù)各自正在處理事件的優(yōu)先級進(jìn)行合適的處理。
在高級中斷響應(yīng)完畢后,同樣因?yàn)閿?shù)據(jù)的減少或者增加又會引起中斷,而這個中斷有可能會低于以前正在處理的事情,于是就停止數(shù)據(jù)的寫入/讀取操作,執(zhí)行當(dāng)前更重要的事情,這樣就保證了發(fā)送方211或者接收方221把騰出更多的時間來處理主要事情。而不是被數(shù)據(jù)傳輸?shù)氖虑槎驍唷?br>
如圖4所示,給發(fā)送方中斷產(chǎn)生單元212分配發(fā)送方中斷產(chǎn)生單元使能寄存器213,給接收方中斷產(chǎn)生單元222分配接收方中斷產(chǎn)生單元使能寄存器223,這樣就可以在不同的場合控制中斷是否發(fā)生。在系統(tǒng)運(yùn)行前,先進(jìn)行中斷發(fā)生單元使能寄存器的設(shè)置,在中斷發(fā)生單元接收到存儲器控制單元202的指針后,在根據(jù)自己的中斷發(fā)生單元使能寄存器來決定是否發(fā)生中斷。其余過程同上述過程。
當(dāng)存儲器201由Buffer A 101和Buffer B 102組成的乒乓結(jié)構(gòu)的,初始狀態(tài)兩個Buffer均處于空狀態(tài),發(fā)送方211將Buffer A 101寫滿,接收方中斷發(fā)生單元222向接收方221發(fā)出低優(yōu)先級中斷;由于Buffer B 102為空,發(fā)送方211繼續(xù)寫B(tài)uffer B 102。當(dāng)寫滿Buffer B 102一半空間時,接收方中斷發(fā)生單元222向接收方221發(fā)出高優(yōu)先級中斷;發(fā)送方211繼續(xù)寫B(tài)uffer B 102,接收方221開始讀Buffer A 101;發(fā)送方211寫滿BufferB 102時,如果接收方221已經(jīng)讀空Buffer A 101,發(fā)送方211可以繼續(xù)寫B(tài)uffer B 102,否則發(fā)送方211將進(jìn)入等待狀態(tài)。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,因此本發(fā)明保護(hù)范圍以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種緩存裝置,其特征在于包括存儲器,用于數(shù)據(jù)傳輸過程中的數(shù)據(jù)暫時存放的部分;存儲器控制單元,用于控制存儲器和中斷產(chǎn)生器,包括對存儲器的讀寫指針控制、存儲器使用空間的計算等等。中斷發(fā)生單元,用于產(chǎn)生中斷。
2.根據(jù)權(quán)利要求1所述緩存裝置,其特征在于所述中斷發(fā)生單元,每個中斷發(fā)生單元都可以發(fā)生一個或者多個中斷。
3.根據(jù)權(quán)利要求2所述緩存裝置,其特征在于所述多中斷中斷發(fā)生單元由多個條件寄存器和對應(yīng)的多個比較器組成,可以形成對應(yīng)的多個中斷。
4.根據(jù)權(quán)利要求2所述緩存裝置,其特征在于所述中斷發(fā)生單元發(fā)生的多個中斷可以配置不同級別的優(yōu)先級別。
5.根據(jù)權(quán)利要求2所述緩存裝置,其特征在于所述中斷發(fā)生單元發(fā)生的多個中斷可以由存儲器控制單元上層軟件編程設(shè)置不同的產(chǎn)生條件。
6.根據(jù)權(quán)利要求1所述緩存裝置,其特征在于所述存儲器可以為多塊存儲單元拼接的乒乓Buffer,也可以是一塊存儲單元的FIFO。
7.根據(jù)權(quán)利要求1所述緩存裝置,其特征在于所述中斷發(fā)生單元可以為接收方中斷發(fā)生單元,也可以為中斷發(fā)送方中斷發(fā)生單元,也可以同時有兩個中斷發(fā)生單元,一個為中斷發(fā)送方中斷發(fā)生單元,一個為接收方中斷發(fā)生單元。
8.根據(jù)權(quán)利要求1所述緩存裝置,其特征在于所述中斷發(fā)生單元為兩個,一個為接收方中斷發(fā)生單元,一個為發(fā)送方中斷發(fā)生單元,每個中斷發(fā)生單元配備一個中斷發(fā)生單元使能寄存器,可以根據(jù)該裝置使用場合進(jìn)行具體設(shè)置。
9.一種數(shù)據(jù)緩沖方法,其特征在于包括以下步驟A.配置各個中斷產(chǎn)生條件寄存器;B設(shè)置中斷發(fā)生單元使能寄存器;C發(fā)送數(shù)據(jù);D存儲單元到達(dá)某一特定位置觸發(fā)中斷發(fā)生單元,中斷發(fā)生單元產(chǎn)生中斷給其對應(yīng)的設(shè)備;E對應(yīng)設(shè)備根據(jù)中斷的優(yōu)先級進(jìn)行判斷,是否處理該中斷;F處理中斷,發(fā)送或者接收數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述方法,其特征在于步驟C中的某一特定位置不限定為一個位置,可以設(shè)置多個的特定位置。
11.根據(jù)權(quán)利要求9所述方法,其特征在于步驟A中的兩個中斷發(fā)生單元使能寄存器可以都設(shè)置為不用。
12.根據(jù)權(quán)利要求11所述方法,其特征在于步驟C中的不同特定位置對應(yīng)的中斷可以分配不同級別的優(yōu)先級。這些特定的位置可以由存儲器控制單元上層軟件進(jìn)行設(shè)置。
全文摘要
本發(fā)明公開了多中斷緩存裝置和方法,該裝置包含存儲器,存儲器控制單元,中斷發(fā)生單元。必要時可以給中斷產(chǎn)生單元分配一個中斷產(chǎn)生單元寄存器,來控制中斷產(chǎn)生單元產(chǎn)生中斷。該方法包括以下步驟設(shè)置每個中斷產(chǎn)生條件寄存器;設(shè)置中斷發(fā)生單元使能寄存器;發(fā)送數(shù)據(jù);存儲單元到達(dá)某一特定位置觸發(fā)中斷發(fā)生單元,中斷發(fā)生單元產(chǎn)生中斷給其對應(yīng)的設(shè)備;對應(yīng)設(shè)備根據(jù)中斷的優(yōu)先級進(jìn)行判斷,是否處理該中斷;處理中斷,發(fā)送或者接收數(shù)據(jù)。本發(fā)明可以充分利用存儲器的空間,減少對設(shè)備工作的干擾,同時避免了存儲器堵塞和空置以及設(shè)備的等待。
文檔編號G06F13/20GK1804822SQ20051013744
公開日2006年7月19日 申請日期2005年12月30日 優(yōu)先權(quán)日2005年12月30日
發(fā)明者張怡浩 申請人:北京中星微電子有限公司