本發(fā)明涉及通信技術(shù)領(lǐng)域,特別是涉及到一種基于多DMA隊(duì)列的數(shù)據(jù)傳輸方法和裝置。
背景技術(shù):
傳統(tǒng)的虛擬化技術(shù),是通過軟件模擬共享和虛擬化網(wǎng)絡(luò)適配器的一個(gè)物理端口,以滿足虛擬機(jī)的輸入/輸出(I/O)需求。模擬軟件的多個(gè)層為虛擬機(jī)作了I/O決策,因此導(dǎo)致環(huán)境中出現(xiàn)瓶頸并影響I/O性能,從而影響到一臺(tái)物理服務(wù)器上運(yùn)行的虛擬機(jī)數(shù)量以均衡系統(tǒng)的I/O性能。隨著虛擬化技術(shù)的發(fā)展,虛擬機(jī)和容器技術(shù)希望能直接操作直接內(nèi)存訪問(Direct Memory Access,DMA)隊(duì)列來提高系統(tǒng)性能,減少時(shí)延。特別是容器技術(shù)出現(xiàn)以后,一臺(tái)物理服務(wù)器上跑的并發(fā)的應(yīng)用更多,希望硬件支持更多的DMA隊(duì)列。
在基于多DMA隊(duì)列進(jìn)行數(shù)據(jù)傳輸時(shí),每個(gè)DMA隊(duì)列均參與數(shù)據(jù)傳輸和調(diào)度,即DMA隊(duì)列接收到數(shù)據(jù)后,向服務(wù)質(zhì)量(QOS)發(fā)送數(shù)據(jù)傳輸請求,QOS通過對各個(gè)DMA隊(duì)列進(jìn)行調(diào)度來控制數(shù)據(jù)傳輸。雖然這些DMA隊(duì)列同時(shí)工作的時(shí)候,每個(gè)DMA隊(duì)列需要支持的吞吐量很小,但同時(shí)為了滿足傳統(tǒng)的應(yīng)用場景,硬件DMA隊(duì)列設(shè)計(jì)仍然必須支持線速,這就造成硬件邏輯資源的大量消耗。
比如在40G網(wǎng)卡的應(yīng)用中,設(shè)計(jì)要求支持4000個(gè)DMA隊(duì)列,每個(gè)DMA隊(duì)列按照40G線速來設(shè)計(jì),那么一個(gè)DMA隊(duì)列的傳輸帶寬可以在1M~40G間配置,這個(gè)跨度帶來的硬件資源消耗包括:每個(gè)DMA隊(duì)列的硬件緩存需要按照40G配置,消耗的緩存與吞吐量成正比。而在對DMA隊(duì)列做限定速率的時(shí)候,速度計(jì)量器和比較器也需要按照40G來設(shè)計(jì)。除了硬件資源消耗以外,由于要考慮1M和40G的DMA隊(duì)列同時(shí)存在的不平衡性,設(shè)計(jì)上和驗(yàn)證上都會(huì)有相當(dāng)?shù)膹?fù)雜性。在上述40G網(wǎng)卡的示例中,支持4000個(gè)DMA隊(duì)列所占用的硬件資源是相當(dāng)巨大的,從而極大的增大了芯片的面積和功耗。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的為提供一種基于多DMA隊(duì)列的數(shù)據(jù)傳輸方法和裝置,旨在解決基于多DMA隊(duì)列進(jìn)行數(shù)據(jù)傳輸時(shí)對硬件資源消耗大的技術(shù)問題。
為達(dá)以上目的,本發(fā)明提出一種基于多DMA隊(duì)列的數(shù)據(jù)傳輸方法,所述方法包括以下步驟:
配置一級(jí)DMA隊(duì)列和二級(jí)DMA隊(duì)列,為所述一級(jí)DMA隊(duì)列分配至少一個(gè)二級(jí)DMA隊(duì)列;
通過所述一級(jí)DMA隊(duì)列獲取數(shù)據(jù),將所述數(shù)據(jù)分配給所述一級(jí)DMA隊(duì)列對應(yīng)的二級(jí)DMA隊(duì)列;
通過對所述二級(jí)DMA隊(duì)列進(jìn)行調(diào)度來控制數(shù)據(jù)傳輸。
進(jìn)一步地,所述通過對所述二級(jí)DMA隊(duì)列進(jìn)行調(diào)度來控制數(shù)據(jù)傳輸?shù)牟襟E包括:
根據(jù)調(diào)度策略選擇二級(jí)DMA隊(duì)列,執(zhí)行選中的二級(jí)DMA隊(duì)列的數(shù)據(jù)傳輸請求;
判斷所述二級(jí)DMA隊(duì)列的傳輸速率是否超過了限定速率,若是,則掛起所述二級(jí)DMA隊(duì)列。
進(jìn)一步地,所述將所述數(shù)據(jù)分配給所述一級(jí)DMA隊(duì)列對應(yīng)的二級(jí)DMA隊(duì)列的步驟包括:
當(dāng)一個(gè)數(shù)據(jù)包括至少兩個(gè)部分時(shí),將所述數(shù)據(jù)的各個(gè)部分分配給所述一級(jí)DMA隊(duì)列對應(yīng)的同一個(gè)DMA隊(duì)列。
進(jìn)一步地,所述將所述數(shù)據(jù)分配給所述一級(jí)DMA隊(duì)列對應(yīng)的二級(jí)DMA隊(duì)列的步驟包括:
當(dāng)一個(gè)數(shù)據(jù)包括至少兩個(gè)部分時(shí),將所述數(shù)據(jù)的各個(gè)部分分別分配給所述一級(jí)DMA隊(duì)列對應(yīng)的至少兩個(gè)二級(jí)DMA隊(duì)列,并為所述數(shù)據(jù)的各個(gè)部分設(shè)置所屬二級(jí)DMA隊(duì)列之間的關(guān)聯(lián)關(guān)系。
進(jìn)一步地,所述方法還包括:
當(dāng)選中的二級(jí)DMA隊(duì)列的數(shù)據(jù)傳輸請求執(zhí)行完畢后,判斷本次傳輸?shù)臄?shù)據(jù)塊是否為一個(gè)完整的數(shù)據(jù);
若不是一個(gè)完整的數(shù)據(jù),則進(jìn)一步判斷本次傳輸?shù)臄?shù)據(jù)塊是否是同一個(gè)數(shù)據(jù)的最后一部分;
若不是同一個(gè)數(shù)據(jù)的最后一部分,則自動(dòng)將本次傳輸?shù)臄?shù)據(jù)塊所關(guān)聯(lián)的二級(jí)DMA隊(duì)列作為下一輪調(diào)度的選擇結(jié)果。
本發(fā)明同時(shí)提出一種基于多DMA隊(duì)列的數(shù)據(jù)傳輸裝置,所述裝置包括:
隊(duì)列配置模塊,用于配置一級(jí)DMA隊(duì)列和二級(jí)DMA隊(duì)列,為所述一級(jí)DMA隊(duì)列分配至少一個(gè)二級(jí)DMA隊(duì)列;
數(shù)據(jù)分配模塊,用于通過所述一級(jí)DMA隊(duì)列獲取數(shù)據(jù),將所述數(shù)據(jù)分配給所述一級(jí)DMA隊(duì)列對應(yīng)的二級(jí)DMA隊(duì)列;
隊(duì)列調(diào)度模塊,用于通過對所述二級(jí)DMA隊(duì)列進(jìn)行調(diào)度來控制數(shù)據(jù)傳輸。
進(jìn)一步地,所述隊(duì)列調(diào)度模塊用于:
根據(jù)調(diào)度策略選擇二級(jí)DMA隊(duì)列,執(zhí)行選中的二級(jí)DMA隊(duì)列的數(shù)據(jù)傳輸請求;判斷所述二級(jí)DMA隊(duì)列的傳輸速率是否超過了限定速率,若是,則掛起所述二級(jí)DMA隊(duì)列。
進(jìn)一步地,所述數(shù)據(jù)分配模塊用于:
當(dāng)一個(gè)數(shù)據(jù)包括至少兩個(gè)部分時(shí),將所述數(shù)據(jù)的各個(gè)部分分配給所述一級(jí)DMA隊(duì)列對應(yīng)的同一個(gè)DMA隊(duì)列。
進(jìn)一步地,所述數(shù)據(jù)分配模塊用于:
當(dāng)一個(gè)數(shù)據(jù)包括至少兩個(gè)部分時(shí),將所述數(shù)據(jù)的各個(gè)部分分別分配給所述一級(jí)DMA隊(duì)列對應(yīng)的至少兩個(gè)二級(jí)DMA隊(duì)列,并為所述數(shù)據(jù)的各個(gè)部分設(shè)置所屬二級(jí)DMA隊(duì)列之間的關(guān)聯(lián)關(guān)系。
進(jìn)一步地,所述隊(duì)列調(diào)度模塊還用于:
當(dāng)選中的二級(jí)DMA隊(duì)列的數(shù)據(jù)傳輸請求執(zhí)行完畢后,判斷本次傳輸?shù)臄?shù)據(jù)塊是否為一個(gè)完整的數(shù)據(jù);若不是一個(gè)完整的數(shù)據(jù),則進(jìn)一步判斷本次傳輸?shù)臄?shù)據(jù)塊是否是同一個(gè)數(shù)據(jù)的最后一部分;若不是同一個(gè)數(shù)據(jù)的最后一部分,則自動(dòng)將本次傳輸?shù)臄?shù)據(jù)塊包關(guān)聯(lián)的二級(jí)DMA隊(duì)列作為下一輪調(diào)度的選擇結(jié)果。
本發(fā)明實(shí)施例所提供的一種基于多DMA隊(duì)列的數(shù)據(jù)傳輸方法,通過將DMA隊(duì)列配置為一級(jí)DMA隊(duì)列和二級(jí)DMA隊(duì)列,一級(jí)DMA隊(duì)列接收數(shù)據(jù)并分配給二級(jí)DMA隊(duì)列,二級(jí)DMA隊(duì)列參與后續(xù)的數(shù)據(jù)傳輸和調(diào)度,由于二級(jí)DMA隊(duì)列的數(shù)據(jù)來自于一級(jí)DMA隊(duì)列的分配,而同一個(gè)一級(jí)DMA隊(duì)列下可以有多個(gè)二級(jí)DMA隊(duì)列,因此每個(gè)二級(jí)DMA隊(duì)列只需要支持很小的速率,大大減小了每個(gè)二級(jí)DMA隊(duì)列的緩存,從而減小了對硬件資源的消耗,有效節(jié)省了芯片的面積和功耗。同時(shí),使得增加DMA隊(duì)列的代價(jià)變得可控,可以以較低的成本實(shí)現(xiàn)更多的DMA隊(duì)列,對虛擬化應(yīng)用提供了更大的靈活性,并使得硬件能夠更好的支持更細(xì)粒度的虛擬化。
附圖說明
圖1是本發(fā)明第一實(shí)施例的基于多DMA隊(duì)列的數(shù)據(jù)傳輸方法的流程圖;
圖2是本發(fā)明實(shí)施例中DMA隊(duì)列的結(jié)構(gòu)示意圖;
圖3是本發(fā)明實(shí)施例中二級(jí)DMA隊(duì)列的狀態(tài)轉(zhuǎn)換示意圖;
圖4是本發(fā)明實(shí)施例中一級(jí)DMA隊(duì)列向二級(jí)DMA隊(duì)列分配數(shù)據(jù)的示意圖;
圖5是本發(fā)明實(shí)施例中一級(jí)DMA隊(duì)列向二級(jí)DMA隊(duì)列分配數(shù)據(jù)的另一示意圖;
圖6是本發(fā)明第二實(shí)施例的基于多DMA隊(duì)列的數(shù)據(jù)傳輸方法的流程圖;
圖7是本發(fā)明第三實(shí)施例的基于多DMA隊(duì)列的數(shù)據(jù)傳輸裝置的模塊示意圖。
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個(gè)”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時(shí),它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個(gè)或更多個(gè)相關(guān)聯(lián)的列出項(xiàng)的全部或任一單元和全部組合。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會(huì)用理想化或過于正式的含義來解釋。
實(shí)施例一
參照圖1,提出本發(fā)明第一實(shí)施例的基于多DMA隊(duì)列的數(shù)據(jù)傳輸方法,所述方法包括以下步驟:
S11、配置一級(jí)DMA隊(duì)列和二級(jí)DMA隊(duì)列,為一級(jí)DMA隊(duì)列分配至少一個(gè)二級(jí)DMA隊(duì)列。
本發(fā)明實(shí)施例中,將傳統(tǒng)的DMA隊(duì)列拆分成兩級(jí)DMA隊(duì)列,分別為一級(jí)DMA隊(duì)列和二級(jí)DMA隊(duì)列,可選地,可以將一級(jí)DMA隊(duì)列稱為客戶隊(duì)列,將二級(jí)DMA隊(duì)列稱為調(diào)度隊(duì)列。
一級(jí)DMA隊(duì)列提供給用戶傳統(tǒng)的DMA隊(duì)列操作界面,比如在40G網(wǎng)卡的示例中,每個(gè)一級(jí)DMA隊(duì)列依舊可以被配置成1M~40G之間的任意速率。一級(jí)DMA隊(duì)列的數(shù)量可以根據(jù)需要配置,如配置兩個(gè)、三個(gè)或多個(gè)一級(jí)DMA隊(duì)列,如圖2所示,示例性的配置了三個(gè)一級(jí)DMA隊(duì)列,分別為CQ0、CQ1和CQ2。
二級(jí)DMA隊(duì)列是真正在數(shù)據(jù)通路上參與數(shù)據(jù)傳輸和調(diào)度的隊(duì)列,是在數(shù)據(jù)通路上參與操作和仲裁的邏輯單元。換句話說,二級(jí)DMA隊(duì)列參與服務(wù)仲裁,仲裁結(jié)果決定選中哪個(gè)二級(jí)DMA隊(duì)列中的數(shù)據(jù)被執(zhí)行。為每個(gè)二級(jí)DMA隊(duì)列設(shè)置限制速率,各個(gè)二級(jí)DMA隊(duì)列的限制速率可以相同也可以不同。二級(jí)DMA隊(duì)列的數(shù)量可以和一級(jí)DMA隊(duì)列的數(shù)目一樣多,或者更多,如圖2所示,示例性的配置了六個(gè)二級(jí)DMA隊(duì)列,分別為SQ0、SQ1、SQ2、SQ3、SQ4和SQ5。每個(gè)一級(jí)隊(duì)列需要支持的最高速率=超額配置速率/二級(jí)DMA隊(duì)列的數(shù)量,超額配置速率一般會(huì)高于線速,但是不會(huì)高太多,仍然以40G網(wǎng)卡作為示例,如果設(shè)定超額配置速率為80G(2倍線速),二級(jí)DMA隊(duì)列的數(shù)量為4000,那么每個(gè)二級(jí)DMA隊(duì)列只需要支持1M~20M的速率,因此每個(gè)二級(jí)DMA隊(duì)列需要的緩存就很少,而且各二級(jí)DMA隊(duì)列之間也更均衡。
可以通過建立一級(jí)DMA隊(duì)列和二級(jí)DMA隊(duì)列的映射關(guān)系來為每一個(gè)一級(jí)DMA隊(duì)列分配二級(jí)DMA隊(duì)列,其中,一級(jí)DMA隊(duì)列和二級(jí)DMA隊(duì)列的映射關(guān)系可以由軟件來指定或者由硬件通過算法來指定。映射到同一一級(jí)DMA隊(duì)列的二級(jí)DMA隊(duì)列的隊(duì)列序號(hào)可以是連續(xù)的或者是不連續(xù)的,比如二級(jí)DMA隊(duì)列隊(duì)列1、2、3映射到一級(jí)DMA隊(duì)列1是連續(xù)的,而把二級(jí)DMA隊(duì)列1、3、5映射到一級(jí)DMA隊(duì)列1則是不連續(xù)的,連續(xù)的隊(duì)列序號(hào)映射到同一客戶隊(duì)列可以節(jié)省隊(duì)列映射的邏輯。如圖2所示,可以將二級(jí)DMA隊(duì)列SQ0分配給一級(jí)DMA隊(duì)列CQ0,將二級(jí)DMA隊(duì)列SQ1,SQ2,SQ3分配給一級(jí)DMA隊(duì)列CQ1將二級(jí)DMA隊(duì)列SQ4和SQ5配給一級(jí)DMA隊(duì)列CQ2。
映射在同一個(gè)一級(jí)DMA隊(duì)列上的所有二級(jí)DMA隊(duì)列的信用值(credit)和速率合在一起等于該一級(jí)DMA隊(duì)列的信用值和速率設(shè)定。信用值用于帶權(quán)重的優(yōu)先級(jí)仲裁或者輪詢仲裁,映射在同一個(gè)一級(jí)DMA隊(duì)列上的不同二級(jí)DMA隊(duì)列的信用值和速率值(限定速率)可以不一樣。
如圖3所示,二級(jí)DMA隊(duì)列至少有休眠、激活和掛起三種狀態(tài)。二級(jí)DMA隊(duì)列被分配給一級(jí)DMA隊(duì)列后(如在映射到一級(jí)DMA隊(duì)列后),則從休眠狀態(tài)進(jìn)入激活狀態(tài);當(dāng)二級(jí)DMA隊(duì)列發(fā)送數(shù)據(jù)的傳輸速率超過其限定速率時(shí),二級(jí)DMA隊(duì)列則從激活狀態(tài)進(jìn)入掛起狀態(tài);在掛起狀態(tài)下,當(dāng)滿足解除掛起狀態(tài)的條件時(shí)(如掛起持續(xù)預(yù)設(shè)時(shí)間,掛起計(jì)時(shí)器計(jì)時(shí)結(jié)束時(shí)),二級(jí)DMA隊(duì)列又從掛起狀態(tài)返回激活狀態(tài);二級(jí)DMA隊(duì)列在激活和掛起兩個(gè)狀態(tài)之間來回轉(zhuǎn)換,直到與一級(jí)DMA隊(duì)列的映射關(guān)系被取消時(shí),重新回到休眠狀態(tài)。
S12、通過一級(jí)DMA隊(duì)列獲取數(shù)據(jù),將數(shù)據(jù)分配給該一級(jí)DMA隊(duì)列對應(yīng)的二級(jí)DMA隊(duì)列。
本步驟S12中,一級(jí)DMA隊(duì)列接收數(shù)據(jù),然后將接收到的數(shù)據(jù)按照預(yù)設(shè)的分配策略分配給其對應(yīng)的二級(jí)DMA隊(duì)列,可選地,一級(jí)DMA隊(duì)列可以根據(jù)負(fù)載均衡原則進(jìn)行數(shù)據(jù)分配,如將接收到的數(shù)據(jù)按順序分配給各個(gè)二級(jí)DMA隊(duì)列。如圖2所示,一級(jí)DMA隊(duì)列CQ1接收到D0-D5共六個(gè)數(shù)據(jù),其中,將數(shù)據(jù)D0和D3分配給二級(jí)DMA隊(duì)列SQ1,將數(shù)據(jù)D1和D4分配給二級(jí)DMA隊(duì)列SQ2,將數(shù)據(jù)D2和D5分配給二級(jí)DMA隊(duì)列SQ3。
當(dāng)一個(gè)數(shù)據(jù)包括至少兩個(gè)部分時(shí),一級(jí)DMA隊(duì)列可以采用以下兩種分配策略進(jìn)行數(shù)據(jù)分配:
其一,一級(jí)DMA隊(duì)列將數(shù)據(jù)的各個(gè)部分分配給其對應(yīng)的同一個(gè)DMA隊(duì)列。例如,如圖4所示,一級(jí)DMA隊(duì)列CQ1將一個(gè)由D1(1)-D1(3)三部分組成的數(shù)據(jù)打包后全部分配給二級(jí)DMA隊(duì)列SQ2。
其二,一級(jí)DMA隊(duì)列將數(shù)據(jù)的各個(gè)部分分別分配給一級(jí)DMA隊(duì)列對應(yīng)的至少兩個(gè)二級(jí)DMA隊(duì)列,并為該數(shù)據(jù)的各個(gè)部分設(shè)置所屬二級(jí)DMA隊(duì)列之間的關(guān)聯(lián)關(guān)系,這種分配策略的優(yōu)點(diǎn)是可以使各個(gè)二級(jí)DMA隊(duì)列的負(fù)荷更均衡,而且可以節(jié)省數(shù)據(jù)緩存。例如,如圖5所示,一級(jí)DMA隊(duì)列CQ1將一個(gè)由D1(1)-D1(3)三部分組成的數(shù)據(jù)分別分配給三個(gè)二級(jí)DMA隊(duì)列,其中,D(1)分配給二級(jí)DMA隊(duì)列SQ2,D1(2)分配給二級(jí)DMA隊(duì)列SQ3,D1(3)分配給二級(jí)DMA隊(duì)列SQ1,并且將D1(1)鏈接到D1(2)所屬的二級(jí)DMA隊(duì)列SQ3,將D1(2)鏈接到D1(3)所屬的二級(jí)DMA隊(duì)列SQ1,以保證同一個(gè)數(shù)據(jù)能連續(xù)地發(fā)出。將同一個(gè)數(shù)據(jù)的不同部分按順序分配到不同的二級(jí)DMA隊(duì)列可以節(jié)省緩存數(shù)據(jù)的空間。
本發(fā)明實(shí)施例中,傳輸?shù)臄?shù)據(jù)主要是數(shù)據(jù)報(bào),當(dāng)然,也可以傳輸其它的數(shù)據(jù)。數(shù)據(jù)報(bào)存儲(chǔ)于物理內(nèi)存中時(shí),以數(shù)據(jù)塊的形式存在,在傳輸數(shù)據(jù)報(bào)時(shí),只需要傳輸數(shù)據(jù)報(bào)所對應(yīng)的數(shù)據(jù)塊的描述符(或稱控制符)即可,該描述符指示了數(shù)據(jù)報(bào)在物理內(nèi)存中的存放位置,也就是說,放入一級(jí)DMA隊(duì)列和二級(jí)DMA隊(duì)列的數(shù)據(jù)是數(shù)據(jù)報(bào)的描述符。
通常的,每一個(gè)數(shù)據(jù)塊中存放一個(gè)數(shù)據(jù)報(bào)的內(nèi)容,一個(gè)指示符指示一個(gè)完整的數(shù)據(jù)報(bào),一級(jí)DMA隊(duì)列接收各個(gè)數(shù)據(jù)報(bào)的描述符,并將各個(gè)數(shù)據(jù)報(bào)的描述符分配給對應(yīng)的二級(jí)DMA隊(duì)列。
但在某些情況下,一個(gè)數(shù)據(jù)報(bào)在物理內(nèi)存里的存儲(chǔ)位置可能是離散的,一個(gè)數(shù)據(jù)報(bào)由至少兩個(gè)數(shù)據(jù)塊組成,因此需要至少兩個(gè)描述符才能表述一個(gè)完整的數(shù)據(jù)報(bào)。此時(shí),一級(jí)DMA隊(duì)列可以將同一數(shù)據(jù)報(bào)的不同描述符打包后分配給其對應(yīng)的同一個(gè)二級(jí)DMA隊(duì)列,也可以將同一數(shù)據(jù)報(bào)的不同描述符分別分配給其對應(yīng)的不同的二級(jí)DMA隊(duì)列,將同一個(gè)數(shù)據(jù)報(bào)的不同描述符按順序分配到不同的二級(jí)DMA隊(duì)列可以節(jié)省緩存描述符的空間。通過建立鏈接關(guān)系來同步同一個(gè)數(shù)據(jù)報(bào)的不同描述符。一級(jí)DMA隊(duì)列把描述符分配到二級(jí)DMA隊(duì)列的分配方式可以隨應(yīng)用不同而不同。
S13、通過對二級(jí)DMA隊(duì)列進(jìn)行調(diào)度來控制數(shù)據(jù)傳輸。
本發(fā)明實(shí)施例中,由二級(jí)DMA隊(duì)列參與數(shù)據(jù)傳輸和調(diào)度。具體的,處于激活狀態(tài)的各個(gè)二級(jí)DMA隊(duì)列向隊(duì)列調(diào)度模塊(如QOS)發(fā)送數(shù)據(jù)傳輸請求,隊(duì)列調(diào)度模塊根據(jù)調(diào)度策略選擇二級(jí)DMA隊(duì)列,執(zhí)行選中的二級(jí)DMA隊(duì)列的數(shù)據(jù)傳輸請求;當(dāng)該二級(jí)DMA隊(duì)列的數(shù)據(jù)傳輸請求執(zhí)行完畢后,隊(duì)列調(diào)度模塊判斷該二級(jí)DMA隊(duì)列的傳輸速率是否超過了限定速率,若是,則掛起該二級(jí)DMA隊(duì)列,若否,則繼續(xù)保持該二級(jí)DMA隊(duì)列處于激活狀態(tài)。處于掛起狀態(tài)的二級(jí)DMA隊(duì)列不再請求數(shù)據(jù)傳輸,直到滿足解除掛起狀態(tài)的條件時(shí)(如掛起持續(xù)預(yù)設(shè)時(shí)間,掛起計(jì)時(shí)器計(jì)時(shí)結(jié)束時(shí)),二級(jí)DMA隊(duì)列才從掛起狀態(tài)返回激活狀態(tài)。
本發(fā)明實(shí)施例所述的調(diào)度策略可以采用現(xiàn)有技術(shù)的調(diào)度策略,在此不贅述。
進(jìn)一步地,為了保證被分配給不同的二級(jí)DMA隊(duì)列的同一數(shù)據(jù)能被完整連續(xù)的傳輸,當(dāng)選中的二級(jí)DMA隊(duì)列的數(shù)據(jù)傳輸請求執(zhí)行完畢后,隊(duì)列調(diào)度模塊還判斷本次傳輸?shù)臄?shù)據(jù)塊是否為一個(gè)完整的數(shù)據(jù);若不是一個(gè)完整的數(shù)據(jù),則進(jìn)一步判斷本次傳輸?shù)臄?shù)據(jù)塊是否是同一個(gè)數(shù)據(jù)的最后一部分;若不是同一個(gè)數(shù)據(jù)的最后一部分,則自動(dòng)將本次傳輸?shù)臄?shù)據(jù)塊所關(guān)聯(lián)的二級(jí)DMA隊(duì)列作為下一輪調(diào)度的選擇結(jié)果。
舉例而言,當(dāng)傳輸?shù)臄?shù)據(jù)為數(shù)據(jù)報(bào)的描述符時(shí),當(dāng)選中的二級(jí)DMA隊(duì)列的數(shù)據(jù)傳輸請求執(zhí)行完畢后,隊(duì)列調(diào)度模塊判斷本次傳輸?shù)拿枋龇欠裰甘玖艘粋€(gè)完整的數(shù)據(jù)報(bào);若否,則進(jìn)一步判斷本次傳輸?shù)拿枋龇欠裰甘就粋€(gè)數(shù)據(jù)報(bào)的最后一部分;若否,則自動(dòng)將本次傳輸?shù)拿枋龇P(guān)聯(lián)的二級(jí)DMA隊(duì)列作為下一輪調(diào)度的選擇結(jié)果。
例如,在圖5中,當(dāng)選中二級(jí)DMA隊(duì)列SQ2傳輸D1(1)后,下一輪調(diào)度時(shí)則自動(dòng)選中二級(jí)DMA隊(duì)列SQ3傳輸D1(2),再下一輪調(diào)度時(shí)則自動(dòng)選中二級(jí)DMA隊(duì)列SQ1傳輸D1(3)。
本發(fā)明實(shí)施例的基于多DMA隊(duì)列的數(shù)據(jù)傳輸方法,通過將DMA隊(duì)列配置為一級(jí)DMA隊(duì)列和二級(jí)DMA隊(duì)列,一級(jí)DMA隊(duì)列接收數(shù)據(jù)并分配給二級(jí)DMA隊(duì)列,二級(jí)DMA隊(duì)列參與后續(xù)的數(shù)據(jù)傳輸和調(diào)度,由于二級(jí)DMA隊(duì)列的數(shù)據(jù)來自于一級(jí)DMA隊(duì)列的分配,而同一個(gè)一級(jí)DMA隊(duì)列下可以有多個(gè)二級(jí)DMA隊(duì)列,因此每個(gè)二級(jí)DMA隊(duì)列只需要支持很小的速率,大大減小了每個(gè)二級(jí)DMA隊(duì)列的緩存,從而減小了對硬件資源的消耗,有效節(jié)省了芯片的面積和功耗。同時(shí),使得增加DMA隊(duì)列的代價(jià)變得可控,可以以較低的成本實(shí)現(xiàn)更多的DMA隊(duì)列,對虛擬化應(yīng)用提供了更大的靈活性,并使得硬件能夠更好的支持更細(xì)粒度的虛擬化。
實(shí)施例二
參照圖6,提出本發(fā)明第二實(shí)施例的基于多DMA隊(duì)列的數(shù)據(jù)傳輸方法,本實(shí)施例以傳輸數(shù)據(jù)報(bào)為例,包括以下步驟:
S21、一級(jí)DMA隊(duì)列接收數(shù)據(jù)報(bào)的描述符。
S22、一級(jí)DMA隊(duì)列將描述符分配到激活的二級(jí)DMA隊(duì)列。
其中,一個(gè)一級(jí)DMA隊(duì)列至少分配了一個(gè)二級(jí)DMA隊(duì)列,各一級(jí)DMA隊(duì)列將各自接收到的描述符分配給其對應(yīng)的二級(jí)DMA隊(duì)列。當(dāng)同一數(shù)據(jù)報(bào)由多個(gè)描述符指示時(shí),一級(jí)DMA隊(duì)列可以將同一數(shù)據(jù)報(bào)的不同描述符打包后分配給其對應(yīng)的同一個(gè)二級(jí)DMA隊(duì)列,也可以將同一數(shù)據(jù)報(bào)的不同描述符分別分配給其對應(yīng)的不同的二級(jí)DMA隊(duì)列。
二級(jí)DMA隊(duì)列參與后續(xù)的調(diào)度,換句話說,二級(jí)DMA隊(duì)列參與隊(duì)列調(diào)度模塊的服務(wù)仲裁,仲裁結(jié)果決定選中哪個(gè)二級(jí)DMA隊(duì)列中的描述符被執(zhí)行。
S23、隊(duì)列調(diào)度模塊根據(jù)調(diào)度策略選擇二級(jí)DMA隊(duì)列,執(zhí)行選中的二級(jí)DMA隊(duì)列的數(shù)據(jù)傳輸請求。傳輸一次二級(jí)DMA隊(duì)列請求傳輸?shù)臄?shù)據(jù)報(bào)的描述符。
S24、隊(duì)列調(diào)度模塊判斷選中的二級(jí)DMA隊(duì)列的傳輸速率是否超過限定速率。當(dāng)超過限定速率時(shí),執(zhí)行步驟S25;當(dāng)沒有超過限定速率時(shí),直接跳到步驟S26。
S25、隊(duì)列調(diào)度模塊掛起選中的二級(jí)DMA隊(duì)列。然后執(zhí)行步驟S26。
處于掛起狀態(tài)的二級(jí)DMA隊(duì)列不再請求數(shù)據(jù)傳輸,直到滿足解除掛起狀態(tài)的條件時(shí)(如掛起持續(xù)預(yù)設(shè)時(shí)間,掛起計(jì)時(shí)器計(jì)時(shí)結(jié)束時(shí)),二級(jí)DMA隊(duì)列才從掛起狀態(tài)返回激活狀態(tài)。
S26、隊(duì)列調(diào)度模塊判斷本次傳輸?shù)拿枋龇欠裰甘玖艘粋€(gè)完整的數(shù)據(jù)報(bào)。若是,則返回步驟S23,進(jìn)行下一輪調(diào)度;若否,則執(zhí)行步驟S27。
S27、隊(duì)列調(diào)度模塊判斷本次傳輸?shù)拿枋龇欠裰甘就粋€(gè)數(shù)據(jù)報(bào)的最后一部分。若是則返回步驟S23,進(jìn)行下一輪調(diào)度;若否,則執(zhí)行步驟S28。
S28、隊(duì)列調(diào)度模塊自動(dòng)將本次傳輸?shù)拿枋龇P(guān)聯(lián)的二級(jí)DMA隊(duì)列作為下一輪調(diào)度的選擇結(jié)果,并返回步驟S23,進(jìn)行下一輪調(diào)度。
采用本發(fā)明實(shí)施例的基于多DMA隊(duì)列的數(shù)據(jù)傳輸方法,每個(gè)二級(jí)DMA隊(duì)列只需要支持很小的速率,大大減小了每個(gè)二級(jí)DMA隊(duì)列的緩存,從而減小了對硬件資源的消耗,有效節(jié)省了芯片的面積和功耗。同時(shí),使得增加DMA隊(duì)列的代價(jià)變得可控,可以以較低的成本實(shí)現(xiàn)更多的DMA隊(duì)列,對虛擬化應(yīng)用提供了更大的靈活性,并使得硬件能夠更好的支持更細(xì)粒度的虛擬化。
實(shí)施例三
參照圖7,提出本發(fā)明第三實(shí)施例的基于多DMA隊(duì)列的數(shù)據(jù)傳輸裝置,所述裝置包括隊(duì)列配置模塊、數(shù)據(jù)分配模塊和隊(duì)列調(diào)度模塊,其中:
隊(duì)列配置模塊:用于配置一級(jí)DMA隊(duì)列和二級(jí)DMA隊(duì)列,為一級(jí)DMA隊(duì)列分配至少一個(gè)二級(jí)DMA隊(duì)列。
一級(jí)DMA隊(duì)列提供給用戶傳統(tǒng)的DMA隊(duì)列操作界面,二級(jí)DMA隊(duì)列是真正在數(shù)據(jù)通路上參與數(shù)據(jù)傳輸和隊(duì)列調(diào)度模塊的調(diào)度的隊(duì)列。隊(duì)列配置模塊為每個(gè)二級(jí)DMA隊(duì)列設(shè)置了限制速率,各個(gè)二級(jí)DMA隊(duì)列的限制速率可以相同也可以不同。
隊(duì)列配置模塊可以通過建立一級(jí)DMA隊(duì)列和二級(jí)DMA隊(duì)列的映射關(guān)系來為每一個(gè)一級(jí)DMA隊(duì)列分配二級(jí)DMA隊(duì)列。如圖2所示,隊(duì)列配置模塊可以將二級(jí)DMA隊(duì)列SQ0分配給一級(jí)DMA隊(duì)列CQ0,將二級(jí)DMA隊(duì)列SQ1,SQ2,SQ3分配給一級(jí)DMA隊(duì)列CQ1將二級(jí)DMA隊(duì)列SQ4和SQ5配給一級(jí)DMA隊(duì)列CQ2。
數(shù)據(jù)分配模塊:用于通過一級(jí)DMA隊(duì)列獲取數(shù)據(jù),將數(shù)據(jù)分配給一級(jí)DMA隊(duì)列對應(yīng)的二級(jí)DMA隊(duì)列。
具體的,數(shù)據(jù)分配模塊通過一級(jí)DMA隊(duì)列接收數(shù)據(jù),然后將接收到的數(shù)據(jù)按照預(yù)設(shè)的分配策略分配給其對應(yīng)的二級(jí)DMA隊(duì)列,可選地,一級(jí)DMA隊(duì)列可以根據(jù)負(fù)載均衡原則進(jìn)行數(shù)據(jù)分配,如將接收到的數(shù)據(jù)按順序分配給各個(gè)二級(jí)DMA隊(duì)列。如圖2所示,一級(jí)DMA隊(duì)列CQ1接收到D0-D5共六個(gè)數(shù)據(jù),其中,將數(shù)據(jù)D0和D3分配給二級(jí)DMA隊(duì)列SQ1,將數(shù)據(jù)D1和D4分配給二級(jí)DMA隊(duì)列SQ2,將數(shù)據(jù)D2和D5分配給二級(jí)DMA隊(duì)列SQ3。
當(dāng)一個(gè)數(shù)據(jù)包括至少兩個(gè)部分時(shí),一級(jí)DMA隊(duì)列可以采用以下兩種分配策略進(jìn)行數(shù)據(jù)分配:
其一,一級(jí)DMA隊(duì)列將數(shù)據(jù)的各個(gè)部分分配給其對應(yīng)的同一個(gè)DMA隊(duì)列。例如,如圖4所示,一級(jí)DMA隊(duì)列CQ1將一個(gè)由D1(1)-D1(3)三部分組成的數(shù)據(jù)打包后全部分配給二級(jí)DMA隊(duì)列SQ2。
其二,一級(jí)DMA隊(duì)列將數(shù)據(jù)的各個(gè)部分分別分配給一級(jí)DMA隊(duì)列對應(yīng)的至少兩個(gè)二級(jí)DMA隊(duì)列,并為該數(shù)據(jù)的各個(gè)部分設(shè)置所屬二級(jí)DMA隊(duì)列之間的關(guān)聯(lián)關(guān)系,這種分配策略的優(yōu)點(diǎn)是可以使各個(gè)二級(jí)DMA隊(duì)列的負(fù)荷更均衡,而且可以節(jié)省數(shù)據(jù)緩存。例如,如圖5所示,一級(jí)DMA隊(duì)列CQ1將一個(gè)由D1(1)-D1(3)三部分組成的數(shù)據(jù)分別分配給三個(gè)二級(jí)DMA隊(duì)列,其中,D(1)分配給二級(jí)DMA隊(duì)列SQ2,D1(2)分配給二級(jí)DMA隊(duì)列SQ3,D1(3)分配給二級(jí)DMA隊(duì)列SQ1,并且將D1(1)鏈接到D1(2)所屬的二級(jí)DMA隊(duì)列SQ3,將D1(2)鏈接到D1(3)所屬的二級(jí)DMA隊(duì)列SQ1,以保證同一個(gè)數(shù)據(jù)能連續(xù)地發(fā)出。
本發(fā)明實(shí)施例中,傳輸?shù)臄?shù)據(jù)主要是數(shù)據(jù)報(bào),當(dāng)然,也可以傳輸其它的數(shù)據(jù)。數(shù)據(jù)報(bào)存儲(chǔ)于物理內(nèi)存中時(shí),以數(shù)據(jù)塊的形式存在,在傳輸數(shù)據(jù)報(bào)時(shí),只需要傳輸數(shù)據(jù)報(bào)所對應(yīng)的數(shù)據(jù)塊的描述符(或稱控制符)即可,該描述符指示了數(shù)據(jù)報(bào)在物理內(nèi)存中的存放位置,也就是說,放入一級(jí)DMA隊(duì)列和二級(jí)DMA隊(duì)列的數(shù)據(jù)是數(shù)據(jù)報(bào)的描述符。
通常的,每一個(gè)數(shù)據(jù)塊中存放一個(gè)數(shù)據(jù)報(bào)的內(nèi)容,如圖6所示,數(shù)據(jù)塊0-5中分別存放了數(shù)據(jù)報(bào)0-5的內(nèi)容。一級(jí)DMA隊(duì)列接收各個(gè)數(shù)據(jù)報(bào)的描述符,并將各個(gè)數(shù)據(jù)報(bào)的描述符分配給對應(yīng)的二級(jí)DMA隊(duì)列。
但在某些情況下,一個(gè)數(shù)據(jù)報(bào)在物理內(nèi)存里的存儲(chǔ)位置可能是離散的,一個(gè)數(shù)據(jù)報(bào)由至少兩個(gè)數(shù)據(jù)塊組成,因此需要至少兩個(gè)描述符才能表述,如圖7所示,數(shù)據(jù)塊(1)-(3)組成一個(gè)數(shù)據(jù)報(bào)D1。此時(shí),一級(jí)DMA隊(duì)列可以將同一數(shù)據(jù)報(bào)的不同描述符打包后分配給其對應(yīng)的同一個(gè)二級(jí)DMA隊(duì)列,也可以將同一數(shù)據(jù)報(bào)的不同描述符分別分配給其對應(yīng)的不同的二級(jí)DMA隊(duì)列。
隊(duì)列調(diào)度模塊:用于通過對二級(jí)DMA隊(duì)列進(jìn)行調(diào)度來控制數(shù)據(jù)傳輸。
具體的,隊(duì)列調(diào)度模塊根據(jù)調(diào)度策略選擇二級(jí)DMA隊(duì)列,執(zhí)行選中的二級(jí)DMA隊(duì)列的數(shù)據(jù)傳輸請求;當(dāng)該二級(jí)DMA隊(duì)列的數(shù)據(jù)傳輸請求執(zhí)行完畢后,隊(duì)列調(diào)度模塊判斷該二級(jí)DMA隊(duì)列的傳輸速率是否超過了限定速率,若是,則掛起該二級(jí)DMA隊(duì)列,若否,則繼續(xù)保持該二級(jí)DMA隊(duì)列處于激活狀態(tài)。處于掛起狀態(tài)的二級(jí)DMA隊(duì)列不再請求數(shù)據(jù)傳輸,直到滿足解除掛起狀態(tài)的條件時(shí)(如掛起持續(xù)預(yù)設(shè)時(shí)間,掛起計(jì)時(shí)器計(jì)時(shí)結(jié)束時(shí)),二級(jí)DMA隊(duì)列才從掛起狀態(tài)返回激活狀態(tài)。
本發(fā)明實(shí)施例所述的調(diào)度策略可以采用現(xiàn)有技術(shù)的調(diào)度策略,在此不贅述。
進(jìn)一步地,為了保證被分配給不同的二級(jí)DMA隊(duì)列的同一數(shù)據(jù)能被完整連續(xù)的傳輸,當(dāng)選中的二級(jí)DMA隊(duì)列的數(shù)據(jù)傳輸請求執(zhí)行完畢后,隊(duì)列調(diào)度模塊還判斷本次傳輸?shù)臄?shù)據(jù)塊是否為一個(gè)完整的數(shù)據(jù);若不是一個(gè)完整的數(shù)據(jù),則進(jìn)一步判斷本次傳輸?shù)臄?shù)據(jù)塊是否是同一個(gè)數(shù)據(jù)的最后一部分;若不是同一個(gè)數(shù)據(jù)的最后一部分,則自動(dòng)將本次傳輸?shù)臄?shù)據(jù)塊所關(guān)聯(lián)的二級(jí)DMA隊(duì)列作為下一輪調(diào)度的選擇結(jié)果。
舉例而言,當(dāng)傳輸?shù)臄?shù)據(jù)為數(shù)據(jù)報(bào)的描述符時(shí),當(dāng)選中的二級(jí)DMA隊(duì)列的數(shù)據(jù)傳輸請求執(zhí)行完畢后,隊(duì)列調(diào)度模塊判斷本次傳輸?shù)拿枋龇欠裰甘玖艘粋€(gè)完整的數(shù)據(jù)報(bào);若否,則進(jìn)一步判斷本次傳輸?shù)拿枋龇欠裰甘就粋€(gè)數(shù)據(jù)報(bào)的最后一部分;若否,則自動(dòng)將本次傳輸?shù)拿枋龇P(guān)聯(lián)的二級(jí)DMA隊(duì)列作為下一輪調(diào)度的選擇結(jié)果。
例如,在圖5中,當(dāng)選中二級(jí)DMA隊(duì)列SQ2傳輸D1(1)后,下一輪調(diào)度時(shí)則自動(dòng)選中二級(jí)DMA隊(duì)列SQ3傳輸D1(2),再下一輪調(diào)度時(shí)則自動(dòng)選中二級(jí)DMA隊(duì)列SQ1傳輸D1(3)。
本發(fā)明實(shí)施例的基于多DMA隊(duì)列的數(shù)據(jù)傳輸裝置,通過將DMA隊(duì)列配置為一級(jí)DMA隊(duì)列和二級(jí)DMA隊(duì)列,一級(jí)DMA隊(duì)列接收數(shù)據(jù)并分配給二級(jí)DMA隊(duì)列,二級(jí)DMA隊(duì)列參與后續(xù)的數(shù)據(jù)傳輸和調(diào)度,由于二級(jí)DMA隊(duì)列的數(shù)據(jù)來自于一級(jí)DMA隊(duì)列的分配,而同一個(gè)一級(jí)DMA隊(duì)列下可以有多個(gè)二級(jí)DMA隊(duì)列,因此每個(gè)二級(jí)DMA隊(duì)列只需要支持很小的速率,大大減小了每個(gè)二級(jí)DMA隊(duì)列的緩存,從而減小了對硬件資源的消耗,有效節(jié)省了芯片的面積和功耗。同時(shí),使得增加DMA隊(duì)列的代價(jià)變得可控,可以以較低的成本實(shí)現(xiàn)更多的DMA隊(duì)列,對虛擬化應(yīng)用提供了更大的靈活性,并使得硬件能夠更好的支持更細(xì)粒度的虛擬化。
需要說明的是:上述實(shí)施例提供的基于多DMA隊(duì)列的數(shù)據(jù)傳輸裝置與基于多DMA隊(duì)列的數(shù)據(jù)傳輸方法實(shí)施例屬于同一構(gòu)思,其具體實(shí)現(xiàn)過程詳見方法實(shí)施例,且方法實(shí)施例中的技術(shù)特征在裝置實(shí)施例中均對應(yīng)適用,這里不再贅述。
本發(fā)明實(shí)施例的基于多DMA隊(duì)列的數(shù)據(jù)傳輸方法和裝置,主要應(yīng)用于PCIE設(shè)備,當(dāng)然也可以應(yīng)用于其它設(shè)備。
本領(lǐng)域技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請中所述操作中的一項(xiàng)或多項(xiàng)的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計(jì)和制造,或者也可以包括通用計(jì)算機(jī)中的已知設(shè)備。這些設(shè)備具有存儲(chǔ)在其內(nèi)的計(jì)算機(jī)程序,這些計(jì)算機(jī)程序選擇性地激活或重構(gòu)。這樣的計(jì)算機(jī)程序可以被存儲(chǔ)在設(shè)備(例如,計(jì)算機(jī))可讀介質(zhì)中或者存儲(chǔ)在適于存儲(chǔ)電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計(jì)算機(jī)可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、CD-ROM、和磁光盤)、ROM(Read-Only Memory,只讀存儲(chǔ)器)、RAM(Random Access Memory,隨機(jī)存儲(chǔ)器)、EPROM(Erasable Programmable Read-Only Memory,可擦寫可編程只讀存儲(chǔ)器)、EEPROM(Electrically Erasable Programmable Read-Only Memory,電可擦可編程只讀存儲(chǔ)器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計(jì)算機(jī))以能夠讀的形式存儲(chǔ)或傳輸信息的任何介質(zhì)。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以用計(jì)算機(jī)程序指令來實(shí)現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個(gè)框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以將這些計(jì)算機(jī)程序指令提供給通用計(jì)算機(jī)、專業(yè)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來實(shí)現(xiàn),從而通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個(gè)框中指定的方案。
本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進(jìn)一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進(jìn)一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。