專利名稱:一種自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法及重發(fā)緩沖器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳輸領(lǐng)域,特別是涉及一種當(dāng)發(fā)送的數(shù)據(jù)包出錯(cuò)時(shí),能夠自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法及能夠?qū)崿F(xiàn)該方法的重發(fā)緩沖器。
背景技術(shù):
隨著CPU計(jì)算能力的提高,要求較高的外圍數(shù)據(jù)傳輸速率,于是出現(xiàn)了PCI總線技術(shù)。PCI總線是獨(dú)立于CPU的系統(tǒng)總線,采用了獨(dú)特的中間緩沖器設(shè)計(jì),可將顯示卡、聲卡、網(wǎng)卡、硬盤控制器等高速的外圍設(shè)備直接掛在CPU總線上,可以使CPU的性能得到充分的發(fā)揮。但是,由于PCI總線只有133MB/s的帶寬,對(duì)付聲卡、網(wǎng)卡、視頻卡等絕大多數(shù)輸入/輸出設(shè)備也許顯得綽綽有余,但對(duì)于胃口越來(lái)越大的3D顯卡卻力不從心?,F(xiàn)在出現(xiàn)的千兆以太網(wǎng)卡更是需要極大的輸入輸出總線帶寬,于是發(fā)展出了PCI Express總線技術(shù),用來(lái)滿足越來(lái)越大的數(shù)據(jù)傳輸量。PCI Express將提供更高速的PC內(nèi)部終端設(shè)備聯(lián)接速度,它的最大特點(diǎn)在于可以大幅度的提高了傳輸帶寬。
隨著傳輸數(shù)據(jù)量越來(lái)越大,數(shù)據(jù)傳輸?shù)姆?wù)質(zhì)量(Quality of Service)越來(lái)越收到關(guān)注,要求數(shù)據(jù)傳輸?shù)母咝阅?、低延遲以及較高的成本效率。例如,傳輸高質(zhì)量的圖像數(shù)據(jù)時(shí),有一定的延遲將難以接受,但是在原來(lái)傳輸速率較低的時(shí)候,這樣的延遲并不是最突出的瓶頸。評(píng)價(jià)數(shù)據(jù)傳輸服務(wù)質(zhì)量的一個(gè)很重要方面就是ACK/NAK協(xié)議中的重發(fā)緩沖機(jī)制,其中ACK(ACKnowledgment)是指肯定應(yīng)答信號(hào),NAK(Negative ACKnowledgment)是指否定應(yīng)答信號(hào)。重發(fā)緩沖器保存已發(fā)送的數(shù)據(jù)包,直到重發(fā)緩沖器檢測(cè)到接收端發(fā)送的成功接收到數(shù)據(jù)包的反饋,才刪除該保存記錄。當(dāng)重發(fā)緩沖器檢測(cè)到出錯(cuò)反饋時(shí),將重發(fā)該數(shù)據(jù)包,從而確保數(shù)據(jù)傳輸完整到達(dá)目的端。
在現(xiàn)有通信技術(shù)中,對(duì)于出錯(cuò)的數(shù)據(jù)包(packet),一般是將出錯(cuò)信號(hào)通知軟件,由軟件自身來(lái)決定是否需要重新傳輸以及重新組包,硬件本身沒(méi)有自主計(jì)算機(jī)制,完全受軟件的控制。但是由于軟件需要連接CPU進(jìn)行計(jì)算,進(jìn)行編碼解碼的指令計(jì)算過(guò)程,因此就會(huì)產(chǎn)生較大的數(shù)據(jù)傳輸延遲。中國(guó)第02142556號(hào)專利申請(qǐng),提供了一種自動(dòng)請(qǐng)求重發(fā)ARQ方案,其中數(shù)據(jù)分組在第一預(yù)定時(shí)間區(qū)間從發(fā)送機(jī)發(fā)送到接收機(jī),并且在第二預(yù)定時(shí)間區(qū)間將肯定(ACK)和否定(NAK)確認(rèn)消息從接收機(jī)發(fā)送到發(fā)送機(jī)。對(duì)于每個(gè)已從發(fā)送機(jī)發(fā)送到接收機(jī)的數(shù)據(jù)分組,至少有兩個(gè)時(shí)間區(qū)間可以用于發(fā)送確認(rèn)消息。因此可以改善了同步反饋傳輸方案,但是軟件控制所帶來(lái)的延遲以及查錯(cuò)定位過(guò)程并沒(méi)有得到改善。中國(guó)第97199890號(hào)專利申請(qǐng)?zhí)岢隽艘环N用于自動(dòng)請(qǐng)求重發(fā)(ARQ)系統(tǒng)的檢錯(cuò)和糾錯(cuò)方案,通過(guò)對(duì)一個(gè)包括一個(gè)CRC段的接收數(shù)據(jù)分組的多個(gè)復(fù)本進(jìn)行相互比較確定各個(gè)不一致比特位置,所示檢錯(cuò)和糾錯(cuò)方案需要占用較多的系統(tǒng)資源,查找時(shí)間較長(zhǎng)。
現(xiàn)有的計(jì)算系統(tǒng)中雖然使用了重發(fā)緩沖器(replay buffer)來(lái)幫助出錯(cuò)數(shù)據(jù)包的重發(fā),但是由于現(xiàn)有的數(shù)據(jù)傳輸量不大,因此replay buffer采用半雙工的方式進(jìn)行,即緩存已發(fā)送數(shù)據(jù)包,直到收到肯定應(yīng)答信號(hào)才進(jìn)行下一數(shù)據(jù)包的發(fā)送,例如,USBl.0和1.1,以及USB2.0。而隨著數(shù)據(jù)傳輸量越來(lái)越大,需要在等待應(yīng)答的同時(shí)繼續(xù)發(fā)送數(shù)據(jù)包,則在replay buffer中需要保存多個(gè)已發(fā)送數(shù)據(jù)包,這樣雖然可以減少等待應(yīng)答的時(shí)間,但是增加了查找出錯(cuò)數(shù)據(jù)包的過(guò)程。現(xiàn)有技術(shù)一般采用上下文(context)的方式進(jìn)行查找,則硬件復(fù)雜而且占用較多的系統(tǒng)資源,查找時(shí)間較長(zhǎng)。
發(fā)明內(nèi)容
鑒于上述問(wèn)題,本發(fā)明的目的是提供一種可以提高自動(dòng)重發(fā)過(guò)程的速度,減少時(shí)間延遲,獲得較高的數(shù)據(jù)傳輸服務(wù)質(zhì)量的自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法和系統(tǒng)。
為解決上述技術(shù)問(wèn)題,本發(fā)明的目的是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的
本發(fā)明公開(kāi)了一種自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,應(yīng)用于數(shù)據(jù)傳輸過(guò)程,包括保存已發(fā)送數(shù)據(jù)包至主緩沖器;保存已發(fā)送數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址,以及一特定發(fā)送順序的數(shù)據(jù)包的ID;接收否定應(yīng)答消息,根據(jù)所述否定應(yīng)答消息得到出錯(cuò)數(shù)據(jù)包的ID;根據(jù)所述出錯(cuò)數(shù)據(jù)包的ID與所述特定發(fā)送順序的數(shù)據(jù)包的ID之間的距離,獲知所述出錯(cuò)數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址;重發(fā)所述出錯(cuò)數(shù)據(jù)包。
優(yōu)選的,所述特定發(fā)送順序的數(shù)據(jù)包是最后發(fā)送的數(shù)據(jù)包。
優(yōu)選的,所述的自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,包括如果收到肯定應(yīng)答消息,則刪除保存的最后正確接收的數(shù)據(jù)包及此數(shù)據(jù)包之前的所有數(shù)據(jù)包,以及;刪除保存的最后正確接收的數(shù)據(jù)包及此數(shù)據(jù)包之前的所有數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址信息。
如果收到否定應(yīng)答消息,則重新發(fā)送出錯(cuò)數(shù)據(jù)包及其之后的所有數(shù)據(jù)包。
優(yōu)選的,所述否定應(yīng)答消息含有最后正確接收的數(shù)據(jù)包的ID信息。優(yōu)選的,所述的自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,其特征在于,包括如果收到否定應(yīng)答消息,則刪除保存的最后正確接收的數(shù)據(jù)包及其之前的所有數(shù)據(jù)包,以及;刪除保存的最后正確接收的數(shù)據(jù)包及其之前的所有數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址信息。
優(yōu)選的,當(dāng)接收應(yīng)答消息的時(shí)間大于或等于預(yù)定值,則重新發(fā)送所有主緩存中的數(shù)據(jù)包。
優(yōu)選的,所述的自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,還可以包括設(shè)置一索引緩沖器,用于保存數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址,以及特定發(fā)送順序發(fā)送的數(shù)據(jù)包的ID信息。
本發(fā)明還提供了一種重發(fā)緩沖器,用于實(shí)現(xiàn)出錯(cuò)數(shù)據(jù)包的自動(dòng)重發(fā),包括主緩沖器,用以保存已發(fā)送數(shù)據(jù)包;索引緩沖器,用以保存已發(fā)送數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址,以及特定發(fā)送順序發(fā)送的數(shù)據(jù)包的ID信息;計(jì)算單元,用以根據(jù)輸入的出錯(cuò)數(shù)據(jù)包的ID以及索引緩沖器中保存的信息,獲得所述出錯(cuò)數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址。
優(yōu)選的,主緩沖器按發(fā)送順序依次保存已發(fā)送數(shù)據(jù)包;索引緩沖器按順序依次保存所述已發(fā)送數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址。
優(yōu)選的,所述的重發(fā)緩沖器,還可以包括發(fā)送端檢測(cè)單元,用于接收待發(fā)送的數(shù)據(jù)包以及發(fā)送端的指令信息;接收端檢測(cè)單元,用于檢測(cè)接收端反饋的肯定或者否定應(yīng)答消息;指針讀寫(xiě)單元,用于向主緩沖器以及索引緩沖器讀寫(xiě)指針。
優(yōu)選的,所述主緩沖器、索引緩沖器、計(jì)算單元、發(fā)送端檢測(cè)單元、接收端檢測(cè)單元以及指針讀寫(xiě)單元都采用硬件實(shí)現(xiàn)。優(yōu)選的,所述的重發(fā)緩沖器適用于PCI Express總線技術(shù)。
以上技術(shù)方案可以看出,與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)本發(fā)明提出了一個(gè)新穎的查找出錯(cuò)數(shù)據(jù)包在緩沖器中的存儲(chǔ)地址的方法,將數(shù)據(jù)包本身信息與數(shù)據(jù)包的存儲(chǔ)地址信息分別存儲(chǔ),提高單次查詢的速度;并且根據(jù)數(shù)據(jù)包ID之間的距離或差值,直接對(duì)應(yīng)查找獲得出錯(cuò)數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址,不需要進(jìn)行比對(duì)匹配等查詢過(guò)程,從而進(jìn)一步提高查詢的速度。由于解決了自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包過(guò)程中的瓶頸,因此可以提高自動(dòng)重發(fā)過(guò)程的速度,減少時(shí)間延遲,獲得較高的數(shù)據(jù)傳輸服務(wù)質(zhì)量。
為了實(shí)現(xiàn)上述方法,本發(fā)明設(shè)計(jì)了一個(gè)精巧的索引緩沖器來(lái)輔助主緩沖器,從而使上述方法得以簡(jiǎn)單的實(shí)現(xiàn),成本較低。索引緩沖器中僅僅存儲(chǔ)數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址以及最后發(fā)送的數(shù)據(jù)包的ID信息即可,而不用對(duì)現(xiàn)有的主緩沖器進(jìn)行更多的改進(jìn)。
另外,本發(fā)明提出了一個(gè)全新的思路,上述查詢過(guò)程,甚至自動(dòng)重發(fā)的全部過(guò)程都可以完全采用硬件實(shí)現(xiàn)自動(dòng)重新傳輸。由于不需要軟件的控制,所以就避免了軟件連接CPU進(jìn)行指令計(jì)算而來(lái)的時(shí)間延遲;并且該硬件電路整體用來(lái)處理自動(dòng)重發(fā),數(shù)據(jù)傳輸?shù)目刂七^(guò)程可以不涉及出錯(cuò)數(shù)據(jù)包的重發(fā)控制,故可以獲得較高的重發(fā)速率和反應(yīng)速度。
下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。
圖1是本發(fā)明一種自動(dòng)重發(fā)方法實(shí)例的步驟流程圖;圖2是本發(fā)明一種自動(dòng)重發(fā)緩沖器的結(jié)構(gòu)示意圖;圖3是圖2所示索引緩沖器和主緩沖器存儲(chǔ)信息的對(duì)應(yīng)關(guān)系圖;圖4是圖2所示計(jì)算單元的優(yōu)選計(jì)算過(guò)程示意圖。
具體實(shí)施例方式
本發(fā)明的核心思想在于,在主緩沖器中存儲(chǔ)已發(fā)送數(shù)據(jù)包的具體信息,在索引緩沖器中存儲(chǔ)對(duì)應(yīng)的地址信息,通過(guò)簡(jiǎn)單運(yùn)算即可準(zhǔn)確定位出錯(cuò)數(shù)據(jù)包的位置,從而加快自動(dòng)重發(fā)的過(guò)程。并且,整個(gè)過(guò)程可以全部采用硬件實(shí)現(xiàn),避免了軟件控制時(shí)調(diào)用CPU以及指令計(jì)算的時(shí)間延遲。
參照?qǐng)D1,是本發(fā)明所述自動(dòng)重發(fā)方法一優(yōu)選具體實(shí)施例的步驟流程圖。本發(fā)明所述自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,主要可以應(yīng)用于數(shù)據(jù)傳輸過(guò)程。數(shù)據(jù)傳輸過(guò)程一般包括接收CPU等發(fā)送端設(shè)備發(fā)送的起始指令以及需要發(fā)送的數(shù)據(jù)包信息;在緩沖器中臨時(shí)保存已發(fā)送數(shù)據(jù)包的信息(按照一定規(guī)則保存);從緩沖器發(fā)送該數(shù)據(jù)包。同時(shí)接收端反饋肯定應(yīng)答消息或否定應(yīng)答消息,如果接收到否定應(yīng)答消息,則需要定位出錯(cuò)數(shù)據(jù)包在緩沖器中的存儲(chǔ)位置,直接調(diào)出進(jìn)行自動(dòng)重發(fā),從而保證數(shù)據(jù)傳輸?shù)耐暾浴?br>
步驟s1,保存已發(fā)送數(shù)據(jù)包及其在主緩沖器中的存儲(chǔ)地址,以及一特定發(fā)送順序的數(shù)據(jù)包的ID。
任一特定的仍然存于主緩沖器的數(shù)據(jù)包都可以,例如,倒數(shù)第二個(gè)發(fā)送,或者倒數(shù)第三個(gè)發(fā)送,或者仍然存于主緩沖器的壽命最長(zhǎng)的數(shù)據(jù)包。優(yōu)選的,保存最后發(fā)送(the last)的數(shù)據(jù)包,最后發(fā)送的數(shù)據(jù)包是指在主緩沖器中最新的數(shù)據(jù)包,是其中最直觀并易于保存和更新的一種情況,所以優(yōu)選保存最后發(fā)送的數(shù)據(jù)包的ID信息。下面,都采用最后發(fā)送的數(shù)據(jù)包來(lái)代替特定發(fā)送順序的數(shù)據(jù)包,進(jìn)行具體實(shí)施例的描述。
保存已發(fā)送數(shù)據(jù)包在緩沖器中,可以減少數(shù)據(jù)調(diào)用的時(shí)間。將已發(fā)送數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址,以及最后發(fā)送(the last)的數(shù)據(jù)包的ID信息另行保存,是為了加快定位出錯(cuò)數(shù)據(jù)包的在主緩沖器中的存儲(chǔ)位置,可以避免匹配等復(fù)雜的查詢過(guò)程。所述最后發(fā)送(the last)的數(shù)據(jù)包是指當(dāng)收到接收端的肯定或否定應(yīng)答消息時(shí),從主緩沖器發(fā)送出去的最后一個(gè)數(shù)據(jù)包。本實(shí)施例可以設(shè)計(jì)一個(gè)索引緩沖器用來(lái)保存已發(fā)送數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址,以及最后發(fā)送的數(shù)據(jù)包的ID信息。
步驟s2,接收否定應(yīng)答消息,根據(jù)所述否定應(yīng)答消息得到出錯(cuò)數(shù)據(jù)包的ID信息。
所述否定應(yīng)答消息是接收端的反饋信息,所述否定應(yīng)答消息含有可以直接得出或間接計(jì)算出第一個(gè)接收錯(cuò)誤的數(shù)據(jù)包的ID的相關(guān)信息,例如,直接含有第一個(gè)接收錯(cuò)誤的數(shù)據(jù)包的ID,或含有與第一個(gè)接收錯(cuò)誤的數(shù)據(jù)包相鄰的數(shù)據(jù)包的ID。優(yōu)選的(例如,PCI Express),所述否定應(yīng)答消息含有最后一個(gè)接收正確的數(shù)據(jù)包的ID,根據(jù)數(shù)據(jù)包ID的連續(xù)性可算出第一個(gè)接收錯(cuò)誤的數(shù)據(jù)包的ID。第一個(gè)錯(cuò)誤的數(shù)據(jù)包尚未被正確重傳回來(lái)的時(shí)候,再其之后到達(dá)接收方的新的數(shù)據(jù)包都會(huì)被丟棄,直至觸發(fā)否定應(yīng)答消息的數(shù)據(jù)包重新傳輸且被接收方正確接收,后續(xù)數(shù)據(jù)包才會(huì)被接收,傳輸過(guò)程才會(huì)繼續(xù),這樣保證了嚴(yán)格的數(shù)據(jù)傳輸順序。
由于,否定應(yīng)答消息含有最后一個(gè)接收正確的數(shù)據(jù)包的ID,肯定應(yīng)答消息也含有最后正確接收的數(shù)據(jù)包的ID,這樣主緩存在收到否定應(yīng)答消息所含信息時(shí)可以執(zhí)行與收到肯定應(yīng)答消息所含ID時(shí)相同的清空操作,可以共用電路,是最直觀最低成本的一種情況。所以優(yōu)選否定應(yīng)答消息含有最后一個(gè)接收正確的數(shù)據(jù)包的ID。下面,都采用含有最后一個(gè)接收正確的數(shù)據(jù)包的ID的否定應(yīng)答消息來(lái)代替含有可以直接得出或間接計(jì)算出第一個(gè)接收錯(cuò)誤的數(shù)據(jù)包的ID的相關(guān)信息的否定應(yīng)答消息,進(jìn)行具體實(shí)施例的描述。
步驟s3,根據(jù)所述出錯(cuò)數(shù)據(jù)包的ID與最后發(fā)送的數(shù)據(jù)包的ID之間的距離,獲知所述出錯(cuò)數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址。
一般在緩沖器中存儲(chǔ)數(shù)據(jù)都是按照順序保存的,因此本發(fā)明可以在主緩沖器中按發(fā)送順序保存已發(fā)送數(shù)據(jù)包,在索引緩沖器中按發(fā)送順序依次保存已發(fā)送數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址。并且,在索引緩沖器中設(shè)置一位置固定用來(lái)保存最后發(fā)送的數(shù)據(jù)包的ID信息,當(dāng)有新的數(shù)據(jù)包被發(fā)送時(shí),索引緩沖器中保存的ID信息就被更新,即僅保存一條ID信息,標(biāo)識(shí)的是最后發(fā)送的數(shù)據(jù)包。當(dāng)然,也可以保存更多的ID信息,但是對(duì)本發(fā)明而言有用的只有最后一條ID信息而已,為了節(jié)約存儲(chǔ)空間,可以僅存儲(chǔ)一條最新的ID信息即可。
當(dāng)然,所述的最后發(fā)送的數(shù)據(jù)包的ID信息也可以存儲(chǔ)在其他存儲(chǔ)器中,或者收到否定應(yīng)答消息時(shí),實(shí)時(shí)從主緩沖器中調(diào)用即可;本發(fā)明并不對(duì)最后發(fā)送的數(shù)據(jù)包的ID信息的獲得方式加以限定。優(yōu)選的,設(shè)置一索引緩沖器設(shè)置一索引緩沖器,用于保存數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址,以及最后發(fā)送的數(shù)據(jù)包的ID信息。
參照?qǐng)D3,是所述索引緩沖器和主緩沖器存儲(chǔ)信息的對(duì)應(yīng)關(guān)系圖。
存入主緩沖器中的數(shù)據(jù)包都是依次存入和依次讀出的,主緩沖器中的數(shù)據(jù)包之間沒(méi)有間隔。當(dāng)一個(gè)新數(shù)據(jù)包存入主緩沖器中,則索引緩沖器中存儲(chǔ)的地址索引也相應(yīng)增加一個(gè)。在ACK/NAK協(xié)議中,每個(gè)數(shù)據(jù)包都擁有一個(gè)序列號(hào)(ID),序列號(hào)每次遞增1,例如,“......數(shù)據(jù)包N-1,數(shù)據(jù)包N,數(shù)據(jù)包N+1,......”,在索引緩沖器中就存儲(chǔ)這每個(gè)數(shù)據(jù)包相應(yīng)的在主緩沖器中的存儲(chǔ)地址。
由于主緩沖器中的已發(fā)送數(shù)據(jù)包是按照發(fā)送順序保存的,而存儲(chǔ)地址也是按順序設(shè)置的,所以ID信息和存儲(chǔ)地址信息是嚴(yán)格一一對(duì)應(yīng)的。根據(jù)接收的出錯(cuò)數(shù)據(jù)包的ID信息和最后發(fā)送的數(shù)據(jù)包的ID信息之間的差值,可以計(jì)算得出二者ID之間的距離,而該距離與出錯(cuò)數(shù)據(jù)包和最后發(fā)送的數(shù)據(jù)包在主緩沖器中存儲(chǔ)地址之間的距離相等,從而可以簡(jiǎn)單快捷的定位出錯(cuò)數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址。
本發(fā)明將存儲(chǔ)地址(Start address)單獨(dú)拿出來(lái)進(jìn)行保存,提高計(jì)算速度。Start address是每一個(gè)數(shù)據(jù)包packet在主緩沖器main buffer中的絕對(duì)地址,該地址只對(duì)buffer與buffer相關(guān)電路可見(jiàn),即可以認(rèn)為該地址是一個(gè)局域變量;而數(shù)據(jù)包的ID是每一個(gè)數(shù)據(jù)包packet的標(biāo)識(shí)字段,全局可見(jiàn),應(yīng)用于整個(gè)數(shù)據(jù)傳輸過(guò)程。在傳統(tǒng)的定位出錯(cuò)數(shù)據(jù)包的過(guò)程中,ID字段和ID標(biāo)注的packet的絕對(duì)地址都要存到buffer里,這就增加了定位的難度和時(shí)間上的延遲。在本發(fā)明中,每一個(gè)packet的ID字段不用保存至索引緩沖器indexbuffer里,而依據(jù)簡(jiǎn)單的距離相等的原理,僅需要簡(jiǎn)單的計(jì)算過(guò)程即可定位出錯(cuò)數(shù)據(jù)包的存儲(chǔ)地址。
參照?qǐng)D4,是圖2所示計(jì)算單元的一種優(yōu)選計(jì)算過(guò)程的示意圖,清楚的示出了定位出錯(cuò)數(shù)據(jù)包的計(jì)算過(guò)程。
最后發(fā)送(the last packet)的數(shù)據(jù)包的序列號(hào)(ID)可以很容易的獲得,并且最后發(fā)送的數(shù)據(jù)包的索引信息(在主緩沖器中的存儲(chǔ)地址信息就是索引信息)也非常容易獲得,因?yàn)樗饕彌_器對(duì)發(fā)送的數(shù)據(jù)包依次保存了該索引信息。出錯(cuò)數(shù)據(jù)包的ID信息從否定應(yīng)答消息中可以獲得(直接獲得或者計(jì)算得出),有了以上三個(gè)數(shù)據(jù),就可以非常容易的計(jì)算得出所述出錯(cuò)數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址。首先,可以通過(guò)一減法器計(jì)算出最后發(fā)送(the lastpacket)的數(shù)據(jù)包的序列號(hào)(ID)和出錯(cuò)數(shù)據(jù)包的ID之間的距離A;如果采用距離B來(lái)表示索引緩沖器中最后發(fā)送(the last packet)的數(shù)據(jù)包的索引數(shù)據(jù)與出錯(cuò)數(shù)據(jù)包的索引數(shù)據(jù)之間的距離,則從前述的分析可以得知,距離A和距離B是相等的。因此,可以通過(guò)一減法器,從最后發(fā)送(the last packet)的數(shù)據(jù)包的索引數(shù)據(jù)中減去距離A,即可獲得出錯(cuò)數(shù)據(jù)包的索引數(shù)據(jù),利用讀指針控制器讀出該索引數(shù)據(jù),也就獲得了出錯(cuò)數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址。
步驟s4,重發(fā)所述出錯(cuò)數(shù)據(jù)包。定位之后,將緩沖器的指針指向所述出錯(cuò)數(shù)據(jù)包,重發(fā)該數(shù)據(jù)包。
由于發(fā)送的數(shù)據(jù)包結(jié)合在一起,才能構(gòu)成有用的數(shù)據(jù),所以優(yōu)選的,并不僅僅發(fā)送出錯(cuò)的數(shù)據(jù)包,而是緩沖器的指針從所述出錯(cuò)數(shù)據(jù)包開(kāi)始,依次移動(dòng),發(fā)送所述出錯(cuò)數(shù)據(jù)包之后的所有數(shù)據(jù)包。
由于緩沖器的存儲(chǔ)空間有限,所以不可能完全保存所有的已發(fā)送數(shù)據(jù)包。,需要依據(jù)一定的規(guī)則進(jìn)行存儲(chǔ)空間的利用,本發(fā)明對(duì)次并不加以限定。下面舉兩個(gè)實(shí)施例,用來(lái)說(shuō)明一般情況下如何存儲(chǔ)和處理主緩沖器中存儲(chǔ)的已發(fā)送數(shù)據(jù)包。
情況1,由于肯定應(yīng)答消息中含有最后正確接收的數(shù)據(jù)包的ID,如果收到肯定應(yīng)答消息,則刪除在主緩沖器中保存的對(duì)應(yīng)數(shù)據(jù)包的信息,以及刪除索引緩沖器保存的對(duì)應(yīng)地址信息。主緩沖器依次保存發(fā)送設(shè)備發(fā)送的數(shù)據(jù)包,一般直到明示(收到肯定應(yīng)答消息)確定該數(shù)據(jù)包已經(jīng)成功發(fā)送至接收端,則可以刪除保存的對(duì)應(yīng)數(shù)據(jù)包。
為了增加有效數(shù)據(jù)占總吞吐量的比率(肯定應(yīng)答消息本身不算有效數(shù)據(jù),而是輔助的狀態(tài)信息),接收方并不是每收到一個(gè)正確數(shù)據(jù)包都會(huì)反饋相應(yīng)的肯定應(yīng)答消息,而是收到一定量的數(shù)據(jù)包之后再發(fā)出一個(gè)肯定應(yīng)答消息,這樣該肯定應(yīng)答消息就包含了“肯定應(yīng)答消息所含ID的數(shù)據(jù)包正確且此數(shù)據(jù)包以前的尚未受到肯定應(yīng)答消息的數(shù)據(jù)包都正確”的信息。所以,如果收到肯定應(yīng)答消息,則優(yōu)選的,可以刪除保存的對(duì)應(yīng)數(shù)據(jù)包及此數(shù)據(jù)包之前的所有數(shù)據(jù)包”,以及刪除索引緩沖器保存的對(duì)應(yīng)數(shù)據(jù)包的相關(guān)地址信息及索引緩沖器保存的此數(shù)據(jù)包之前的所有數(shù)據(jù)包的相關(guān)地址信息。
情況2,如果收到否定應(yīng)答消息,則刪除在主緩沖器中保存的對(duì)應(yīng)數(shù)據(jù)包的信息,以及刪除索引緩沖器保存的對(duì)應(yīng)地址信息。
例如,在PCI Express技術(shù)中,為了保證數(shù)據(jù)傳輸?shù)慕^對(duì)安全和完整,接收方每收到第一個(gè)錯(cuò)誤的數(shù)據(jù)包都會(huì)立刻發(fā)出一個(gè)否定應(yīng)答消息。該否定應(yīng)答消息就包含了“否定應(yīng)答消息所含ID的數(shù)據(jù)包正確且此數(shù)據(jù)包以前的尚未受到肯定應(yīng)答消息或否定應(yīng)答消息的數(shù)據(jù)包都正確;且否定應(yīng)答消息所含ID的數(shù)據(jù)包之后的第一個(gè)數(shù)據(jù)包在傳輸中發(fā)生錯(cuò)誤,需要重新傳輸否定應(yīng)答消息所含ID的數(shù)據(jù)包之后的第一個(gè)數(shù)據(jù)包且所有后續(xù)數(shù)據(jù)包”的信息。所以,如果收到否定應(yīng)答消息,則優(yōu)選的,可以刪除保存的對(duì)應(yīng)數(shù)據(jù)包及此數(shù)據(jù)包之前的所有數(shù)據(jù)包”。然后,重新發(fā)送出錯(cuò)數(shù)據(jù)包以及其后的所有數(shù)據(jù)包。
情況3,當(dāng)接收應(yīng)答消息的時(shí)間大于或等于預(yù)定值,或者保存的數(shù)據(jù)包的數(shù)量大于或等于預(yù)定值,則可以采用各種不同的處理方式。
例如,PCI Express技術(shù)中,為了保證數(shù)據(jù)傳輸?shù)慕^對(duì)安全和完整,只有當(dāng)收到肯定應(yīng)答消息才會(huì)刪除那些已經(jīng)被確認(rèn)的數(shù)據(jù)包。當(dāng)主緩沖器保存的數(shù)據(jù)包數(shù)量到達(dá)閥值或者接收應(yīng)答消息的時(shí)間閥值,則PCI Express“默認(rèn)為發(fā)送失敗,需要重新發(fā)送”,而不是“超過(guò)時(shí)限則默認(rèn)為已經(jīng)成功發(fā)送”,當(dāng)然這只是PCI Express的應(yīng)用,具體如何應(yīng)用都是可以接受的,本發(fā)明并不對(duì)此進(jìn)行限定。
如果超過(guò)時(shí)限,需要重新發(fā)送數(shù)據(jù)包,則可以重新發(fā)送主緩沖器中的所有數(shù)據(jù)包。因?yàn)?,主緩存中的?shù)據(jù)包都是尚未被應(yīng)答的,被應(yīng)答的數(shù)據(jù)包會(huì)立刻被清除掉。
圖2是本發(fā)明所述自動(dòng)重發(fā)緩沖器具體實(shí)施例的結(jié)構(gòu)示意圖。圖2所示自動(dòng)重發(fā)緩沖器用于數(shù)據(jù)傳輸過(guò)程,在ACK/NAK協(xié)議中對(duì)數(shù)據(jù)傳輸質(zhì)量(Qualityof Service)可以起到非常大的作用。圖2所示自動(dòng)重發(fā)緩沖器主要包括以下部件主緩沖器11,用以保存已發(fā)送數(shù)據(jù)包;優(yōu)選的,主緩沖器11按發(fā)送順序依次保存已發(fā)送數(shù)據(jù)包。
索引緩沖器9,用以保存已發(fā)送數(shù)據(jù)包在主緩沖器11中的存儲(chǔ)地址,以及特定發(fā)送順序的數(shù)據(jù)包的ID信息。優(yōu)選的,索引緩沖器9保存最后發(fā)送的數(shù)據(jù)包的ID。優(yōu)選的,索引緩沖器9按順序依次保存所述已發(fā)送數(shù)據(jù)包在主緩沖器11中的存儲(chǔ)地址。
計(jì)算單元,用以根據(jù)輸入的出錯(cuò)數(shù)據(jù)包的ID以及索引緩沖器9中保存的信息,獲得所述出錯(cuò)數(shù)據(jù)包在主緩沖器11中的存儲(chǔ)地址。
發(fā)送端檢測(cè)單元,用于接收待發(fā)送的數(shù)據(jù)包以及發(fā)送端的指令信息。發(fā)送端檢測(cè)單元可以包括輸入數(shù)據(jù)有效性檢測(cè)模塊1,用于檢測(cè)CPU等發(fā)送設(shè)備發(fā)送的數(shù)據(jù)包是否有效,如果有效,則寫(xiě)指針控制模塊6向主緩沖器11中某一存儲(chǔ)位置寫(xiě)入該數(shù)據(jù)包的信息。
輸入數(shù)據(jù)啟動(dòng)模塊2,用于接收CPU等發(fā)送設(shè)備的開(kāi)始指令,如果收到該指令,則索引寫(xiě)指針控制模塊7向索引緩沖器9中某一存儲(chǔ)位置寫(xiě)入該數(shù)據(jù)包在主緩沖器11中的存儲(chǔ)地址信息,即該存儲(chǔ)地址信息成為索引緩沖器9的保存對(duì)象;所述數(shù)據(jù)包在主緩沖器11中的存儲(chǔ)地址信息通過(guò)寫(xiě)指針模塊6獲取。
該數(shù)據(jù)包通過(guò)主緩沖器11發(fā)送出去,同時(shí)在索引緩沖器9中記錄該數(shù)據(jù)包的ID信息,由于本發(fā)明的定位過(guò)程僅需要最后發(fā)送的數(shù)據(jù)包的ID信息即可,所以為了節(jié)約存儲(chǔ)空間,優(yōu)選的,可以用最新的ID信息覆蓋原信息。
指針讀寫(xiě)單元,用于向主緩沖器11以及索引緩沖器9讀寫(xiě)指針。主緩沖器11對(duì)應(yīng)讀指針控制模塊10和寫(xiě)指針控制模塊6;索引緩沖器9對(duì)應(yīng)索引讀指針控制模塊8和索引寫(xiě)指針控制模塊7。
接收端檢測(cè)單元,用于檢測(cè)接收端反饋的肯定或者否定消息。接收端檢測(cè)單元可以包括出錯(cuò)數(shù)據(jù)包ID檢測(cè)模塊3,接收端反饋的否定應(yīng)答消息中包括出錯(cuò)數(shù)據(jù)包的ID信息。
出錯(cuò)重發(fā)啟動(dòng)模塊4,控制和啟動(dòng)重發(fā)過(guò)程。
出錯(cuò)數(shù)據(jù)包ID檢測(cè)模塊3、出錯(cuò)重發(fā)啟動(dòng)模塊4通過(guò)索引讀指針控制模塊8與索引緩沖器9相連。計(jì)算單元可以設(shè)置在索引讀指針控制模塊8中,通過(guò)計(jì)算單元,可以快捷的計(jì)算出出錯(cuò)數(shù)據(jù)包在主緩沖器11中的存儲(chǔ)地址。優(yōu)選的,計(jì)算單元通過(guò)兩個(gè)減法器相連即可實(shí)現(xiàn)。
索引緩沖器9向讀指針控制模塊10提供存儲(chǔ)地址信息,讀指針控制模塊10控制讀指針從主緩沖器11中的正確存儲(chǔ)位置讀出需要的數(shù)據(jù)包,并通過(guò)主緩沖器11發(fā)送該數(shù)據(jù)包。并且讀指針控制模塊10還可以向索引緩沖器9提供該數(shù)據(jù)包的ID信息,作為最后發(fā)送的數(shù)據(jù)包的ID信息,用于下一次的出錯(cuò)定位。
從而在出錯(cuò)數(shù)據(jù)包的自動(dòng)重發(fā)過(guò)程中,本發(fā)明所述的重發(fā)緩沖器具有較高的性能表現(xiàn),很低的時(shí)間延遲以及低成本的特點(diǎn)。優(yōu)選的,所述主緩沖器、索引緩沖器、計(jì)算單元、接收單元以及指針讀寫(xiě)單元都可以采用硬件實(shí)現(xiàn)。并且上述部件,采用硬件實(shí)現(xiàn)也是結(jié)構(gòu)簡(jiǎn)單,成本低廉。
本發(fā)明所述自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法以及自動(dòng)重發(fā)緩沖器,都可以適用于PCI Express總線技術(shù)。
以上對(duì)本發(fā)明所提供的一種自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法以及重發(fā)緩沖器進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1.一種自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,應(yīng)用于數(shù)據(jù)傳輸過(guò)程,其特征在于,包括保存已發(fā)送數(shù)據(jù)包至主緩沖器;保存已發(fā)送數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址,以及一特定發(fā)送順序的數(shù)據(jù)包的ID;接收否定應(yīng)答消息,根據(jù)所述否定應(yīng)答消息得到出錯(cuò)數(shù)據(jù)包的ID;根據(jù)所述出錯(cuò)數(shù)據(jù)包的ID與所述特定發(fā)送順序的數(shù)據(jù)包的ID之間的距離,獲知所述出錯(cuò)數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址;重發(fā)所述出錯(cuò)數(shù)據(jù)包。
2.如權(quán)利要求1所述的自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,其特征在于,所述特定發(fā)送順序的數(shù)據(jù)包是最后發(fā)送的數(shù)據(jù)包。
3.如權(quán)利要求1或2所述的自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,其特征在于,包括如果收到肯定應(yīng)答消息,則刪除保存的最后正確接收的數(shù)據(jù)包及此數(shù)據(jù)包之前的所有數(shù)據(jù)包,以及;刪除保存的最后正確接收的數(shù)據(jù)包及此數(shù)據(jù)包之前的所有數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址信息。
4.如權(quán)利要求1或2所述的自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,其特征在于,包括如果收到否定應(yīng)答消息,則重新發(fā)送出錯(cuò)數(shù)據(jù)包及其之后的所有數(shù)據(jù)包。
5.如權(quán)利要求1或2所述的自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,其特征在于,包括所述否定應(yīng)答消息含有最后正確接收的數(shù)據(jù)包的ID信息。
6.如權(quán)利要求5所述的自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,其特征在于,包括如果收到否定應(yīng)答消息,則刪除保存的最后正確接收的數(shù)據(jù)包及其之前的所有數(shù)據(jù)包,以及;刪除保存的最后正確接收的數(shù)據(jù)包及其之前的所有數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址信息。
7.如權(quán)利要求1或2所述的自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,其特征在于,包括當(dāng)接收應(yīng)答消息的時(shí)間大于或等于預(yù)定值,則重新發(fā)送所有主緩存中的數(shù)據(jù)包。
8.如權(quán)利要求1或2所述的自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,其特征在于,包括設(shè)置一索引緩沖器,用于保存數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址,以及特定發(fā)送順序發(fā)送的數(shù)據(jù)包的ID信息。
9.一種重發(fā)緩沖器,用于實(shí)現(xiàn)出錯(cuò)數(shù)據(jù)包的自動(dòng)重發(fā),其特征在于,包括主緩沖器,用以保存已發(fā)送數(shù)據(jù)包;索引緩沖器,用以保存已發(fā)送數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址,以及特定發(fā)送順序發(fā)送的數(shù)據(jù)包的ID信息;計(jì)算單元,用以根據(jù)輸入的出錯(cuò)數(shù)據(jù)包的ID以及索引緩沖器中保存的信息,獲得所述出錯(cuò)數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址。
10.如權(quán)利要求9所述的重發(fā)緩沖器,其特征在于,包括主緩沖器按發(fā)送順序依次保存已發(fā)送數(shù)據(jù)包;索引緩沖器按順序依次保存所述已發(fā)送數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址。
11.如權(quán)利要求9所述的重發(fā)緩沖器,其特征在于,還包括發(fā)送端檢測(cè)單元,用于接收待發(fā)送的數(shù)據(jù)包以及發(fā)送端的指令信息;接收端檢測(cè)單元,用于檢測(cè)接收端反饋的肯定或者否定應(yīng)答消息;指針讀寫(xiě)單元,用于向主緩沖器以及索引緩沖器讀寫(xiě)指針。
12.如權(quán)利要求11所述的重發(fā)緩沖器,其特征在于,所述主緩沖器、索引緩沖器、計(jì)算單元、發(fā)送端檢測(cè)單元、接收端檢測(cè)單元以及指針讀寫(xiě)單元都采用硬件實(shí)現(xiàn)。
全文摘要
本發(fā)明公開(kāi)了一種自動(dòng)重發(fā)出錯(cuò)數(shù)據(jù)包的方法,應(yīng)用于數(shù)據(jù)傳輸過(guò)程,包括保存已發(fā)送數(shù)據(jù)及其在主緩沖器中的存儲(chǔ)地址,以及一特定發(fā)送順序的數(shù)據(jù)包的ID;接收可獲取出錯(cuò)數(shù)據(jù)包的ID信息的否定應(yīng)答消息;根據(jù)所述出錯(cuò)數(shù)據(jù)包的ID與所述特定發(fā)送順序的數(shù)據(jù)包的ID之間的距離,獲知所述出錯(cuò)數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址;重發(fā)所述出錯(cuò)數(shù)據(jù)包。本發(fā)明將數(shù)據(jù)包本身信息與數(shù)據(jù)包的存儲(chǔ)地址信息分別存儲(chǔ);并且根據(jù)數(shù)據(jù)包ID之間的距離或差值,直接對(duì)應(yīng)查找獲得出錯(cuò)數(shù)據(jù)包在主緩沖器中的存儲(chǔ)地址,不需要進(jìn)行比對(duì)匹配等查詢過(guò)程,從而可以提高自動(dòng)重發(fā)過(guò)程的速度,減少時(shí)間延遲,獲得較高的數(shù)據(jù)傳輸服務(wù)質(zhì)量。
文檔編號(hào)H04L1/08GK101026441SQ200610024140
公開(kāi)日2007年8月29日 申請(qǐng)日期2006年2月24日 優(yōu)先權(quán)日2006年2月24日
發(fā)明者馮歆鵬, 李石 申請(qǐng)人:中芯國(guó)際集成電路制造(上海)有限公司