亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

快速串行接口pci-e協(xié)議數(shù)據(jù)完成包的重組排序方法

文檔序號:7890623閱讀:258來源:國知局
專利名稱:快速串行接口pci-e協(xié)議數(shù)據(jù)完成包的重組排序方法
技術(shù)領(lǐng)域
本發(fā)明涉及到通信系統(tǒng)數(shù)據(jù)傳輸技術(shù),特別涉及到一種快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法。
背景技術(shù)
快速串行接口 PCI-E (PCI Express,簡稱為PCI-E)是新一代通信系統(tǒng)的總線接口,采用串行的、點(diǎn)到點(diǎn)的互連方式來實(shí)現(xiàn)兩個(gè)設(shè)備間的通信,可以顯著提高數(shù)據(jù)傳輸率, 目前,其2. 0版本已將接口速率提升到5(ibpS。PCI-E體系結(jié)構(gòu)采用分層設(shè)計(jì),從下到上分別為物理層、數(shù)據(jù)鏈路層、事務(wù)層和軟件層,其中,事務(wù)層是PCI-E設(shè)計(jì)中的重要部分。所謂 PCI-E事務(wù)的定義為“為實(shí)現(xiàn)請求者和完成者之間某種信息所要求的、由一個(gè)或若干個(gè)包組成的發(fā)生序列”,并采用事務(wù)層包TLP (Transaction Layer Packet,簡稱為TLP)用來承載 PCI-E事務(wù),各種事務(wù)通過相應(yīng)類型的一個(gè)或者多個(gè)TLP包來傳遞和執(zhí)行。通常,PCI-E事務(wù)包括轉(zhuǎn)發(fā)型事務(wù)(Posted TLP)和非轉(zhuǎn)發(fā)型事務(wù)(Non-Posted TLP)。轉(zhuǎn)發(fā)型事務(wù)為單向事務(wù),不要求被請求者回應(yīng)任何反饋信息;非轉(zhuǎn)發(fā)型事務(wù)為雙向事務(wù),需要被請求者回應(yīng)完成的情況,即通過攜帶數(shù)據(jù)的完成包CplD (Completion with Data,簡稱為CplD)或者不攜帶數(shù)據(jù)的完成包Cpl (Completion without Data,簡稱為Cpl)進(jìn)行反饋。通常,將攜帶數(shù)據(jù)的完成包CplD稱之為數(shù)據(jù)完成包。在PCI-E非轉(zhuǎn)發(fā)型事物的處理過程中,請求者發(fā)出非轉(zhuǎn)發(fā)型的存儲器讀請求事務(wù) MRd (Memory Read Request,以下簡稱MRd)后,完成者會根據(jù)所請求的內(nèi)容返回CplD或 Cpl0當(dāng)完成者采用CplD回應(yīng)時(shí),可能會出現(xiàn)針對請求者的一個(gè)MRd請求,完成者采用多個(gè) CplD予以響應(yīng)。由于PCI-E的傳輸延時(shí),導(dǎo)致完成者先發(fā)出的CplD可能會后到達(dá)請求者, 從而導(dǎo)致請求者接收到的CplD的先后順序與完成者發(fā)出的順序不一致,即出現(xiàn)亂序現(xiàn)象。 因此,請求者不能簡單的根據(jù)接收到的CplD的先后順序進(jìn)行重組排序,必須按照一定的方法對接收到的CplD進(jìn)行重組排序,從而獲得正確的CplD數(shù)據(jù)序列?,F(xiàn)有技術(shù)PCI-E非轉(zhuǎn)發(fā)型事務(wù)的處理過程的實(shí)現(xiàn)主要有兩種方式,一種是通過 PCI-E協(xié)議專用集成電路ASIC(Application Specific Integrated Circuit,簡稱為 ASIC) 芯片實(shí)現(xiàn),另一種是通過現(xiàn)場可編程門陣列FPGA (Field - Programmable Gate Array,簡稱FPGA)方法實(shí)現(xiàn)。ASIC芯片和FPGA方法都具有優(yōu)異的并行處理性能,而FPGA方法更節(jié)省硬件資源和成本,并且處理延遲更短,效率更高,擴(kuò)展性更靈活,但存在的問題是需要專門解決數(shù)據(jù)完成包的重組排序問題。

發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)采用FPGA實(shí)現(xiàn)的PCI-E非轉(zhuǎn)發(fā)型事務(wù)的處理過程中存在的數(shù)據(jù)完成包需要重組排序等問題,本發(fā)明提出一種快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法。本發(fā)明快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法,請求者在存儲器中定義一個(gè)數(shù)據(jù)緩沖區(qū),并將其分為二個(gè)或二個(gè)以上大小相同的數(shù)據(jù)緩沖單元,數(shù)據(jù)緩沖單元大小為1 字節(jié),數(shù)據(jù)緩沖區(qū)大小不超過8K字節(jié),每個(gè)數(shù)據(jù)緩沖單元順序?qū)?yīng)一個(gè)索引號且只存放一個(gè)數(shù)據(jù)完成包CplD ;請求者將接收到的本次MRd請求所返回的CplD依次存入數(shù)據(jù)緩沖單元;同時(shí),依據(jù)CplD頭標(biāo)Tag域中的值,即Tag值,按照Tag值從小到大的方式對數(shù)據(jù)緩沖區(qū)內(nèi)的CplD進(jìn)行排序;并且,定義一個(gè)鏈表管理結(jié)構(gòu)用于保存CplD的排序結(jié)果,并在排序過程中動態(tài)建立和更新;在讀取數(shù)據(jù)緩沖區(qū)內(nèi)的CplD時(shí),依據(jù)鏈表的排序指示順序讀取CplD。進(jìn)一步的,本發(fā)明快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法定義一個(gè)鏈表管理結(jié)構(gòu)用于保存CplD的排序結(jié)果,并在排序過程中動態(tài)建立和更新,包括,鏈表表頭指示當(dāng)前排序后的CplD序列中第一個(gè)CplD所在的數(shù)據(jù)緩沖單元索引號;每個(gè)結(jié)點(diǎn)分為數(shù)據(jù)域和指針域,數(shù)據(jù)域存儲本結(jié)點(diǎn)所代表的CplD的Tag值,指針域存儲下一個(gè)CplD所在的數(shù)據(jù)緩沖單元索引號;最后一個(gè)結(jié)點(diǎn)的指針域?yàn)榭?,表示已到達(dá)鏈表尾部。進(jìn)一步的,本發(fā)明快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法請求者接收到CplD后分別存入數(shù)據(jù)緩沖單元,同時(shí),依據(jù)CplD頭標(biāo)Tag域中的值,即Tag值,按照 Tag值從小到大的方式對數(shù)據(jù)緩沖區(qū)內(nèi)的CplD進(jìn)行排序;并且,定義一個(gè)鏈表管理結(jié)構(gòu)用于保存CplD的排序結(jié)果,并在排序過程中動態(tài)建立和更新;包括以下步驟
①建立鏈表表頭,用于保存每一次排序后的數(shù)據(jù)序列中第一個(gè)CplD的所在數(shù)據(jù)緩沖單元的索引號;
②建立第一個(gè)結(jié)點(diǎn),在其數(shù)據(jù)域中存儲第一個(gè)數(shù)據(jù)緩沖單元中CplD的Tag值,并將第一個(gè)數(shù)據(jù)緩沖單元的索引號寫入表頭;
③從第二個(gè)數(shù)據(jù)緩沖單元開始,依次提取其存儲的CplD的Tag值,并與當(dāng)前鏈表中已有結(jié)點(diǎn)的數(shù)據(jù)域的值進(jìn)行比較,找到插入新結(jié)點(diǎn)的位置;新結(jié)點(diǎn)的數(shù)據(jù)域存儲此次進(jìn)行排序的CplD的Tag值,指針域則根據(jù)下述三種不同插入位置進(jìn)行相應(yīng)更新
A.新結(jié)點(diǎn)插入當(dāng)前鏈表的第一個(gè)結(jié)點(diǎn)前
新結(jié)點(diǎn)成為新鏈表的第一個(gè)結(jié)點(diǎn),其指針域保存插入前鏈表第一個(gè)結(jié)點(diǎn)的索引號,同時(shí)更新表頭信息,存儲新結(jié)點(diǎn)代表的CplD所在數(shù)據(jù)緩沖單元索引號;
B.新結(jié)點(diǎn)插入當(dāng)前鏈表的最后一個(gè)結(jié)點(diǎn)后
新結(jié)點(diǎn)成為新鏈表的最后一個(gè)結(jié)點(diǎn),則其指針域待定,前一個(gè)結(jié)點(diǎn)的指針域更新為該新結(jié)點(diǎn)代表的CplD所在數(shù)據(jù)緩沖單元索引號;
C.新結(jié)點(diǎn)插入當(dāng)前鏈表的兩個(gè)連續(xù)結(jié)點(diǎn)之間
如果新結(jié)點(diǎn)在兩個(gè)連續(xù)結(jié)點(diǎn)之間插入,則更新新結(jié)點(diǎn)前一個(gè)結(jié)點(diǎn)的指針域指示為新結(jié)點(diǎn)代表的CplD所在數(shù)據(jù)緩沖單元索引號,同時(shí)也更新新結(jié)點(diǎn)的指針域,使其存儲后一個(gè) CplD所在數(shù)據(jù)緩沖單元的索引號;
④當(dāng)數(shù)據(jù)緩沖區(qū)內(nèi)暫存的所有CplD都已排序后,最終鏈表每個(gè)結(jié)點(diǎn)的數(shù)據(jù)域中存放的Tag值依次遞增1,鏈表最后一個(gè)結(jié)點(diǎn)的指針域置為空;
⑤根據(jù)鏈表的各結(jié)點(diǎn)指針域所指示的下一個(gè)CplD所在數(shù)據(jù)緩沖單元的索引號順序, 將在數(shù)據(jù)緩沖區(qū)內(nèi)不連續(xù)的CplD序列進(jìn)行排序重組。進(jìn)一步的,本發(fā)明快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法依次提取其存儲的CplD的Tag值,并與當(dāng)前鏈表中已有結(jié)點(diǎn)的數(shù)據(jù)域的值進(jìn)行比較,包括從鏈表的尾部開始進(jìn)行比較,即將存儲的CplD的Tag值依次與當(dāng)前鏈表中已有結(jié)點(diǎn)的數(shù)據(jù)域的值依次進(jìn)行比較。本發(fā)明快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法的有益技術(shù)效果是能在請求者接收CplD的同時(shí),同步進(jìn)行CplD排序工作,有效的解決了基于FPGA實(shí)現(xiàn)的 PCI-E非轉(zhuǎn)發(fā)存儲器讀請求事務(wù)過程中數(shù)據(jù)完成包的亂序問題。


附圖1為本發(fā)明快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法的數(shù)據(jù)緩沖區(qū)結(jié)構(gòu)示意附圖2為本發(fā)明快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法的鏈表控制結(jié)構(gòu)示意圖。下面附圖和具體實(shí)施方式
對本發(fā)明快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法做進(jìn)一步的說明。
具體實(shí)施例方式附圖1為本發(fā)明快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法的數(shù)據(jù)緩沖區(qū)結(jié)構(gòu)示意圖,圖中,左邊為數(shù)據(jù)緩沖單元,右邊為數(shù)據(jù)緩沖單元地索引號。由圖可知,本發(fā)明快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法,請求者在存儲器中定義一個(gè)數(shù)據(jù)緩沖區(qū),并將其分為二個(gè)或二個(gè)以上大小相同的數(shù)據(jù)緩沖單元,數(shù)據(jù)緩沖單元大小為128 字節(jié),數(shù)據(jù)緩沖區(qū)大小不超過8K字節(jié),每個(gè)數(shù)據(jù)緩沖單元順序?qū)?yīng)一個(gè)索引號且只存放一個(gè)數(shù)據(jù)完成包CplD ;請求者將接收到的本次MRd請求所返回的CplD依次存入數(shù)據(jù)緩沖單元;同時(shí),依據(jù)CplD頭標(biāo)Tag域中的值,即Tag值,按照Tag值從小到大的方式對數(shù)據(jù)緩沖區(qū)內(nèi)的CplD進(jìn)行排序;并且,定義一個(gè)鏈表管理結(jié)構(gòu)用于保存CplD的排序結(jié)果,并在排序過程中動態(tài)建立和更新;在讀取數(shù)據(jù)緩沖區(qū)內(nèi)的CplD時(shí),依據(jù)鏈表的排序指示順序讀取 CplD。附圖2為本發(fā)明PCI-E協(xié)議的數(shù)據(jù)完成包重組排序方法的鏈表控制結(jié)構(gòu)示意圖, 由圖可知,本發(fā)明數(shù)據(jù)完成包重組排序方法定義一個(gè)鏈表管理結(jié)構(gòu)用于保存CplD的排序結(jié)果,并在排序過程中動態(tài)建立和更新,包括,鏈表表頭指示當(dāng)前排序后的CplD序列中第一個(gè)CplD所在的數(shù)據(jù)緩沖單元索引號;每個(gè)結(jié)點(diǎn)分為數(shù)據(jù)域和指針域,數(shù)據(jù)域存儲本結(jié)點(diǎn)所代表的CplD的Tag值,指針域存儲下一個(gè)CplD所在的數(shù)據(jù)緩沖單元索引號;最后一個(gè)結(jié)點(diǎn)的指針域?yàn)榭?,表示已到達(dá)鏈表尾部。本發(fā)明PCI-E協(xié)議的數(shù)據(jù)完成包重組排序方法請求者接收到CplD后分別存入數(shù)據(jù)緩沖單元,同時(shí),依據(jù)CplD頭標(biāo)Tag域中的值,即Tag值,按照Tag值從小到大的方式對數(shù)據(jù)緩沖區(qū)內(nèi)的CplD進(jìn)行排序;并且,定義一個(gè)鏈表管理結(jié)構(gòu)用于保存CplD的排序結(jié)果, 并在排序過程中動態(tài)建立和更新;包括以下步驟
①建立鏈表表頭,用于保存每一次排序后的數(shù)據(jù)序列中第一個(gè)CplD的所在數(shù)據(jù)緩沖單元的索引號;
②建立第一個(gè)結(jié)點(diǎn),在其數(shù)據(jù)域中存儲第一個(gè)數(shù)據(jù)緩沖單元中CplD的Tag值,并將第一個(gè)數(shù)據(jù)緩沖單元的索引號寫入表頭;
③從第二個(gè)數(shù)據(jù)緩沖單元開始,依次提取其存儲的CplD的Tag值,并與當(dāng)前鏈表中已有結(jié)點(diǎn)的數(shù)據(jù)域的值進(jìn)行比較,找到插入新結(jié)點(diǎn)的位置;新結(jié)點(diǎn)的數(shù)據(jù)域存儲此次進(jìn)行排序的CplD的Tag值,指針域則根據(jù)下述三種不同插入位置進(jìn)行相應(yīng)更新
A.新結(jié)點(diǎn)插入當(dāng)前鏈表的第一個(gè)結(jié)點(diǎn)前
新結(jié)點(diǎn)成為新鏈表的第一個(gè)結(jié)點(diǎn),其指針域保存插入前鏈表第一個(gè)結(jié)點(diǎn)的索引號,同時(shí)更新表頭信息,存儲新結(jié)點(diǎn)代表的CplD所在數(shù)據(jù)緩沖單元索引號;
B.新結(jié)點(diǎn)插入當(dāng)前鏈表的最后一個(gè)結(jié)點(diǎn)后
新結(jié)點(diǎn)成為新鏈表的最后一個(gè)結(jié)點(diǎn),則其指針域待定,前一個(gè)結(jié)點(diǎn)的指針域更新為該新結(jié)點(diǎn)代表的CplD所在數(shù)據(jù)緩沖單元索引號;
C.新結(jié)點(diǎn)插入當(dāng)前鏈表的兩個(gè)連續(xù)結(jié)點(diǎn)之間
如果新結(jié)點(diǎn)在兩個(gè)連續(xù)結(jié)點(diǎn)之間插入,則更新新結(jié)點(diǎn)前一個(gè)結(jié)點(diǎn)的指針域指示為新結(jié)點(diǎn)代表的CplD所在數(shù)據(jù)緩沖單元索引號,同時(shí)也更新新結(jié)點(diǎn)的指針域,使其存儲后一個(gè) CplD所在數(shù)據(jù)緩沖單元的索引號;
④當(dāng)數(shù)據(jù)緩沖區(qū)內(nèi)暫存的所有CplD都已排序后,最終鏈表每個(gè)結(jié)點(diǎn)的數(shù)據(jù)域中存放的Tag值依次遞增1,鏈表最后一個(gè)結(jié)點(diǎn)的指針域置為空;
⑤根據(jù)鏈表的各結(jié)點(diǎn)指針域所指示的下一個(gè)CplD所在數(shù)據(jù)緩沖單元的索引號順序, 將在數(shù)據(jù)緩沖區(qū)內(nèi)不連續(xù)的CplD序列進(jìn)行排序重組。為了有效減少排序過程中的比較次數(shù),更快找到插入新結(jié)點(diǎn)的位置,由于數(shù)據(jù)緩沖區(qū)內(nèi)相鄰CplD的Tag值相差并不大,所以,本發(fā)明快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法依次提取其存儲的CplD的Tag值,并與當(dāng)前鏈表中已有結(jié)點(diǎn)的數(shù)據(jù)域的值進(jìn)行比較,包括從鏈表的尾部開始進(jìn)行比較,即將存儲的CplD的Tag值依次與當(dāng)前鏈表中已有結(jié)點(diǎn)的數(shù)據(jù)域的值依次進(jìn)行比較。本發(fā)明快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法的有益技術(shù)效果是能在請求者接收CplD的同時(shí),同步進(jìn)行CplD排序工作,有效的解決了基于FPGA實(shí)現(xiàn)的 PCI-E非轉(zhuǎn)發(fā)存儲器讀請求事務(wù)過程中數(shù)據(jù)完成包的亂序問題。
權(quán)利要求
1.一種快速串行接口 PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法,其特征在于請求者在存儲器中定義一個(gè)數(shù)據(jù)緩沖區(qū),并將其分為二個(gè)或二個(gè)以上大小相同的數(shù)據(jù)緩沖單元,數(shù)據(jù)緩沖單元大小為1 字節(jié),數(shù)據(jù)緩沖區(qū)大小不超過8K字節(jié),每個(gè)數(shù)據(jù)緩沖單元順序?qū)?yīng)一個(gè)索引號且只存放一個(gè)數(shù)據(jù)完成包CplD;請求者將接收到的本次MRd請求所返回的CplD依次存入數(shù)據(jù)緩沖單元;同時(shí),依據(jù)CplD頭標(biāo)Tag域中的值,即Tag值,按照Tag值從小到大的方式對數(shù)據(jù)緩沖區(qū)內(nèi)的CplD進(jìn)行排序;并且,定義一個(gè)鏈表管理結(jié)構(gòu)用于保存CplD的排序結(jié)果,并在排序過程中動態(tài)建立和更新;在讀取數(shù)據(jù)緩沖區(qū)內(nèi)的CplD時(shí),依據(jù)鏈表的排序指示順序讀取CplD。
2.根據(jù)權(quán)利要求1所述串行接口PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法,其特征在于定義一個(gè)鏈表管理結(jié)構(gòu)用于保存CplD的排序結(jié)果,并在排序過程中動態(tài)建立和更新,包括,鏈表表頭指示當(dāng)前排序后的CplD序列中第一個(gè)CplD所在的數(shù)據(jù)緩沖單元索引號;每個(gè)結(jié)點(diǎn)分為數(shù)據(jù)域和指針域,數(shù)據(jù)域存儲本結(jié)點(diǎn)所代表的CplD的Tag值,指針域存儲下一個(gè)CplD所在的數(shù)據(jù)緩沖單元索引號;最后一個(gè)結(jié)點(diǎn)的指針域?yàn)榭?,表示已到達(dá)鏈表尾部。
3.根據(jù)權(quán)利要求1所述串行接口PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法,其特征在于請求者接收到CplD后分別存入數(shù)據(jù)緩沖單元,同時(shí),依據(jù)CplD頭標(biāo)Tag域中的值,即Tag值,按照Tag值從小到大的方式對數(shù)據(jù)緩沖區(qū)內(nèi)的CplD進(jìn)行排序;并且,定義一個(gè)鏈表管理結(jié)構(gòu)用于保存CplD的排序結(jié)果,并在排序過程中動態(tài)建立和更新;包括以下步驟①建立鏈表表頭,用于保存每一次排序后的數(shù)據(jù)序列中第一個(gè)CplD的所在數(shù)據(jù)緩沖單元的索引號;②建立第一個(gè)結(jié)點(diǎn),在其數(shù)據(jù)域中存儲第一個(gè)數(shù)據(jù)緩沖單元中CplD的Tag值,并將第一個(gè)數(shù)據(jù)緩沖單元的索引號寫入表頭;③從第二個(gè)數(shù)據(jù)緩沖單元開始,依次提取其存儲的CplD的Tag值,并與當(dāng)前鏈表中已有結(jié)點(diǎn)的數(shù)據(jù)域的值進(jìn)行比較,找到插入新結(jié)點(diǎn)的位置;新結(jié)點(diǎn)的數(shù)據(jù)域存儲此次進(jìn)行排序的CplD的Tag值,指針域則根據(jù)下述三種不同插入位置進(jìn)行相應(yīng)更新新結(jié)點(diǎn)插入當(dāng)前鏈表的第一個(gè)結(jié)點(diǎn)前新結(jié)點(diǎn)成為新鏈表的第一個(gè)結(jié)點(diǎn),其指針域保存插入前鏈表第一個(gè)結(jié)點(diǎn)的索引號,同時(shí)更新表頭信息,存儲新結(jié)點(diǎn)代表的CplD所在數(shù)據(jù)緩沖單元索引號;新結(jié)點(diǎn)插入當(dāng)前鏈表的最后一個(gè)結(jié)點(diǎn)后新結(jié)點(diǎn)成為新鏈表的最后一個(gè)結(jié)點(diǎn),則其指針域待定,前一個(gè)結(jié)點(diǎn)的指針域更新為該新結(jié)點(diǎn)代表的CplD所在數(shù)據(jù)緩沖單元索引號;新結(jié)點(diǎn)插入當(dāng)前鏈表的兩個(gè)連續(xù)結(jié)點(diǎn)之間如果新結(jié)點(diǎn)在兩個(gè)連續(xù)結(jié)點(diǎn)之間插入,則更新新結(jié)點(diǎn)前一個(gè)結(jié)點(diǎn)的指針域指示為新結(jié)點(diǎn)代表的CplD所在數(shù)據(jù)緩沖單元索引號,同時(shí)也更新新結(jié)點(diǎn)的指針域,使其存儲后一個(gè)CplD所在數(shù)據(jù)緩沖單元的索引號;④當(dāng)數(shù)據(jù)緩沖區(qū)內(nèi)暫存的所有CplD都已排序后,最終鏈表每個(gè)結(jié)點(diǎn)的數(shù)據(jù)域中存放的Tag值依次遞增1,鏈表最后一個(gè)結(jié)點(diǎn)的指針域置為空;⑤根據(jù)鏈表的各結(jié)點(diǎn)指針域所指示的下一個(gè)CplD所在數(shù)據(jù)緩沖單元的索引號順序,將在數(shù)據(jù)緩沖區(qū)內(nèi)不連續(xù)的CplD序列進(jìn)行排序重組。
4.根據(jù)權(quán)利要求3所述串行接口PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法,其特征在于依次提取其存儲的CplD的Tag值,并與當(dāng)前鏈表中已有結(jié)點(diǎn)的數(shù)據(jù)域的值進(jìn)行比較,包括從鏈表的尾部開始進(jìn)行比較,即將存儲的CplD的Tag值依次與當(dāng)前鏈表中已有結(jié)點(diǎn)的數(shù)據(jù)域的值依次進(jìn)行比較。
全文摘要
為了解決現(xiàn)有技術(shù)采用FPGA實(shí)現(xiàn)的PCI-E非轉(zhuǎn)發(fā)型事務(wù)的處理過程中存在的數(shù)據(jù)完成包需要重組排序等問題,本發(fā)明提出一種快速串行接口PCI-E協(xié)議數(shù)據(jù)完成包的重組排序方法,請求者在存儲器中定義一個(gè)數(shù)據(jù)緩沖區(qū),并將其分為二個(gè)或二個(gè)以上大小相同的數(shù)據(jù)緩沖單元,每個(gè)數(shù)據(jù)緩沖單元順序?qū)?yīng)一個(gè)索引號且只存放一個(gè)數(shù)據(jù)完成包CplD;將接收到的本次MRd請求所返回的CplD依次存入數(shù)據(jù)緩沖單元;同時(shí),按照Tag值從小到大的方式對數(shù)據(jù)緩沖區(qū)內(nèi)的CplD進(jìn)行排序,并采用鏈表管理結(jié)構(gòu)在排序過程中動態(tài)建立和更新。本發(fā)明的有益技術(shù)效果是能在請求者接收CplD的同時(shí)進(jìn)行CplD排序工作,解決了CplD的亂序問題。
文檔編號H04L12/56GK102571609SQ20121005114
公開日2012年7月11日 申請日期2012年3月1日 優(yōu)先權(quán)日2012年3月1日
發(fā)明者李志寬, 梁燕, 段文亮, 王曉嬌, 舒明華, 邵凱 申請人:重慶中天重郵通信技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1