專利名稱:基于pcie交換總線的通信方法及一種pcie交換系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及網(wǎng)絡通信技術,尤其涉及網(wǎng)絡通信領域的分布式系統(tǒng)中的板間通信技術,特別涉及基于PCIE交換總線的通信方法及一種PCIE交換系統(tǒng)。
背景技術:
目前,單CPU集中式架構的通信設備的處理能力已經(jīng)不能滿足日益增長的通信業(yè)務處理要求。由多張板卡組成的分布式架構的通信設備由于能夠并行處理業(yè)務,能夠成倍的提高業(yè)務處理量,在通信產(chǎn)品的設計中越來越普及。典型的分布式架構系統(tǒng),一般由主控板、交換板和各種線卡板組成。其中,主控板用于管理整個系統(tǒng),接收用戶的管理命令,修改整個系統(tǒng)的工作方式,例如,關閉其中一張線卡板的所有功能,或者收集每張線卡板的工作狀態(tài);交換板用于傳遞各個線卡板間的報文,有些報文是需要多張線卡板配合處理的,報文處理的中間結果就需要通過交換板卡傳遞給下一個需要處理的線卡板,由于任意兩個線卡板間都可能通信,因此就需要一張交換板卡來統(tǒng)一處理板卡的報文交換;各種線卡板通過交換總線連接到交換板上,線卡板主要處理報文,報文可能來自于主控卡,也可能來自于線卡板上的網(wǎng)絡通信接口,能夠本卡處理完的報文,就在本卡完成所有報文的處理,如果不能完成所有的處理,需要交下一張板卡繼續(xù)處理,就將報文交給交換板卡,由交換板卡轉發(fā)給下一張線卡板繼續(xù)處理。在運行過程中,當業(yè)務報文需要進行跨板卡通信時,由交換板通過交換總線實現(xiàn)線卡板間的報文交換。由于所有的線卡板都需要通過交換總線實現(xiàn)報文交換,因此交換板卡的吞吐能力和交換效率成為整個分布式系統(tǒng)性能的關鍵點。常用的交換總線標準為高速外設組件互連標準(PCIE,PeripheralComponent Interconnect-Express) 隨著PCIE2. O標準的發(fā)布,PCIE中的一路(lane)的速率已經(jīng)提高到5G,可以將4個Lane甚至8個Lane組成的20G或40G的PCIE總線。而遵循PCIE2. O 規(guī)范的交換芯片也能夠?qū)崿F(xiàn)全線速交換。PCIE總線的通信方式為直接的共享內(nèi)存讀寫。以下將連接到PCIE交換總線上的設備稱為PCIE終端,多個相互連接的PCIE終端構成一個PCIE交換系統(tǒng)。在PCIE交換系統(tǒng)中,需要預先設置空間映射關系,即每個PCIE終端都將自己的一段內(nèi)存映射到PCIE地址空間;同時,也需要將PCIE地址空間映射到自己的內(nèi)存空間中。設置好空間映射關系后,第一 PCIE終端向內(nèi)存空間中寫入報文,該報文就能被發(fā)送到PCIE交換系統(tǒng)的第二 PCIE終端的內(nèi)存空間中。為了要在PCIE交換系統(tǒng)中完成高效、連續(xù)的報文傳輸,需要遵循如下規(guī)則作為發(fā)送方的PCIE終端要能夠知道報文要寫入的地址,要能夠在報文發(fā)送完成之后通知接收端有新的報文到達,并且已經(jīng)發(fā)送完成;作為接收方的PCIE終端要能夠知道報文已經(jīng)寫入,并且要持續(xù)通告發(fā)送端新的可以寫入報文的緩存(buffer)地址。有了共同遵循的規(guī)貝U,通信兩端才能最大限度的減小通信過程中的延遲和等待,最大限度的做到連續(xù)通信。同時,由于PCIE規(guī)范的設計原因,PCIE寫操作的效率要遠遠大于讀操作的效率,因此,如何減少軟件操作中的讀操作也是提高PCIE效率的關鍵。
發(fā)明內(nèi)容
本發(fā)明提供了一種基于PCIE交換總線的通信方法及一種PCIE交換系統(tǒng),可以提高PCIE交換總線的工作效率。本發(fā)明實施例提出一種基于高速外設組件互連標準PCIE交換總線的通信方法, 該方法應用于由N個PCIE終端組成的PCIE交換系統(tǒng),所述N個PCIE終端通過PCIE交換總線實現(xiàn)相互連接,所述每個PCIE終端創(chuàng)建三塊內(nèi)存區(qū)域,分別作為接收緩存區(qū)、接收狀態(tài)隊列和發(fā)送空閑隊列;每個PCIE終端的這三塊內(nèi)存區(qū)域都映射到PCIE交換系統(tǒng)的地址空間,且不同PCIE終端映射的地址空間彼此不發(fā)生重疊;該方法包括如下步驟 A、所述PCIE交換系統(tǒng)中的每一個PCIE終端從本地接收緩存區(qū)中申請一定數(shù)目的緩存單元,將記錄每個緩存單元對應的PCIE地址和緩存大小的空閑緩存描述符分別寫入其他N-I個PCIE終端中和自己對應的發(fā)送空閑隊列;B、PCIE交換系統(tǒng)中的第一 PCIE終端從本地與第二 PCIE終端對應的發(fā)送空閑隊列中查找是否有空閑緩存描述符,如果有,則從與第二 PCIE終端對應的發(fā)送空閑隊列中提取一個空閑緩存描述符,將要發(fā)送的報文寫入該空閑緩存描述符指定的地址空間中;C、第一 PCIE終端向第二 PCIE終端的接收狀態(tài)隊列中寫入一個報文狀態(tài)描述符;D、第二 PCIE終端檢測到本地與第一 PCIE終端對應的接收狀態(tài)隊列中有新增的有效報文狀態(tài)描述符,先在本地接收緩存區(qū)中申請一個新的空閑緩存單元,并向第一 PCIE終端中對應的發(fā)送空閑隊列寫入一個新的空閑緩存描述符,然后根據(jù)收到的報文狀態(tài)描述符從緩存單元中取出報文并上交。較佳地,所述第一 PCIE終端本地與第二 PCIE終端對應的發(fā)送空閑隊列的長度與第二 PCIE終端本地與第一 PCIE終端對應的接收狀態(tài)隊列的長度相等。較佳地,步驟C所述第一 PCIE終端向第二 PCIE終端的接收狀態(tài)隊列中寫入一個報文狀態(tài)描述符之后,進一步包括若當前接收狀態(tài)隊列的位置不等于接收狀態(tài)隊列的長度,將當前接收狀態(tài)隊列的位置加1 ;若當前接收狀態(tài)隊列的位置等于接收狀態(tài)隊列的長度,將當前接收狀態(tài)隊列的位置返回初始值。較佳地,步驟D所述向第一 PCIE終端的發(fā)送空閑隊列寫入一個新的空閑緩存描述符之后進一步包括若當前發(fā)送空閑隊列的位置不等于發(fā)送空閑隊列的長度,將當前發(fā)送空閑隊列的位置加1 ;若當前發(fā)送空閑隊列的位置等于發(fā)送空閑隊列的長度,將當前接收狀態(tài)隊列的位置返回初始值。較佳地,步驟D中,如果第二 PCIE終端在本地接收緩存區(qū)中申請一個新的空閑緩存單元不成功,則進一步包括所述第二 PCIE終端從接收狀態(tài)隊列中取出報文狀態(tài)描述符中的緩存單元地址和緩存大小,將其作為一個新的空閑緩存單元寫入到發(fā)送端的發(fā)送空閑隊列中。較佳地,所述PCIE終端為線卡板。
本發(fā)明實施例提出一種高速外設組件互連標準PCIE交換系統(tǒng),所述系統(tǒng)包括N個 PCIE終端,所述N個PCIE終端通過PCIE交換總線實現(xiàn)相互連接,任一個所述PCIE終端包括內(nèi)存管理模塊、發(fā)送處理模塊和接收處理模塊;所述內(nèi)存管理模塊,用于創(chuàng)建三塊內(nèi)存區(qū)域,分別作為接收緩存區(qū)、接收狀態(tài)隊列和發(fā)送空閑隊列;并將這三塊內(nèi)存區(qū)域映射到PCIE交換系統(tǒng)的地址空間,且與其他PCIE終端映射的地址空間彼此不發(fā)生重疊;所述發(fā)送處理模塊,用于從本地接收緩存區(qū)中申請一定數(shù)目的緩存單元,將記錄每個緩存單元對應的PCIE地址和緩存大小的空閑緩存描述符寫入其他N-I個PCIE終端的發(fā)送空閑隊列當中;當本PCIE終端作為發(fā)送端時,用于從本地與作為接收端的第二PCIE終端對應的發(fā)送空閑隊列中查找是否有空閑緩存描述符,如果有,則從與所述第二 PCIE終端對應的發(fā)送空閑隊列中提取一個空閑緩存描述符,將要發(fā)送的報文寫入該空閑緩存描述符指定的地址空間中,并向所述第二 PCIE終端的接收狀態(tài)隊列中寫入一個報文狀態(tài)描述符;所述接收處理模塊,用于當本PCIE終端作為接收端時,檢測到本地與作為發(fā)送端的第三PCIE終端對應的接收狀態(tài)隊列中有新的有效報文狀態(tài)描述符時,接收端從本地接收緩存區(qū)中申請一個空閑的緩存單元,將記錄所述空閑的緩存單元對應的PCIE地址和緩存大小的空閑狀態(tài)描述符,寫入所述第三PCIE終端中和其對應的發(fā)送空閑隊列當中;然后將所述新的有效報文狀態(tài)描述符對應的緩存單元地址中取出該報文并上交。較佳地,所述發(fā)送空閑隊列的長度與接收狀態(tài)隊列的長度相等。較佳地,所述發(fā)送處理模塊進一步包括當前接收狀態(tài)隊列位置記錄單元,用于當本PCIE終端作為發(fā)送端時,記錄當前作為接收端的第二 PCIE終端中對應的接收狀態(tài)隊列的位置;在所述本PCIE終端的發(fā)送處理模塊向所述第二 PCIE終端的接收狀態(tài)隊列中寫入一個報文狀態(tài)描述符之后,用于判斷當前接收狀態(tài)隊列的位置是否等于接收狀態(tài)隊列的長度,若是,將所記錄的當前接收狀態(tài)隊列的位置返回初始值,否則,將所記錄的當前接收狀態(tài)隊列的位置加1。較佳地,所述接收處理模塊進一步包括當前發(fā)送空閑隊列位置記錄單元,用于當本PCIE終端作為接收端時,記錄當前作為發(fā)送端的第三PCIE終端對應的發(fā)送空閑隊列的位置;在所述本PCIE終端的接收處理模塊向第三PCIE終端的發(fā)送空閑隊列寫入一個新的空閑緩存描述符之后,用于判斷當前發(fā)送空閑隊列的位置是否等于發(fā)送空閑隊列的長度,若是,將當前接收狀態(tài)隊列的位置返回初始值,否則將當前發(fā)送空閑隊列的位置加1。較佳地,所述PCIE終端為線卡板。從以上技術方案可以看出,發(fā)送空閑隊列在發(fā)送端創(chuàng)建,該隊列的讀操作在發(fā)送端本地完成,不需要經(jīng)過PCIE,而寫操作由各個PCIE對端設備通過PCIE交換網(wǎng)絡寫入。接收狀態(tài)隊列的讀操作由接收端在本地完成,不需要經(jīng)過PCIE,而寫操作由各個對端設備通過PCIE交換網(wǎng)絡寫入;而報文的發(fā)送都是寫操作。這樣,整個PCIE交換總線就完全杜絕了 PCIE讀操作,最大限度的提高了 PCIE的操作效率。
圖1為典型的PCIE交換系統(tǒng)示意圖2為本發(fā)明實施例提出的基于PCIE交換總線的通信方法的處理流程圖;圖3為本發(fā)明實施例中各個PCIE終端映射的地址空間的示意圖。
具體實施例方式圖1所示為典型的PCIE交換系統(tǒng)示意圖。該PCIE交換系統(tǒng)包括N個PCIE終端以及PCIE交換總線,這N個PCIE終端分別連接到PCIE交換總線上。每個PCIE終端創(chuàng)建三塊內(nèi)存區(qū)域,分別是接收緩存區(qū),接收狀態(tài)隊列和發(fā)送空閑隊列。接收狀態(tài)隊列和發(fā)送空閑隊列的長度按照約定的長度創(chuàng)建。為了避免對隊列是否溢出進行判斷,可以使發(fā)送空閑隊列長度等于接收狀態(tài)隊列長度。初始化時,每個PCIE終端的接收狀態(tài)隊列為空。該PCIE交換系統(tǒng)采用報文傳輸?shù)姆绞?,定義如下描述符空閑緩存描述符,用于描述接收端接收報文的空閑緩存的PCIE地址和該空閑緩存的大小;報文狀態(tài)描述符,用于描述接收端接收到報文的長度和存放報文的PCIE地址以及報文有效性標志。在發(fā)送報文的PCIE終端(以下簡稱為發(fā)送端)的內(nèi)存中創(chuàng)建發(fā)送空閑隊列。為支持報文發(fā)送,一個發(fā)送端要創(chuàng)建N-I個發(fā)送空閑隊列,每個發(fā)送空閑隊列對應該PCIE交換結構中的一個接收報文的PCIE終端(以下簡稱為接收端)。在初始化完成后,每個發(fā)送空閑隊列中保存空閑緩存描述符。當需要發(fā)送報文時,從接收端對應的發(fā)送空閑隊列中取出一個空閑緩存描述符,從該空閑緩存描述符中獲得空閑緩存的PCIE地址,向該PCIE地址寫入報文即可實現(xiàn)報文發(fā)送。只要發(fā)送空閑隊列中有空閑緩存描述符,發(fā)送端就可以連續(xù)不斷的向?qū)Χ税l(fā)送報文,直到接收端由于無法及時處理報文,導致沒有新的空閑緩存描述符加入到發(fā)送端中對應的發(fā)送空閑隊列。在完成報文發(fā)送之后,發(fā)送端向接收端的接收狀態(tài)隊列中寫入本次報文發(fā)送的報文狀態(tài)描述符。在接收端創(chuàng)建接收狀態(tài)隊列,所述接收狀態(tài)隊列用于接收發(fā)送端寫過來的報文狀態(tài)描述符。每個PCIE終端在本地對應于每一個其他PCIE終端創(chuàng)建一個接收狀態(tài)隊列,因此共需創(chuàng)建N-I個接收狀態(tài)隊列。接收端需要檢查報文狀態(tài)描述符的有效性標志,以確定是否有新的報文到達,在檢查到報文狀態(tài)描述符有效時,表明新的報文已經(jīng)到達,將報文從報文狀態(tài)描述符攜帶的的PCIE地址對應的本地緩存單元中取出,并向發(fā)送端的發(fā)送空閑隊列寫入一個新的空閑緩存描述符。接收端可以采用一定的調(diào)度策略來接收各個發(fā)送端發(fā)送來的報文,例如,采用公平調(diào)度的方式來檢查每個接收狀態(tài)隊列,從而實現(xiàn)公平接收各個發(fā)送端的報文。發(fā)送空閑隊列在發(fā)送端創(chuàng)建,該隊列的讀操作在發(fā)送端完成,不需要經(jīng)過PCIE交換總線,而寫操作由接收端通過PCIE交換總線寫入。接收狀態(tài)隊列的讀操作由接收端在本地完成,不需要經(jīng)過PCIE交換總線,而寫操作由各個對端設備通過PCIE交換網(wǎng)絡寫入;而報文的發(fā)送都是寫操作。這樣,整個軟件實現(xiàn)中就完全杜絕了 PCIE讀操作,最大限度的提高了 PCIE的操作效率。本發(fā)明實施例提出的基于PCIE交換總線的通信方法的處理流程如圖2所示,包括如下步驟
7
步驟201 每個PCIE終端創(chuàng)建三塊內(nèi)存區(qū)域,分別是接收緩存區(qū),接收狀態(tài)隊列和發(fā)送空閑隊列。其中,接收狀態(tài)隊列和發(fā)送空閑隊列的長度按照約定的長度創(chuàng)建。較佳地,每個作為發(fā)送端的PCIE終端本地創(chuàng)建的和其它每個PCIE終端分別對應的發(fā)送空閑隊列的長度, 與其作為接收端時本地創(chuàng)建的與其它每個PCIE終端對應的接收狀態(tài)隊列的長度相等。更為簡單的情況,所有PCIE終端的發(fā)送空閑隊列長度和接收狀態(tài)隊列長度均相等。初始化時,接收狀態(tài)隊列和發(fā)送空閑隊列都為空。步驟202 將每個PCIE終端的這三塊內(nèi)存區(qū)域都映射到PCIE交換系統(tǒng)的地址空間,且不同PCIE終端映射的地址空間彼此不發(fā)生重疊。圖3為各個PCIE終端映射的地址空間的示意圖。一種可能的實施方式為每個PCIE終端按照自身在PCIE交換系統(tǒng)中的槽位號計算得到該PCIE終端的地址空間,以保證不同PCIE終端映射的地址空間彼此不發(fā)生重疊。步驟203 所述PCIE交換系統(tǒng)中的每一個PCIE終端從本地接收緩存區(qū)中申請一定數(shù)目的緩存單元,然后將這些緩存單元對應的PCIE地址和緩存大小按照空閑緩存描述符的格式寫入其他N-I個PCIE終端的發(fā)送空閑隊列當中。每個PCIE終端將自己的接收緩存區(qū)切分為多個緩存單元,并采用緩存池的方式管理這些緩存單元,可以通過軟件接口向緩存池申請和釋放緩存單元。步驟204:發(fā)送端要向一個接收端發(fā)送報文時,發(fā)送端從本地與該接收端對應的發(fā)送空閑隊列中查找是否有空閑緩存描述符,如果有,則提取一個空閑緩存描述符,將要發(fā)送的報文寫入該空閑緩存描述符指定的地址空間,即緩存單元中。步驟205 在完成報文寫入后,發(fā)送端向接收端的接收狀態(tài)隊列中按照寫入一個報文狀態(tài)描述符,并記錄當前接收狀態(tài)隊列的位置。所述報文狀態(tài)描述符記錄了報文的大小和存放報文的PCIE地址。為了在接收端的接收狀態(tài)隊列的正確位置寫入報文狀態(tài)描述符,發(fā)送端需要記錄和其對應的當前接收狀態(tài)隊列的位置(rcv_stat_head),初始狀態(tài)下,rcv_stat_head = 0,表示從接收狀態(tài)隊列的起始位置開始寫入報文狀態(tài)描述符,每寫入一個報文狀態(tài)描述符,若當前接收狀態(tài)隊列的位置不等于接收狀態(tài)隊列的長度,當前接收狀態(tài)隊列的位置加1,即rcV_Stat_head = rcv_ stat_head+l。若當前接收狀態(tài)隊列的位置等于接收狀態(tài)隊列的長度,將當前接收狀態(tài)隊列的位置返回初始值,即rcV_Stat_head = 0。步驟206 接收端通過輪詢本地內(nèi)存中分別與每個PCIE終端對應的接收狀態(tài)隊列的方式來檢測是否有新的報文到達,當檢測到某個接收狀態(tài)隊列中有新報文到達的有效標志時,首先要從本地接收緩沖區(qū)中申請一個新的緩存單元,向發(fā)送端的對應發(fā)送空閑隊列中添加記錄該緩存單元對應的PCIE地址和緩存大小的新的空閑緩存描述符,然后接收端從接收狀態(tài)隊列中取出的存放報文的PCIE地址,將這個地址轉為為其本地緩存單元地址后上交給后續(xù)的軟件處理,后續(xù)的軟件模塊就可以通過這個地址訪問到自己需要處理的保存在緩存單元中的報文。然后返回步驟204進行新的報文的發(fā)送與接收。注意,本步驟中,如果接收端申請緩存單元不成功,說明所有分配用來接收報文的緩存單元都在被占用,仍然需要處理接收狀態(tài)隊列,從接收狀態(tài)隊列中取出緩存單元的地址,但是這個地址不再上交,而是要作為一個空閑緩存單元加入到發(fā)送端的發(fā)送空閑隊列中,因為每處理一個接收狀態(tài)隊列表項,就需要向?qū)Χ说陌l(fā)送空閑隊列中補充一個新的空閑緩存描述符,保證發(fā)送端有新的空閑緩存描述符可用,而這個空閑緩存描述符必須指向一個沒有軟件模塊使用的緩存單元,因此在申請不到新的緩存單元的情況下,只能將剛剛完成報文接收的緩存單元再次利用起來,即丟棄剛剛收到的報文。另外,接收端為了在發(fā)送端的發(fā)送空閑隊列的正確位置寫入空閑緩存描述符,接收端需要記錄當前發(fā)送空閑隊列的位置(snd_buff_head),初始狀態(tài)下,snd_buff_head = 0,表示從隊列的起始位置開始寫入報文狀態(tài)描述符。每寫入一個空閑緩存描述符,若當前發(fā)送空閑隊列的位置不等于發(fā)送空閑隊列的長度,將當前發(fā)送空閑隊列的位置加1,即 snd_buff_head = snd_buff_head+l0若當前發(fā)送空閑隊列的位置等于發(fā)送空閑隊列的長度時,將當前接收狀態(tài)隊列的位置返回初始值,即Snd_bUff_head = 0。本發(fā)明實施例還提出一種高速外設組件互連標準PCIE交換系統(tǒng),所述系統(tǒng)包括N 個PCIE終端,所述N個PCIE終端通過PCIE交換總線實現(xiàn)相互連接,任一個所述PCIE終端包括內(nèi)存管理模塊、發(fā)送處理模塊和接收處理模塊;所述內(nèi)存管理模塊,用于創(chuàng)建三塊內(nèi)存區(qū)域,分別作為接收緩存區(qū)、接收狀態(tài)隊列和發(fā)送空閑隊列;并將這三塊內(nèi)存區(qū)域映射到PCIE交換系統(tǒng)的地址空間,且與其他PCIE終端映射的地址空間彼此不發(fā)生重疊;所述發(fā)送處理模塊,用于從本地接收緩存區(qū)中申請一定數(shù)目的緩存單元,將記錄每個緩存單元對應的PCIE地址和緩存大小的空閑緩存描述符寫入其他N-I個PCIE終端的發(fā)送空閑隊列當中;當本PCIE終端作為發(fā)送端時,用于從本地與作為接收端的第二PCIE終端對應的發(fā)送空閑隊列中查找是否有空閑緩存描述符,如果有,則從與所述第二 PCIE終端對應的發(fā)送空閑隊列中提取一個空閑緩存描述符,將要發(fā)送的報文寫入該空閑緩存描述符指定的地址空間中,并向所述第二 PCIE終端的接收狀態(tài)隊列中寫入一個報文狀態(tài)描述符;所述接收處理模塊,用于當本PCIE終端作為接收端時,檢測到本地與作為發(fā)送端的第三PCIE終端對應的接收狀態(tài)隊列中有新的有效報文狀態(tài)描述符時,接收端從本地接收緩存區(qū)中申請一個空閑的緩存單元,將包括所述空閑的緩存單元對應的PCIE地址和緩存大小的空閑狀態(tài)描述符,寫入所述第三PCIE終端中和其對應的發(fā)送空閑隊列當中;然后將所述新的有效報文狀態(tài)描述符對應的緩存單元地址中取出該報文并上交。較佳地,所述發(fā)送空閑隊列的長度與接收狀態(tài)隊列的長度相等。較佳地,所述內(nèi)存管理模塊進一步包括地址計算單元,用于按照本PCIE終端在PCIE交換系統(tǒng)中的槽位號計算得到三塊內(nèi)存區(qū)域的地址空間。較佳地,所述發(fā)送處理模塊進一步包括當前接收狀態(tài)隊列位置記錄單元,用于當本PCIE終端作為發(fā)送端時,記錄當前作為接收端的第二 PCIE終端中對應的接收狀態(tài)隊列的位置;在所述本PCIE終端的發(fā)送處理模塊向所述第二 PCIE終端的接收狀態(tài)隊列中寫入一個報文狀態(tài)描述符之后,用于判斷當前接收狀態(tài)隊列的位置是否等于接收狀態(tài)隊列的長度,若是,將所記錄的當前接收狀態(tài)隊列的位置返回初始值,否則,將所記錄的當前接收狀態(tài)隊列的位置加1。較佳地,所述接收處理模塊進一步包括當前發(fā)送空閑隊列位置記錄單元,用于當本PCIE終端作為接收端時,記錄當前作為發(fā)送端的第三PCIE終端對應的發(fā)送空閑隊列的位置;在所述本PCIE終端的接收處理模塊向第三PCIE終端的發(fā)送空閑隊列寫入一個新的空閑緩存描述符之后,用于判斷當前發(fā)送空閑隊列的位置是否等于發(fā)送空閑隊列的長度,若是,將當前接收狀態(tài)隊列的位置返回初始值,否則將當前發(fā)送空閑隊列的位置加1。較佳地,所述PCIE終端為線卡板。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明保護的范圍之內(nèi)。
權利要求
1.一種基于高速外設組件互連標準PCIE交換總線的通信方法,該方法應用于由N個 PCIE終端組成的PCIE交換系統(tǒng),所述N個PCIE終端通過PCIE交換總線實現(xiàn)相互連接,其特征在于,所述每個PCIE終端創(chuàng)建三塊內(nèi)存區(qū)域,分別作為接收緩存區(qū)、接收狀態(tài)隊列和發(fā)送空閑隊列;每個PCIE終端的這三塊內(nèi)存區(qū)域都映射到PCIE交換系統(tǒng)的地址空間,且不同PCIE終端映射的地址空間彼此不發(fā)生重疊;該方法包括如下步驟A、所述PCIE交換系統(tǒng)中的每一個PCIE終端從本地接收緩存區(qū)中申請一定數(shù)目的緩存單元,將記錄每個緩存單元對應的PCIE地址和緩存大小的空閑緩存描述符分別寫入其他 N-I個PCIE終端中和自己對應的發(fā)送空閑隊列;B、PCIE交換系統(tǒng)中的第一PCIE終端從本地與第二 PCIE終端對應的發(fā)送空閑隊列中查找是否有空閑緩存描述符,如果有,則從與第二 PCIE終端對應的發(fā)送空閑隊列中提取一個空閑緩存描述符,將要發(fā)送的報文寫入該空閑緩存描述符指定的地址空間中;C、第一PCIE終端向第二 PCIE終端的接收狀態(tài)隊列中寫入一個報文狀態(tài)描述符;D、第二PCIE終端檢測到本地與第一 PCIE終端對應的接收狀態(tài)隊列中有新增的有效報文狀態(tài)描述符,先在本地接收緩存區(qū)中申請一個新的空閑緩存單元,并向第一 PCIE終端中對應的發(fā)送空閑隊列寫入一個新的空閑緩存描述符,然后根據(jù)收到的報文狀態(tài)描述符從緩存單元中取出報文并上交。
2.根據(jù)權利要求1所述的基于PCIE交換總線的通信方法,其特征在于,所述第一PCIE 終端本地與第二 PCIE終端對應的發(fā)送空閑隊列的長度與第二 PCIE終端本地與第一 PCIE 終端對應的接收狀態(tài)隊列的長度相等。
3.根據(jù)權利要求1所述的基于PCIE交換總線的通信方法,其特征在于,步驟C所述第一PCIE終端向第二 PCIE終端的接收狀態(tài)隊列中寫入一個報文狀態(tài)描述符之后,進一步包括若當前接收狀態(tài)隊列的位置不等于接收狀態(tài)隊列的長度,將當前接收狀態(tài)隊列的位置加1 ;若當前接收狀態(tài)隊列的位置等于接收狀態(tài)隊列的長度,將當前接收狀態(tài)隊列的位置返回初始值。
4.根據(jù)權利要求1所述的基于PCIE交換總線的通信方法,其特征在于,步驟D所述向第一 PCIE終端的發(fā)送空閑隊列寫入一個新的空閑緩存描述符之后進一步包括若當前發(fā)送空閑隊列的位置不等于發(fā)送空閑隊列的長度,將當前發(fā)送空閑隊列的位置加1 ;若當前發(fā)送空閑隊列的位置等于發(fā)送空閑隊列的長度,將當前接收狀態(tài)隊列的位置返回初始值。
5.根據(jù)權利要求1所述的基于PCIE交換總線的通信方法,其特征在于,步驟D中,如果第二 PCIE終端在本地接收緩存區(qū)中申請新的空閑緩存單元不成功,則進一步包括所述第二PCIE終端從接收狀態(tài)隊列中取出報文狀態(tài)描述符中的緩存單元地址和緩存大小,將其作為一個新的空閑緩存單元寫入發(fā)送端的對應的發(fā)送空閑隊列中。
6.根據(jù)權利要求1-5任一項所述的基于PCIE交換總線的通信方法,其特征在于,所述 PCIE終端為線卡板。
7.一種高速外設組件互連標準PCIE交換系統(tǒng),所述系統(tǒng)包括N個PCIE終端,所述N個 PCIE終端通過PCIE交換總線實現(xiàn)相互連接,其特征在于,任一個所述PCIE終端包括內(nèi)存管理模塊、發(fā)送處理模塊和接收處理模塊;所述內(nèi)存管理模塊,用于創(chuàng)建三塊內(nèi)存區(qū)域,分別作為接收緩存區(qū)、接收狀態(tài)隊列和發(fā)送空閑隊列;并將這三塊內(nèi)存區(qū)域映射到PCIE交換系統(tǒng)的地址空間,且與其他PCIE終端映射的地址空間彼此不發(fā)生重疊;所述發(fā)送處理模塊,用于從本地接收緩存區(qū)中申請一定數(shù)目的緩存單元,將記錄每個緩存單元對應的PCIE地址和緩存大小的空閑緩存描述符寫入其他N-I個PCIE終端的發(fā)送空閑隊列當中;當本PCIE終端作為發(fā)送端時,用于從本地與作為接收端的第二PCIE終端對應的發(fā)送空閑隊列中查找是否有空閑緩存描述符,如果有,則從與所述第二 PCIE終端對應的發(fā)送空閑隊列中提取一個空閑緩存描述符,將要發(fā)送的報文寫入該空閑緩存描述符指定的地址空間中,并向所述第二 PCIE終端的接收狀態(tài)隊列中寫入一個報文狀態(tài)描述符;所述接收處理模塊,用于當本PCIE終端作為接收端時,檢測到本地與作為發(fā)送端的第三PCIE終端對應的接收狀態(tài)隊列中有新的有效報文狀態(tài)描述符時,接收端從本地接收緩存區(qū)中申請一個空閑的緩存單元,將記錄所述空閑緩存單元的對應的PCIE地址和緩存大小的空閑狀態(tài)描述符,寫入所述第三PCIE終端中和其對應的發(fā)送空閑隊列當中;然后將所述新的有效報文狀態(tài)描述符對應的緩存單元中取出該報文并上交。
8.根據(jù)權利要求7所述的PCIE交換系統(tǒng),其特征在于,所述發(fā)送空閑隊列的長度與接收狀態(tài)隊列的長度相等。
9.根據(jù)權利要求7所述的PCIE交換系統(tǒng),其特征在于,所述發(fā)送處理模塊進一步包括當前接收狀態(tài)隊列位置記錄單元,用于當本PCIE終端作為發(fā)送端時,記錄當前作為接收端的第二 PCIE終端中對應的接收狀態(tài)隊列的位置;在所述本PCIE終端的發(fā)送處理模塊向所述第二 PCIE終端的接收狀態(tài)隊列中寫入一個報文狀態(tài)描述符之后,用于判斷當前接收狀態(tài)隊列的位置是否等于接收狀態(tài)隊列的長度,若是,將所記錄的當前接收狀態(tài)隊列的位置返回初始值,否則,將所記錄的當前接收狀態(tài)隊列的位置加1。
10.根據(jù)權利要求7所述的PCIE交換系統(tǒng),其特征在于,所述接收處理模塊進一步包括當前發(fā)送空閑隊列位置記錄單元,用于當本PCIE終端作為接收端時,記錄當前作為發(fā)送端的第三PCIE終端對應的發(fā)送空閑隊列的位置;在所述本PCIE終端的接收處理模塊向第三PCIE終端的發(fā)送空閑隊列寫入一個新的空閑緩存描述符之后,用于判斷當前發(fā)送空閑隊列的位置是否等于發(fā)送空閑隊列的長度,若是,將當前接收狀態(tài)隊列的位置返回初始值,否則將當前發(fā)送空閑隊列的位置加1。
11.根據(jù)權利要求7-10任一項所述的PCIE交換系統(tǒng),其特征在于,所述PCIE終端為線卡板。
全文摘要
本發(fā)明提供了一種基于高速外設組件互連標準(PCIE)交換總線的通信方法,該方法應用于由N個PCIE終端組成的PCIE交換系統(tǒng),所述N個PCIE終端通過PCIE交換總線實現(xiàn)相互連接。該通信方法中,在發(fā)送端創(chuàng)建發(fā)送空閑隊列,該隊列的讀操作在發(fā)送端本地完成,而寫操作由各個PCIE對端設備通過PCIE交換網(wǎng)絡寫入;接收端創(chuàng)建接收狀態(tài)隊列,該隊列的讀操作在接收端本地完成,而寫操作由各個對端設備通過PCIE交換網(wǎng)絡寫入,而報文的發(fā)送都是寫操作。這樣,整個PCIE交換總線就完全杜絕了PCIE讀操作,最大限度的提高了PCIE的操作效率。本發(fā)明還提供了一種PCIE交換系統(tǒng)。
文檔編號H04L12/56GK102480426SQ201010569328
公開日2012年5月30日 申請日期2010年11月25日 優(yōu)先權日2010年11月25日
發(fā)明者曾健 申請人:邁普通信技術股份有限公司