亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

系統(tǒng)總線的防死鎖方法、裝置及片上系統(tǒng)的制作方法

文檔序號(hào):6463783閱讀:460來(lái)源:國(guó)知局
專利名稱:系統(tǒng)總線的防死鎖方法、裝置及片上系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及系統(tǒng)總線技術(shù)領(lǐng)域,特別涉及防止片上系統(tǒng)內(nèi)部的互聯(lián)總線死 鎖的方法及裝置,以及片上系統(tǒng)。
背景技術(shù)
較為成熟的SoC (SoC, System on Chip,片上系統(tǒng))內(nèi)部總線的互聯(lián)協(xié)議 有AXI (先進(jìn)可擴(kuò)展接口 )、 OCP (開(kāi)放核協(xié)議)等。在基于AXI總線協(xié)議的SoC 架構(gòu)中,通過(guò)Interconnect (總線互聯(lián)模塊)的Bus Matrix (總線矩陣)實(shí)現(xiàn) 多Master (主設(shè)備)對(duì)多Slave (從設(shè)備)的數(shù)據(jù)流交換。AXI協(xié)議通過(guò)數(shù)據(jù)攜 帶的ID號(hào)進(jìn)行數(shù)據(jù)跟蹤,AXI的Interconnect根據(jù)地址控制信號(hào)判斷目的出口 , 但是數(shù)據(jù)是按照其攜帶的序號(hào)來(lái)順序傳輸?shù)模磳?duì)于同一個(gè)Master的同一個(gè) ID號(hào)的數(shù)據(jù)必須按順序傳輸。同時(shí),AXI協(xié)議支持Outstanding (掛起)和 Out-of-Order (亂序)的傳輸模式。其中,Out-of-0rder包括讀數(shù)據(jù)亂序 (Out-of-Order Read )、寫數(shù)據(jù)間插(Write Interleave),以及讀和寫才喿作交 互。
不論是讀數(shù)據(jù)還是寫數(shù)據(jù),對(duì)于Slave來(lái)說(shuō),都需要向Master返回一個(gè)數(shù) 據(jù)(或者是讀數(shù)據(jù),或者是寫響應(yīng))。上述的亂序傳輸是指對(duì)于同一個(gè)Slave不 同ID號(hào)的數(shù)據(jù)可按照亂序返回。
所以,對(duì)于不同的Master來(lái)說(shuō),如果它們采用相同的ID號(hào)發(fā)送數(shù)據(jù),為 了區(qū)分, 一般都在將ID號(hào)修改成Master的編號(hào)和原ID的組合,這樣,對(duì)于 Interconnect來(lái)說(shuō),不同的Master發(fā)出的相同的ID號(hào)的教:據(jù),由于ID號(hào)被修 改了,是可以亂序傳輸?shù)?。而?duì)于Slave來(lái)i兌,*接收到不同Master的相同ID 的數(shù)據(jù),也可以按照亂序傳輸。
由于上述Slave對(duì)于不同Master的相同IDlt據(jù)的處理方式,佳_得在AXI 總線運(yùn)用過(guò)程中,可能出現(xiàn)死鎖,如圖l所示,其中,mi—x—sj是表示Master i 到Slave j的讀命令,x表示ID號(hào)。
圖1中,Masterl發(fā)送了兩個(gè)ID號(hào)均為0的命令,第一個(gè)命令發(fā)給Slavel,第二個(gè)命令發(fā)給Slave2。由于ID號(hào)相同,所以要按照順序傳輸,這里的順序傳 輸是指有與Masterl的直接連接的Slave接口 1來(lái)保證的,slave接口 1需要 先將Slavel返回的數(shù)據(jù)傳輸給Masterl,再將Slave2返回的數(shù)據(jù)傳輸給 Masterl,所以先傳輸發(fā)送給Slavel數(shù)據(jù),再傳輸發(fā)送給Slave2的數(shù)據(jù)。也就 是說(shuō),先傳輸圖中的ml_0-sl命令,再傳輸ml — 0-s2。同理,圖中的Master2發(fā) 送的兩個(gè)ID號(hào)均為0的命令,需要先傳輸m2-0-s2命令,再傳輸m2-0 —sl。
圖1中的Slave接口 1和Slave接口 2均需要修改數(shù)據(jù)的ID,以區(qū)分不同 Master以相同ID傳輸?shù)拿?。即slave接口 1將ID為0的命令修改成ID為 00的命令,slave接口 2將ID為0的命令修改成ID為10的命令。即生成如 下四個(gè)命令ml_00-sl、 ml-00-s2、 m2_10_s2、 m2_10_sl。所以,在interconnect 內(nèi)部,以及Slave均會(huì)以ID不同的方式來(lái)處理接收到的命令,也就是可以亂序 傳輸。
由于Slavel /人interconnect內(nèi)部的masterl的4妄口"|妾》1欠到兩個(gè)ID號(hào)不同 的命令ml — 00-sl和m2 — 10-sl, Slavel可以亂序處理接收到的命令。
假設(shè)slavel亂序優(yōu)先處理了第二個(gè)命令m2_ 10_ s 1,優(yōu)先返回根據(jù)m2_ 10_ s 1 4f到的凄t才居給master2。 <旦由于Master2與interconnect連>|妄的slave2的才妄口 連接,使得Slavel的根據(jù)m2_10_sl得到的數(shù)據(jù)在通過(guò)slave2的接口返回給 Master2之前,需要等到Slave2已經(jīng)根據(jù)m2 —10_s2得到的數(shù)據(jù)先返回給 Master2。
如果此時(shí)的情況是Slave2亂序處理后,優(yōu)先返回才艮據(jù)ml_00_s2得到數(shù)據(jù) 給Masterl,那么在Slave2無(wú)法成功返回根據(jù)ml_00—s2得到數(shù)據(jù)給Masterl之 前,暫時(shí)不能返回根據(jù)m2-10 —s2得到數(shù)據(jù)給Master2。但是Slave2要成功通過(guò) slavel的接口返回根據(jù)ml — 00 — s2得到的數(shù)據(jù)給Masterl,也需要等到slavel 已經(jīng)根據(jù)m2 — 10_s 1得到的數(shù)據(jù)返回完成后才可以達(dá)到,及需要完成前面的假設(shè) 目標(biāo)的完成。這樣就造成了 Slavel和Slave2返回的數(shù)據(jù)互相等待,并且slavel 和slave2的數(shù)據(jù)總線都得不到釋放,造成系統(tǒng)死鎖。
目前,解決上述原因造成的系統(tǒng)死鎖的方法,主要有如下兩種 1、在Interconnect連>|妄Master的Slave 口上增力口判斷還輯,如果一個(gè) Master使用同一個(gè)ID號(hào)訪問(wèn)不同的Slave,那么它在內(nèi)部把該Master的第二個(gè)訪問(wèn)掛起,也就是不接收該訪問(wèn),直到前一個(gè)訪問(wèn)完成才接收第二個(gè)訪問(wèn)。
2、如果同時(shí)有兩個(gè)MasteiM吏用相同的ID號(hào)同時(shí)訪問(wèn)不同的Slave,那么 它將阻塞后一個(gè)Master的操:作。直到前一個(gè)Master的才喿作完成,才啟動(dòng)后一 個(gè)Master的才喿4乍。
上述第一種防死鎖方法,由于同一個(gè)Master在同一時(shí)間不能通過(guò)同一 ID 訪問(wèn)不同的Slave,所以可以有效的防止AXI系統(tǒng)出現(xiàn)死鎖問(wèn)題。但是,這將損 失系統(tǒng)性能。圖2表示的是一個(gè)Master發(fā)出相同ID號(hào)訪問(wèn)不同Slave的情況, Master2前面的一個(gè)idG的4喿作訪問(wèn)Slave2,而后面的一個(gè)idG的4喿作要訪問(wèn) 的Slavel,可是Interconnect 4巴后面的idO:燥作癥會(huì)阻止了 ,以防死鎖的發(fā)生。 這時(shí),Master2后面的idl, id2的操作都不可能發(fā)出來(lái)了 。而如果Slave2處理 Master2的優(yōu)先級(jí)^艮低,那么Master2發(fā)送的id0的操作就會(huì)被Slave2放在它 的處理隊(duì)列的下面,如圖2所示,id0的操作在Slave2中隊(duì)列的最下面。如果 Slave2的隊(duì)列^艮深,Master2就將被阻塞#:久。這樣,Master2就相當(dāng)于癥會(huì)凍結(jié) 了,它的outstanding特性也發(fā)揮不出來(lái)。
上述第二種防死鎖方法也存在性能損失的問(wèn)題。如圖3所示,Master2分 別發(fā)送兩個(gè)id0的操作到Slavel和Slave2, id0到Slave2的操作是在前面的, 而idO到Slavel的4喿作是在后面的。而這時(shí)Masterl也有兩個(gè)idO才喿作需要分 別發(fā)送到Slavel和Slave2。 Interconnect才艮據(jù)判斷死鎖規(guī)遞原則,將把Master 1 的操作阻塞,直到Master2發(fā)送到Slave2所有idO才喿作完成。而Master2發(fā)送 到Slave2的idO操作可能在Slave2中阻塞很久,使得Masterl就被阻塞很久, 所以這里就嚴(yán)重限制了 Masterl的處理速度。
第二種防死鎖方法還有可能出現(xiàn)如下缺陷如圖4所示,Master2先發(fā)出 id0的操作給Slave2,然后再發(fā)出id0的操作給Slavel,因?yàn)閮?yōu)先級(jí)的關(guān)系, Slave2暫時(shí)沒(méi)有處理Master2發(fā)來(lái)的id0的操作,而Slavel已經(jīng)處理了 Master2 發(fā)來(lái)的idO的操作,但是,需要等到Slave2的數(shù)據(jù)返回到Mas ter2,才能將Slavel 的數(shù)據(jù)返回Master2。造成其他Master,如Masterl, MasterO都不能正常訪問(wèn) Slavel
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供了一種系統(tǒng)總線的防死鎖方法、裝置及片上系統(tǒng),在防 止系統(tǒng)發(fā)生死鎖的同時(shí),能夠較好的保證總線的性能。
為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案 一種系統(tǒng)總線的防死鎖方法,包括 接收操作命令;
判斷所接收到的操作命令與已下發(fā)但未完成的目標(biāo)操作命令是否會(huì)造成系 統(tǒng)死鎖;
若會(huì)造成系統(tǒng)死鎖,則阻塞向從設(shè)備下發(fā)所接收到的操作命令; 下發(fā)提高優(yōu)先級(jí)命令,以加快所述目標(biāo)操作命令的處理。 一種系統(tǒng)總線的防死鎖裝置,包括 存儲(chǔ)模塊,用于存儲(chǔ)已下發(fā)的目標(biāo)操作命令; 接收模塊,用于接收操作命令;
判斷模塊,用于判斷接收模塊接收到的操作命令與存儲(chǔ)模塊中的目標(biāo)操作 命令是否會(huì)造成系統(tǒng)死鎖;
阻塞模塊,用于在所述判斷模塊判斷會(huì)造成系統(tǒng)死鎖時(shí),阻塞下發(fā)所接收 到的操作命令;
發(fā)送模塊,用于在所述判斷模塊判斷會(huì)造成系統(tǒng)死鎖時(shí),下發(fā)提高優(yōu)先級(jí) 命令,以加快所述目標(biāo)操作命令的處理。
一種片上系統(tǒng),包括用于與總線互聯(lián)模塊連接的從設(shè)備,所述從設(shè)備包括: 存儲(chǔ)單元,用于存儲(chǔ)未完成的操作命令;
接收單元,用于接收提高優(yōu)先級(jí)命令,所述提高優(yōu)先級(jí)命令中包括操作命 令的序號(hào);
查找單元,用于在所述存儲(chǔ)單元中根據(jù)提高優(yōu)先級(jí)命令中的序號(hào)查找未完 成的目標(biāo)操作命令;
優(yōu)先級(jí)修改單元,用于提高查找單元在存儲(chǔ)單元中查找到的目標(biāo)操作命令 的優(yōu)先級(jí)。
由上述技術(shù)方案所描述的本發(fā)明的實(shí)施例,在接收到一個(gè)才喿作命令時(shí),首 先去判斷該操作命令,是否會(huì)于之前已經(jīng)發(fā)出但尚未完成的目標(biāo)操作命令發(fā)生 死鎖,如果上述的兩個(gè)操作命令存在發(fā)生死鎖的條件,就認(rèn)為可能發(fā)生死鎖,則需要將剛接收到的操作命令阻塞,以截?cái)嗫赡馨l(fā)生死鎖的條件,防止了死鎖 現(xiàn)象的產(chǎn)生,同時(shí)本發(fā)明實(shí)施例還需要發(fā)送一個(gè)提高優(yōu)先級(jí)命令,以加快目標(biāo) 操作命令的處理速度。這樣可以加快解除發(fā)生死鎖的條件,以減少剛接收到的
命令被阻塞的時(shí)間,從而在整體上保證操作命令的處理速度,能夠較好地保證 片上系統(tǒng)總線的性能。


為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施 例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描 述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不 付出創(chuàng)造性勞動(dòng)性的前提下,還可以才艮據(jù)這些附圖獲得其他的附圖。
圖1為現(xiàn)有技術(shù)中AXI總線的原理圖2為現(xiàn)有技術(shù)中第一種防死鎖方法應(yīng)用的示意圖3為現(xiàn)有技術(shù)中第二種防死鎖方法運(yùn)用的示意圖4為現(xiàn)有技術(shù)中第二種防死鎖方法另一種運(yùn)用的示意圖5為本發(fā)明實(shí)施例1中防死鎖方法的流程圖6為本發(fā)明實(shí)施例1中防死鎖裝置的框圖7為本發(fā)明實(shí)施例1中系統(tǒng)的從設(shè)備示意圖8為本發(fā)明實(shí)施例2中防死鎖方法的流程圖9為本發(fā)明實(shí)施例2中防死鎖裝置的框圖IO為本發(fā)明實(shí)施例2中傳輸Dummy操作命令的時(shí)序圖11為本發(fā)明實(shí)施例2中系統(tǒng)的從設(shè)備示意圖12為本發(fā)明實(shí)施例2中DDRC的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
本發(fā)明實(shí)施例在存在可能發(fā)生死鎖的條件時(shí),阻塞剛接收到的搡作命令, 并發(fā)送提高優(yōu)先級(jí)命令,加快已發(fā)出但未完成的目標(biāo)操作命令的處理速度,在 截?cái)喟l(fā)生死鎖條件的同時(shí),充分利用系統(tǒng)總線的性能。
下面結(jié)合附圖對(duì)本發(fā)明系統(tǒng)總線的防死鎖方法、裝置及從設(shè)備的實(shí)施例進(jìn)4亍詳細(xì)4苗述。
實(shí)施例1:
如圖5所示,本實(shí)施例中系統(tǒng)總線的防死鎖方法包括如下步驟
501、 總線互聯(lián)模塊接收到主設(shè)備發(fā)送的操作命令,在本實(shí)施例中,該操作 命令可以包括序號(hào)、訪問(wèn)的從設(shè)備、操作命令對(duì)應(yīng)的地址以及操作命令的具體 操作。
502、 總線互聯(lián)模塊判斷所接收到的操作命令與已下發(fā)但未完成的目標(biāo)操作 命令是否會(huì)造成系統(tǒng)死鎖。本步驟中判斷是否會(huì)造成系統(tǒng)死鎖的具體技術(shù)為
當(dāng)同一個(gè)主設(shè)備采用同一個(gè)序號(hào)的操作命令訪問(wèn)不同的從設(shè)備,或者不同的主 設(shè)備采用同 一個(gè)序號(hào)的操作命令分別訪問(wèn)不同的從設(shè)備時(shí),則在后續(xù)從設(shè)備對(duì) 操作命令進(jìn)行處理時(shí),可能造成系統(tǒng)死鎖。
本步驟中,如果判斷得出不存在可能發(fā)生死鎖的條件,則執(zhí)行步驟503;否 則執(zhí)行步驟504。
503、 如果上述步驟502中不存在可能發(fā)生死鎖的條件,則通過(guò)相應(yīng)的接口 將操作命令發(fā)送到相應(yīng)的從設(shè)備中,并結(jié)束流程。
504、 如果上述步驟502中存在可能發(fā)生死鎖的條件,則總線互聯(lián)模塊阻塞 所接收到的操作命令,本實(shí)施例中實(shí)現(xiàn)方式為將總線互聯(lián)模塊中發(fā)送該操作 命令到相應(yīng)從設(shè)備準(zhǔn)備信號(hào)(axready)置為無(wú)效,并將接收到操作命令進(jìn)行緩 存。
505、 總線互聯(lián)模塊通過(guò)地址通道向目標(biāo)操作命令對(duì)應(yīng)的從設(shè)備下發(fā)提高優(yōu) 先級(jí)命令,以加快該從設(shè)備對(duì)所述目標(biāo)操作命令的處理速度。
本實(shí)施例還提供一種系統(tǒng)總線的防死鎖裝置,如圖6所示,該裝置包括 存儲(chǔ)模塊61、接收模塊62、判斷模塊63、阻塞模塊64和發(fā)送模塊65。
在存儲(chǔ)模塊61存儲(chǔ)了已下發(fā)到從設(shè)備的操作命令,當(dāng)從設(shè)備完成了操作命 令時(shí),需要將已完成的操作命令置為無(wú)效,或者刪除。接收模塊62用于接收主 設(shè)備發(fā)送的操作命令,該操作命令中至少包括序號(hào)和訪問(wèn)的從設(shè)備。判斷模塊 63根據(jù)所述的序號(hào)和訪問(wèn)的從設(shè)備,判斷所接收到的操作命令與存儲(chǔ)模塊61中 有效的操作命令是否會(huì)造成系統(tǒng)死鎖,具體造成系統(tǒng)死鎖的條件為同一個(gè)主 設(shè)備采用同一個(gè)序號(hào)的操作命令訪問(wèn)不同的從設(shè)備,或者不同的主設(shè)備采用同一個(gè)序號(hào)的操作命令分別訪問(wèn)不同的從設(shè)備。
當(dāng)判斷模塊63判斷得出存在可能發(fā)生死鎖的條件時(shí),通過(guò)阻塞模塊64阻 塞所接收到的操作命令;即不將接收到的操作命令發(fā)送到對(duì)應(yīng)的從設(shè)備。還需 要獲取存儲(chǔ)模塊61可能發(fā)生死鎖條件對(duì)應(yīng)的目標(biāo)操作命令,通過(guò)發(fā)送模塊65 向所述目標(biāo)操作命令對(duì)應(yīng)的從設(shè)備下發(fā)提高優(yōu)先級(jí)命令,以加快該從設(shè)備所述 目標(biāo)操作命令的處理速度。
對(duì)應(yīng)于上述防死鎖方法,本實(shí)施例還提供一種片上系統(tǒng),包括總線互聯(lián)才莫 塊以及連接到總線互聯(lián)模塊的從設(shè)備,如圖7所示,該總線互聯(lián)模塊的從設(shè)備 包括存儲(chǔ)單元71、接收單元72、查找單元73和優(yōu)先級(jí)修改單元74。
在存儲(chǔ)單元71中存儲(chǔ)了該從設(shè)備所有已經(jīng)接收但未完成的操作命令;當(dāng)接 收單元72接收到總線互聯(lián)模塊發(fā)來(lái)的提高優(yōu)先級(jí)命令時(shí),查找單元73在存儲(chǔ) 單元71中查找對(duì)應(yīng)的未完成操作命令,在提高優(yōu)先級(jí)命令中需要攜帶操作命令 的序號(hào),這樣查找單元73就可以根據(jù)所述的序號(hào)來(lái)查找未完成的操作命令。在 查找到對(duì)應(yīng)的未完成操作命令后,通過(guò)優(yōu)先級(jí)修改單元74查找到的操作命令的 優(yōu)先級(jí)修改為當(dāng)前最高,以使得該從設(shè)備能夠優(yōu)先處理所查找到的操作命令, 從而能夠快速地解除總線發(fā)生死鎖的條件,以充分利用片上系統(tǒng)內(nèi)部總線的性 能。
本實(shí)施例中,在阻塞可能發(fā)生死鎖的操作命令的同時(shí),發(fā)送一個(gè)提高優(yōu)先 級(jí)命令,以使得之前已發(fā)出但未完成,并且會(huì)和剛接收到的操作命令發(fā)生死鎖 操作命令能夠快速被處理,快速解除發(fā)生死鎖的條件,以減少剛接收到的命令 被阻塞的時(shí)間,從而在整體上保證操作命令的處理速度,能夠較好地保證片上 系統(tǒng)總線的性能。
實(shí)施例2:
本實(shí)施例是在AXI總線中實(shí)現(xiàn)的系統(tǒng)內(nèi)部總線的防死鎖技術(shù),在其他總線 中也可以采用本實(shí)施例類似的技術(shù)方案。如圖8所示,本實(shí)施例中系統(tǒng)總線的 防死鎖方法包括如下步驟
801、AXI總線的interconnect將每個(gè)發(fā)送到從設(shè)備的操作命令均保存下來(lái), 并且記錄所保存操作命令的序號(hào)和對(duì)應(yīng)的從設(shè)備,在完成該操作命令后,可以
將其置為無(wú)效,或者直接刪除,本實(shí)施例中采用置為無(wú)效的方式。interconnect中保存的有效目標(biāo)操作命令表示該操作命令是已經(jīng)發(fā)出,但是并沒(méi)有完成的。
802、 AXI總線的interconnect接收到Masterl (主i殳備1 )發(fā)送的才喿作命 令,假定該操作命令的序號(hào)為0,需要訪問(wèn)的Slavel (從設(shè)備l),并且要求讀 取Slavel中特定地址的數(shù)據(jù)。
803、 獲耳又interconnect中保存的所有有效目標(biāo)4喿作命令的序號(hào),以及訪 問(wèn)的從設(shè)備。
804、 判斷所獲取到的序號(hào)是否和接收到的操作命令序號(hào)相同,即獲取到的 序號(hào)是否為0;并判斷所獲取到訪問(wèn)的從設(shè)備與接收到的操作命令訪問(wèn)的從設(shè)備 是否相同,即獲取到訪問(wèn)的從設(shè)備是否為Slavel。若所獲取的序號(hào)為0,且訪 問(wèn)的設(shè)備不是Slavel,則執(zhí)行步驟806;否則執(zhí)行步驟805。
805、 所接受到的操作命令與之前已發(fā)出但未完成的操作命令不會(huì)造成系統(tǒng) 死鎖,所以可以直接將接收到的操作命令發(fā)送到對(duì)應(yīng)的從設(shè)備中。
806、 所接受到的操作命令與之前已發(fā)出但未完成的操作命令可能造成系統(tǒng) 死鎖,所以需要阻塞所接收到的操作命令,即將該操作命令的地址信號(hào)和序號(hào) 進(jìn)行緩存。本步驟中,在阻塞剛接收到的操作命令的同時(shí),可以將剛接收到的 操作命令緩存。
807、 假定目標(biāo)操作命令訪問(wèn)的從設(shè)備是Slave2,則本步驟中需要向Slave2 發(fā)送一個(gè)提高優(yōu)先級(jí)命令,以加快Slave2對(duì)目標(biāo)操作命令的處理速度。 一般情 況下,所述提高優(yōu)先級(jí)命令至少包括目標(biāo)操作命令的序號(hào),還應(yīng)該包括目標(biāo)操 作命令對(duì)應(yīng)的從設(shè)備編號(hào),以便將該提高優(yōu)先級(jí)命令發(fā)送到對(duì)應(yīng)編號(hào)的從設(shè)備中。
808、 從設(shè)備Slave2接收到提高優(yōu)先級(jí)命令后,根據(jù)提高優(yōu)先級(jí)命令中目 標(biāo)操作命令的序號(hào),查找到未完成的操作命令,如果沒(méi)有查找到相應(yīng)的操作命 令,則可以不進(jìn)行任何操作,如果查找到了相關(guān)的操作命令,則執(zhí)行步驟809。
809、 將查找到的操作命令的優(yōu)先級(jí)置為當(dāng)前最高,由于在從設(shè)備中,將接 收到的操作命令按照先進(jìn)先出的方式排列,本實(shí)施例中可以將所查找到的操作 命令修改到先進(jìn)先出隊(duì)列的隊(duì)首,以實(shí)現(xiàn)將優(yōu)先級(jí)置為當(dāng)前最高的效果。
810、 在將提高優(yōu)先級(jí)命令發(fā)出后,本實(shí)施例中的interconnect還需要時(shí) 刻檢測(cè)目標(biāo)操作命令是否已經(jīng)完成;并在目標(biāo)操作命令完成后,將剛剛接收到并被阻塞的操作命令發(fā)送到對(duì)應(yīng)的從設(shè)備,即發(fā)送給Slavel。
對(duì)應(yīng)于上述防死鎖方法,本實(shí)施例還提供一種片上系統(tǒng)內(nèi)部總線的防死鎖 裝置,該裝置是基于現(xiàn)有AXI總線的interconnect實(shí)現(xiàn)的,如圖9所示,該裝 置具體包括存儲(chǔ)模塊91、接收模塊92、判斷模塊93、阻塞模塊94和發(fā)送模 塊95。
在存儲(chǔ)模塊91存儲(chǔ)了已下發(fā)到從設(shè)備的操作命令,當(dāng)從設(shè)備完成了操作命 令時(shí),需要將已完成的操作命令置為無(wú)效。接收模塊92用于接收主設(shè)備發(fā)送的 操作命令,該操作命令中至少包括序號(hào)和訪問(wèn)的從設(shè)備。
判斷模塊93根據(jù)所述的序號(hào)和訪問(wèn)的從設(shè)備編號(hào),分析所接收到的操作命 令與存儲(chǔ)模塊91中有效的操作命令是否會(huì)造成系統(tǒng)死鎖,可能發(fā)生死鎖的條件 為同一個(gè)主設(shè)備采用同一個(gè)序號(hào)的操作命令訪問(wèn)不同的從設(shè)備,或者不同的 主設(shè)備采用同一個(gè)序號(hào)的操作命令分別訪問(wèn)不同的從設(shè)備。
本實(shí)施例中,所述判斷模塊93的具體實(shí)現(xiàn)如下
通過(guò)獲取模塊931獲取存儲(chǔ)模塊91中目標(biāo)操作命令的序號(hào)和訪問(wèn)的從設(shè) 備;然后通過(guò)判斷子模塊932判斷所述接收到的操作命令序號(hào)與所獲取的序號(hào) 是否相同,并且判斷接收到的操作命令訪問(wèn)的從設(shè)備與目標(biāo)操作命令訪問(wèn)的從 設(shè)備是否相同;如果所迷的序號(hào)相同,但訪問(wèn)的從設(shè)備不同,則通過(guò)輸出模塊 933輸出表示存在造成系統(tǒng)死鎖條件的信號(hào),否則輸出模塊933輸出表示不會(huì)造 成系統(tǒng)死鎖的信號(hào)。
當(dāng)判斷模塊93中的輸出模塊933輸出表示存在可能發(fā)生死鎖的條件時(shí),通 過(guò)阻塞模塊94阻塞所接收到的操作命令;即不將接收到的操作命令發(fā)送到對(duì)應(yīng) 的從設(shè)備。同時(shí)需要獲取存儲(chǔ)模塊91可能發(fā)生死鎖條件對(duì)應(yīng)的目標(biāo)操作命令, 通過(guò)發(fā)送模塊95向目標(biāo)操作命令對(duì)應(yīng)的從設(shè)備下發(fā)提高優(yōu)先級(jí)命令,以加快該 從設(shè)備對(duì)所述目標(biāo)操作命令的處理速度。
本實(shí)施例中的防死鎖裝置還包括檢測(cè)模塊96和操作命令發(fā)送模塊97。檢測(cè) 模塊96周期性地檢測(cè)目標(biāo)操作命令是否已經(jīng)完成;當(dāng)檢測(cè)到所述目標(biāo)操作命令 完成時(shí),通過(guò)操作命令發(fā)送模塊97將剛剛接收到并被阻塞的操作命令發(fā)送到對(duì) 應(yīng)的從設(shè)備。
本實(shí)施例中發(fā)送提高優(yōu)先級(jí)命令的具體實(shí)現(xiàn)如下在Interconnect上相應(yīng)的Master 口發(fā)出一個(gè)D畫y (內(nèi)部)操作命令,用 來(lái)表示提高優(yōu)先級(jí)命令,在該Dummy操作命令中包含了需要提高優(yōu)先級(jí)的操作 命令的序號(hào)。所述的Dummy操作命令是Slave可以認(rèn)識(shí)的,Slave接收到該Dummy 操作命令后,查找Dummy操作命令中序號(hào)所對(duì)應(yīng)的操作命令,并將查找到的操 作命令的優(yōu)先級(jí)置為當(dāng)前最高,這樣Slave就能把相應(yīng)的操作立刻完成。
對(duì)于Dummy操作命令的傳輸,必須符合AXI協(xié)議的傳輸,而且必須能夠指 示出Dummy操作命令的特殊操作。本實(shí)施例中通過(guò)AXI總線的地址通道中Burst (缺口 )信號(hào)來(lái)指示出Dummy操作命令的特殊操作。在AXI總線的地址通道中 Burst信號(hào)中的一個(gè)值沒(méi)有使用,而且Burst信號(hào)是在地址通道中作為控制信號(hào) 進(jìn)行傳輸?shù)男盘?hào),基本上所有的AXI總線的從設(shè)備都會(huì)使用Burst信號(hào)。
所以本實(shí)施例中的Dummy操:作命令包括有效的地址信號(hào)、序號(hào)和Burst信 號(hào),并且不需要接收Slave的響應(yīng)信號(hào),這使得命令就簡(jiǎn)單,使得Interconnect 和Slave上所需要增加的邏輯減少。
如圖10所示,在地址通道傳輸Dummy才喿作命令的時(shí)候,地址信號(hào)和序號(hào)是 由分析模塊傳輸過(guò)來(lái),而Burst信號(hào)需要固定為2, bll(以表示該信號(hào)為Dummy 操作命令),其他信號(hào)都可以固定為O。
對(duì)應(yīng)于上述防死鎖方法,以及在interconnect中設(shè)計(jì)的防死鎖裝置,本實(shí) 施例還提供一種片上系統(tǒng)的從設(shè)備,該從設(shè)備主要運(yùn)用在上述的AXI總線中。 如圖11所示,該從設(shè)備包括存儲(chǔ)單元lll、接收單元112、查找單元113和 優(yōu)先級(jí)修改單元114。
在存儲(chǔ)單元lll中存儲(chǔ)了該從設(shè)備所有已經(jīng)接收但未完成的操作命令;當(dāng) 接收單元112接收到總線互聯(lián)模塊發(fā)來(lái)的提高優(yōu)先級(jí)命令時(shí),查找單元113在 存儲(chǔ)單元lll中查找對(duì)應(yīng)的未完成操作命令,在提高優(yōu)先級(jí)命令中需要攜帶操 作命令的序號(hào),這樣查找單元113就可以根據(jù)所述的序號(hào)來(lái)查找未完成的操作 命令。在查找到對(duì)應(yīng)的未完成操作命令后,通過(guò)優(yōu)先級(jí)修改單元114查找到的 操作命令的優(yōu)先級(jí)修改為當(dāng)前最高,以使得該從設(shè)備能夠優(yōu)先處理所查找到的 操作命令,從而能夠快速地解除總線發(fā)生死鎖的條件,以充分利用片上系統(tǒng)內(nèi)
理,本實(shí)施例片上系統(tǒng)的從設(shè)備中的存儲(chǔ)單元lll為先進(jìn)先出隊(duì)列,每個(gè)先到達(dá)從設(shè)備的操作命令將被優(yōu)先處理,通過(guò)將操作命令修改到先進(jìn)先出隊(duì)列的隊(duì) 首,即可將該操作命令的優(yōu)先級(jí)提高到當(dāng)前最高。
除了采用FIFO (先進(jìn)先出)隊(duì)列管理操作命令的優(yōu)先級(jí)以外,在具體實(shí)現(xiàn) 時(shí),還可以采用其他的方式對(duì)操作命令的優(yōu)先級(jí)進(jìn)行管理,此處不再贅述。
上述的提高優(yōu)先級(jí)命令就是interconnect發(fā)出的Dummy操作命令,Slave 接收到該Dummy操作命令后,查找Dummy操作命令中序號(hào)所對(duì)應(yīng)的操作命令, 并將查找到的操作命令的優(yōu)先級(jí)置為當(dāng)前最高,即將查找到的操作命令修改到 先進(jìn)先出隊(duì)列的隊(duì)首,這樣Slave就能把相應(yīng)的操作立刻完成。通過(guò)上述方法 把阻塞的源條件解除了 ,該Slave的處理優(yōu)先級(jí)被臨時(shí)打斷了一下,對(duì)于該Slave 需要滿足的QoS (服務(wù)質(zhì)量)影響不大,但卻比較好的滿足了 AXI總線的QoS。
上述描述從設(shè)備的對(duì)于Dummy操作命令的響應(yīng),對(duì)于AXI系統(tǒng)總線的所有 Slave都是可用的。由于SoC系統(tǒng)的一般架構(gòu)中,DDRC (雙速率動(dòng)態(tài)隨機(jī)訪問(wèn)存 儲(chǔ)控制器)是SoC系統(tǒng)的整個(gè)帶寬決定點(diǎn)。很多master的大部份操作都是訪問(wèn) DDRC。所以AXI系統(tǒng)總線中連接的DDRC控制器Outstanding (請(qǐng)求掛起) 一般 是比較深的,而且支持Out-of-0rder。下面就Slave是DDRC的情況進(jìn)行描述。
如圖12所示,在從設(shè)備DDRC中,新增的邏輯單元(LU)通過(guò)AXI傳l餘的 命令通道接收到信號(hào),LU對(duì)接收到進(jìn)行判斷,如果不是Dummy操作命令,則進(jìn) 行正常的傳輸;如果接收到的信號(hào)是Dummy操作命令,那么LU給出Ready信號(hào), 并且把Dummy操作命令中的ID號(hào)存儲(chǔ)下來(lái),然后在命令FIFO里面查找ID號(hào)與 Dummy操作命令中的ID號(hào)相符操作命令,如果找到符合要求的操作命令,則把 該操作命令的優(yōu)先級(jí)設(shè)置為當(dāng)前最高,下一次DDRC就會(huì)馬上執(zhí)行,而如果沒(méi)有 發(fā)現(xiàn)符合要求的操作命令命令,可以不做任何操作,那是因?yàn)樗龅牟僮髅?可能是DDRC剛剛執(zhí)行完成或正在執(zhí)行。
在上述實(shí)施例中,接收到操作命令后,如果會(huì)與之前已發(fā)送的操作命令發(fā) 生死鎖,則阻塞剛接收到的操作命令,并通過(guò)提高優(yōu)先級(jí)命令請(qǐng)求加快之前已 發(fā)送的操作命令的處理,這個(gè)提高優(yōu)先級(jí)命令通過(guò)Dummy操作命令實(shí)現(xiàn),只需 要用到AXI中的一個(gè)寫地址通道,將其中的Burst信號(hào)設(shè)為2, bll,來(lái)表時(shí)該 寫地址通道傳輸?shù)氖荄ummy操作命令。Slave接收到Dummy操作命令后,提高對(duì) 應(yīng)操作命令的優(yōu)先級(jí),即將對(duì)應(yīng)操作命令修改到先進(jìn)先出隊(duì)列的隊(duì)首,這樣Slave就會(huì)馬上處理對(duì)應(yīng)的操作命令,從而解除發(fā)生死鎖的條件,使得被阻塞的 操作命令能夠較快地被發(fā)送到相應(yīng)的Slave。
以上所述實(shí)施例主要用在各種需要對(duì)總線的系統(tǒng)中,以防止發(fā)生死鎖,并 能夠充分利用總線的性能,特別是用在容易發(fā)生死鎖的AXI總線系統(tǒng),以及AXI 總線系統(tǒng)中所用的從設(shè)備中。
通過(guò)以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā) 明可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但 很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì) 上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算 機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤,硬盤或光盤等,包 括若干指令用以使得一臺(tái)設(shè)備(可以是服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明 各個(gè)實(shí)施例所述的方法。
以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于 此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到 的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍 應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1、一種系統(tǒng)總線的防死鎖方法,其特征在于包括接收操作命令;判斷所接收到的操作命令與已下發(fā)但未完成的目標(biāo)操作命令是否會(huì)造成系統(tǒng)死鎖;若會(huì)造成系統(tǒng)死鎖,則阻塞向從設(shè)備下發(fā)所接收到的操作命令;下發(fā)提高優(yōu)先級(jí)命令,以加快所述目標(biāo)操作命令的處理。
2、 根據(jù)權(quán)利要求1所述的系統(tǒng)總線的防死鎖方法,其特征在于,所述判斷 所接收到的操作命令與已下發(fā)但未完成的目標(biāo)操作命令是否會(huì)造成系統(tǒng)死鎖具 體為獲取已下發(fā)但未完成的目標(biāo)操作命令的序號(hào)和訪問(wèn)的從設(shè)備編號(hào);判斷所述接收到的操作命令序號(hào)與所獲取的序號(hào)是否相同,所述接收到的 操作命令訪問(wèn)的從設(shè)備與已下發(fā)但未完成的操作命令訪問(wèn)的從設(shè)備是否相同;若所述序號(hào)相同,并且所訪問(wèn)的從設(shè)備不同,則判斷會(huì)造成系統(tǒng)死鎖。
3、 根據(jù)權(quán)利要求1所述的系統(tǒng)總線的防死鎖方法,其特征在于,所述提高 優(yōu)先級(jí)命令包括所述目標(biāo)操作命令的序號(hào)。
4、 根據(jù)權(quán)利要求3所述的系統(tǒng)總線的防死鎖方法,其特征在于,所述加快 目標(biāo)操作命令的處理具體為根據(jù)提高優(yōu)先級(jí)命令中目標(biāo)操作命令的序號(hào),查找已下發(fā)但未完成的目標(biāo) 操作命令;提高所述查找到的目標(biāo)操作命令的優(yōu)先級(jí)。
5、 根據(jù)權(quán)利要求1所述的系統(tǒng)總線的防死鎖方法,其特征在于還包括 檢測(cè)所述目標(biāo)操作命令是否已經(jīng)完成;若所述目標(biāo)操作命令已經(jīng)完成,則向從設(shè)備下發(fā)所接收到的操作命令。
6、 一種系統(tǒng)總線的防死鎖裝置,其特征在于包括 存儲(chǔ)模塊,用于存儲(chǔ)已下發(fā)的目標(biāo)操作命令; 接收模塊,用于接收操作命令;判斷模塊,用于判斷接收模塊接收到的操作命令與存儲(chǔ)模塊中的目標(biāo)操作 命令是否會(huì)造成系統(tǒng)死鎖;阻塞模塊,用于在所述判斷模塊判斷會(huì)造成系統(tǒng)死鎖時(shí),阻塞下發(fā)所接收 到的操作命令;發(fā)送模塊,用于在所述判斷模塊判斷會(huì)造成系統(tǒng)死鎖時(shí),下發(fā)提高優(yōu)先級(jí) 命令,以加快所述目標(biāo)才喿作命令的處理。
7、 根據(jù)權(quán)利要求6所述的系統(tǒng)總線的防死鎖裝置,其特征在于,所述判斷 模塊包括獲取模塊,用于獲取所述存儲(chǔ)模塊中目標(biāo)操作命令的序號(hào),以及對(duì)應(yīng)訪問(wèn) 的從設(shè)備編號(hào);判斷子模塊,用于判斷接收模塊接收到的操作命令序號(hào)與所獲取的序號(hào)是 否相同,接收模塊接收到的操作命令訪問(wèn)的從設(shè)備編號(hào)與目標(biāo)操作命令訪問(wèn)的 從設(shè)備編號(hào)是否相同;輸出模塊,用于在判斷模塊判斷所述序號(hào)相同,并且所訪問(wèn)的從設(shè)備編號(hào) 不同時(shí),輸出表示會(huì)造成系統(tǒng)死鎖的信號(hào)。
8、 根據(jù)權(quán)利要求6所述的系統(tǒng)總線的防死鎖裝置,其特征在于還包括 檢測(cè)模塊,用于檢測(cè)所述目標(biāo)操作命令是否已經(jīng)完成;操作命令發(fā)送模塊,用于在檢所述測(cè)模塊檢測(cè)到所述目標(biāo)操作命令完成時(shí), 下發(fā)所接收到的操作命令。
9、 一種片上系統(tǒng),包括用于與總線互聯(lián)模塊連接的從設(shè)備,其特征在于, 所述從設(shè)備包括存儲(chǔ)單元,用于存儲(chǔ)未完成的操作命令;接收單元,用于接收提高優(yōu)先級(jí)命令,所述提高優(yōu)先級(jí)命令中包括操作命 令的序號(hào);查找單元,用于在所述存儲(chǔ)單元中根據(jù)提高優(yōu)先級(jí)命令中的序號(hào)查找未完 成的目標(biāo)操作命令;優(yōu)先級(jí)修改單元,用于提高查找單元在存儲(chǔ)單元中查找到的目標(biāo)操作命令 的優(yōu)先級(jí)。
10、根據(jù)權(quán)利要求9所述的片上系統(tǒng),其特征在于,所述存儲(chǔ)單元為先進(jìn) 先出隊(duì)列,所述優(yōu)先級(jí)修改單元將查找到的操作命令修改到所述先進(jìn)先出隊(duì)列 的隊(duì)首。
全文摘要
本發(fā)明的實(shí)施例公開(kāi)了一種系統(tǒng)總線的防死鎖方法、裝置及片上系統(tǒng),涉及片上系統(tǒng)技術(shù)領(lǐng)域,解決了現(xiàn)有防死鎖技術(shù)會(huì)較大程度地影響系統(tǒng)總線的性能的問(wèn)題。本發(fā)明實(shí)施例將可能產(chǎn)生死鎖的操作命令阻塞,并且通過(guò)發(fā)送一個(gè)提高優(yōu)先級(jí)命令,加快從設(shè)備對(duì)之前發(fā)出的并且引起死鎖根源的操作命令的處理速度。本發(fā)明實(shí)施例主要用在需要總線的系統(tǒng)或設(shè)備中,如AXI系統(tǒng)總線等。
文檔編號(hào)G06F13/14GK101308477SQ20081011067
公開(kāi)日2008年11月19日 申請(qǐng)日期2008年6月13日 優(yōu)先權(quán)日2008年6月13日
發(fā)明者晶 夏, 華 曾 申請(qǐng)人:華為技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1