杜 婧,喬廬峰,陳慶華,劉 熹,鄒仕祥
(中國(guó)人民解放軍陸軍工程大學(xué),江蘇 南京 210007)
以太網(wǎng)是目前應(yīng)用最為廣泛的局域網(wǎng)技術(shù),其具有良好的開放性和互操作性,部署方便、成本較低。傳統(tǒng)以太網(wǎng)無(wú)論是采用載波監(jiān)聽(tīng)多路訪 問(wèn)/沖突檢測(cè)(Carrier Sense Multiple Access/Collosion Detection,CSMA/CD)技術(shù)還是交換式以太網(wǎng),都無(wú)法在帶寬、時(shí)延和抖動(dòng)等網(wǎng)絡(luò)指標(biāo)上提供高可靠、確定性的服務(wù),這使得它們無(wú)法直接應(yīng)用于車載網(wǎng)絡(luò)、工業(yè)控制等領(lǐng)域,此類需求推動(dòng)了時(shí)間敏感網(wǎng)絡(luò)技術(shù)(Time Sensitive Network,TSN)的發(fā)展。
IEEE 802工作組在傳統(tǒng)以太網(wǎng)協(xié)議的基礎(chǔ)上[1],針對(duì)音視頻業(yè)務(wù)流提出了音視頻橋接技術(shù)(Audio Video Bridging,AVB),使其支持時(shí)間同步、帶寬預(yù)留、低延遲等功能,并發(fā)展出多個(gè)與之相關(guān)的協(xié) 議,如IEEE 802.1Qat、IEEE 802.1AS、IEEE 802.1 Qav等。后來(lái),AVB應(yīng)用范圍擴(kuò)大到了工業(yè)控制、汽車控制等領(lǐng)域,同時(shí)擴(kuò)大了所支持的業(yè)務(wù)類別并更名為TSN。TSN包括時(shí)間同步、流量調(diào)度和網(wǎng)絡(luò)配置3大關(guān)鍵技術(shù)。其中,時(shí)間同步是整個(gè)TSN技術(shù)實(shí)現(xiàn)的前提,流量調(diào)度是TSN技術(shù)實(shí)現(xiàn)的關(guān)鍵,網(wǎng)絡(luò)配置是實(shí)現(xiàn)TSN技術(shù)的保障,這些技術(shù)的應(yīng)用有效彌補(bǔ)了傳統(tǒng)以太網(wǎng)非實(shí)時(shí)性和不確定性的短板,為時(shí)間敏感型業(yè)務(wù)提供了低延時(shí)、高穩(wěn)定性的服務(wù)[2]。
TSN網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示,圖中的集中網(wǎng)絡(luò)配置控制器(Centralized Network Configuration controller,CNC)可以通過(guò)集中用戶配置控制器(Centralized User Configuration controller,CUC),獲取發(fā)送端和接收端對(duì)網(wǎng)絡(luò)帶寬和端到端傳輸時(shí)延需求等服務(wù)質(zhì)量(Quality of Service,QoS)相關(guān)參數(shù),然后運(yùn)算得到網(wǎng)絡(luò)配置參數(shù)并下發(fā)給網(wǎng)絡(luò)中相關(guān)的各交換機(jī)和端系統(tǒng)(終端0、終端1)。端系統(tǒng)根據(jù)網(wǎng)絡(luò)配置參數(shù)產(chǎn)生進(jìn)入TSN網(wǎng)絡(luò)的業(yè)務(wù)流,TSN交換機(jī)可以準(zhǔn)確識(shí)別業(yè)務(wù)流類型,根據(jù)調(diào)度策略對(duì)數(shù)據(jù)進(jìn)行調(diào)度,確保多種類型的業(yè)務(wù)流可以共存在一個(gè)網(wǎng)絡(luò)中,并能夠滿足各自的QoS需求。
圖1 TSN網(wǎng)絡(luò)基本結(jié)構(gòu)
TSN中的端系統(tǒng)產(chǎn)生進(jìn)入TSN網(wǎng)絡(luò)的數(shù)據(jù)業(yè)務(wù),同時(shí)也接收來(lái)自其他端系統(tǒng)的業(yè)務(wù)數(shù)據(jù)。對(duì)于不同類型的業(yè)務(wù),TSN網(wǎng)絡(luò)應(yīng)提供不同的QoS。例如,對(duì)于時(shí)間敏感的控制數(shù)據(jù),TSN端系統(tǒng)在發(fā)送數(shù)據(jù)之前應(yīng)向CUC發(fā)出申請(qǐng),提出相應(yīng)的QoS需求參數(shù)。CUC將相關(guān)信息通知CNC,由CNC生成網(wǎng)絡(luò)配置參數(shù)并下發(fā)給所有的TSN交換機(jī),同時(shí)也返回對(duì)TSN端系統(tǒng)的配置信息。此后,TSN端系統(tǒng)需要按照配置的參數(shù),如最大突發(fā)長(zhǎng)度、平均速率、調(diào)度時(shí)間表參數(shù)等,輸出特定的業(yè)務(wù)流。端系統(tǒng)根據(jù)TSN網(wǎng)絡(luò)配置參數(shù)調(diào)度和輸出數(shù)據(jù)業(yè)務(wù),是TSN網(wǎng)絡(luò)保證特定業(yè)務(wù)端到端QoS的前提和基礎(chǔ)。
TSN端系統(tǒng)中,除了特定的數(shù)據(jù)源,隊(duì)列管理器是其核心,它由緩沖區(qū)管理器和隊(duì)列調(diào)度器兩部分組成。緩沖區(qū)管理器支持基于優(yōu)先級(jí)的緩沖資源分配機(jī)制和基于鏈表結(jié)構(gòu)的邏輯隊(duì)列管理機(jī)制;隊(duì)列調(diào)度器同時(shí)支持基于時(shí)間列表的輸出門控機(jī)制、基于信用的輸出調(diào)度機(jī)制和基于優(yōu)先級(jí)的輸出調(diào)度機(jī)制。緩沖區(qū)管理器和隊(duì)列調(diào)度器的工作參數(shù)均可根據(jù)需要由CNC動(dòng)態(tài)配置,二者配合使用,可以滿足多業(yè)務(wù)混合條件下的端系統(tǒng)業(yè)務(wù)緩存與輸出調(diào)度需求。
本文設(shè)計(jì)并實(shí)現(xiàn)了應(yīng)用于TSN端系統(tǒng)的隊(duì)列管理器電路,支持靈活的網(wǎng)絡(luò)參數(shù)配置,可以滿足TSN網(wǎng)絡(luò)對(duì)端系統(tǒng)的設(shè)計(jì)需求。
TSN端系統(tǒng)有兩種基本類型:第一類端系統(tǒng)本身是數(shù)據(jù)源,可以根據(jù)TSN規(guī)范產(chǎn)生不同類別的數(shù)據(jù)幀;第二類端系統(tǒng)是一種TSN網(wǎng)絡(luò)接入設(shè)備,可以對(duì)非TSN終端產(chǎn)生的業(yè)務(wù)數(shù)據(jù)進(jìn)行緩沖、流量整形后發(fā)送到TSN網(wǎng)絡(luò),實(shí)現(xiàn)TSN網(wǎng)絡(luò)對(duì)端系統(tǒng)所要求的接入功能。這兩類端系統(tǒng)可以看作實(shí)現(xiàn)業(yè)務(wù)匯聚功能的專用TSN交換機(jī),而且在隊(duì)列管理器設(shè)計(jì)上具有相似之處。下面以第二類端系統(tǒng)中的隊(duì)列管理器為例加以分析,此時(shí)端系統(tǒng)的應(yīng)用場(chǎng)景和外部連接關(guān)系如圖2所示[1]。
圖2 接入型端系統(tǒng)在時(shí)間敏感網(wǎng)絡(luò)中的位置
當(dāng)端系統(tǒng)為多個(gè)不同類型的終端提供TSN網(wǎng)絡(luò)接入時(shí),需要對(duì)不同類型的業(yè)務(wù)進(jìn)行識(shí)別、緩存以及輸出調(diào)度,TSN把業(yè)務(wù)分成8個(gè)基本類別,其中,時(shí)間敏感型業(yè)務(wù)有音頻業(yè)務(wù)、視頻業(yè)務(wù)和各種控制數(shù)據(jù);非時(shí)間敏感型數(shù)據(jù)業(yè)務(wù)包括最大努力業(yè)務(wù)、卓越努力業(yè)務(wù)、關(guān)鍵應(yīng)用業(yè)務(wù)和背景業(yè)務(wù)流。來(lái)自不同終端的數(shù)據(jù)流經(jīng)過(guò)業(yè)務(wù)合路后統(tǒng)一進(jìn)行識(shí)別和分類,區(qū)分時(shí)間敏感流和非時(shí)間敏感流[3],然后進(jìn)入隊(duì)列管理器。本文設(shè)計(jì)的端系統(tǒng)隊(duì)列管理器的基本功能如圖3所示。圖中的輸入控制狀態(tài)機(jī)負(fù)責(zé)將輸入以太網(wǎng)幀分割成定長(zhǎng)的內(nèi)部信元,并寫入當(dāng)前可用自由指針指向的數(shù)據(jù)存儲(chǔ)區(qū);數(shù)據(jù)存儲(chǔ)區(qū)是所有輸出業(yè)務(wù)流共享的,采用雙端口靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(Static Random Access Memory,SRAM)實(shí)現(xiàn),被劃分為多個(gè)64字節(jié)的數(shù)據(jù)塊;自由指針隊(duì)列管理著SRAM中當(dāng)前可用數(shù)據(jù)緩沖區(qū)的指針;緩沖區(qū)管理器內(nèi)部可以以鏈表形式管理多個(gè)邏輯隊(duì)列,用于存儲(chǔ)不同類型的業(yè)務(wù);隊(duì)列調(diào)度器可以根據(jù)TSN網(wǎng)絡(luò)的配置,確定不同邏輯隊(duì)列的輸出調(diào)度方式,支持靈活的動(dòng)態(tài)配置;輸出接口狀態(tài)機(jī)可以根據(jù)輸出調(diào)度結(jié)果將數(shù)據(jù)幀從SRAM中讀出并發(fā)送到TSN網(wǎng)絡(luò)。緩沖區(qū)管理器和隊(duì)列調(diào)度器是本設(shè)計(jì)中的兩個(gè)核心電路[4],是進(jìn)行設(shè)計(jì)和分析的重點(diǎn)。
圖3 端系統(tǒng)中的隊(duì)列管理器整體結(jié)構(gòu)[5]
本設(shè)計(jì)的隊(duì)列管理器中的緩沖區(qū)管理器和隊(duì)列調(diào)度器的詳細(xì)結(jié)構(gòu)如圖4所示。其中緩沖區(qū)管理器包括指針寫入控制狀態(tài)機(jī)、隊(duì)列管理狀態(tài)機(jī)、指針讀出狀態(tài)機(jī)和存儲(chǔ)在鏈表存儲(chǔ)區(qū)中的指針隊(duì)列;隊(duì)列調(diào)度器包括針對(duì)16個(gè)流采用的基于信用的整形器(Credit Based Shaper,CBS)[1]、不同優(yōu)先級(jí)隊(duì)列之間采用的嚴(yán)格優(yōu)先級(jí)調(diào)度器和支持可配置門控列表的輸出門控電路[2],三者相互配合,實(shí)現(xiàn)端系統(tǒng)的輸出業(yè)務(wù)調(diào)度功能[6]。
圖4 緩沖區(qū)管理器和隊(duì)列調(diào)度器的詳細(xì)結(jié)構(gòu)
緩沖區(qū)管理器決定了輸入端口緩沖區(qū)的分配方式,主要功能是對(duì)輸入端口有限的數(shù)據(jù)緩沖區(qū)進(jìn)行合理分配和使用。由于端系統(tǒng)需要將多個(gè)端口輸入的業(yè)務(wù)匯聚到一個(gè)端口進(jìn)入TSN網(wǎng)絡(luò),不同類型的終端產(chǎn)生的數(shù)據(jù)業(yè)務(wù)具有各自的流量特征,可能在TSN網(wǎng)絡(luò)端口處發(fā)生擁塞,造成緩沖區(qū)溢出和數(shù)據(jù)丟棄。緩沖區(qū)管理器需要根據(jù)業(yè)務(wù)類別、各自的QoS需求、業(yè)務(wù)優(yōu)先級(jí)等,合理劃分和使用有限的緩沖資源,最大限度地保證時(shí)間敏感型業(yè)務(wù)的緩沖區(qū)需求,在一定范圍內(nèi)共享緩沖資源以提高緩沖資源利用率,并按照優(yōu)先級(jí)權(quán)重對(duì)共享進(jìn)行管理等[4]。
隊(duì)列調(diào)度器決定了輸出帶寬的分配方式,主要功能是根據(jù)TSN網(wǎng)絡(luò)規(guī)范和不同類型業(yè)務(wù)的QoS需求進(jìn)行業(yè)務(wù)輸出調(diào)度。它可以按照CNC給出的配置參數(shù),針對(duì)不同類型的業(yè)務(wù)采用不同的調(diào)度策略,合理分配輸出帶寬,對(duì)進(jìn)入TSN網(wǎng)絡(luò)的業(yè)務(wù)流進(jìn)行整形,使其既可以符合所配置的流量特征,也可以滿足業(yè)務(wù)本身的QoS需求[5]。
端系統(tǒng)作為時(shí)間敏感網(wǎng)絡(luò)的接入設(shè)備,從多個(gè)終端設(shè)備中接收數(shù)據(jù)幀,而內(nèi)部存儲(chǔ)資源有限,為了提高存儲(chǔ)區(qū)的利用率,也為了保障端系統(tǒng)正常運(yùn)行,采用了一種基于鏈表結(jié)構(gòu)的邏輯隊(duì)列共享緩存的緩沖區(qū)管理方法[3]。其原理是將內(nèi)部緩沖區(qū)劃分為64字節(jié)的存儲(chǔ)塊,每個(gè)存儲(chǔ)塊對(duì)應(yīng)一個(gè)指針,當(dāng)前可用的數(shù)據(jù)緩沖區(qū)對(duì)應(yīng)的指針被存儲(chǔ)在圖中的自由指針隊(duì)列中,自由指針中包含對(duì)應(yīng)存儲(chǔ)塊的地址。當(dāng)一個(gè)數(shù)據(jù)幀到達(dá)后,它先被分割成1個(gè)或多個(gè)長(zhǎng)度為64字節(jié)的定長(zhǎng)內(nèi)部信元(長(zhǎng)度不足時(shí)需要進(jìn)行數(shù)據(jù)填充)。輸入接口狀態(tài)機(jī)處理輸入信元時(shí),會(huì)首先從自由指針隊(duì)列讀出一個(gè)自由指針,其次將當(dāng)前信元寫入該指針指向的共享數(shù)據(jù)存儲(chǔ)空間中,最后該指針根據(jù)其對(duì)應(yīng)數(shù)據(jù)幀的類別被寫入到緩沖區(qū)管理器內(nèi)部相應(yīng)的邏輯隊(duì)列中。
緩沖區(qū)管理器可以同時(shí)管理多個(gè)邏輯隊(duì)列。每個(gè)邏輯隊(duì)列對(duì)應(yīng)著包括頭指針(head)、尾指針(tail)、信元深度(cell_depth)、數(shù)據(jù)幀數(shù)(frame_depth)、隊(duì)列非空標(biāo)志(depth_flag)在內(nèi)的一組寄存器。本設(shè)計(jì)中包括8個(gè)優(yōu)先級(jí)隊(duì)列和16個(gè)基于流的隊(duì)列,因此共包括24組寄存器。如圖5(a)所示,以隊(duì)列0為例,進(jìn)行寫入操作時(shí),當(dāng)前到達(dá)的指針(圖中值為100的指針)如果是一個(gè)隊(duì)列的第一個(gè)指針,則head0和tail0的取值同時(shí)為100,cell_depth0值變?yōu)?,由于該數(shù)據(jù)幀中包括多個(gè)信元,因此frame_depth0保持為0。此后,多個(gè)信元到達(dá),相應(yīng)的指針在指針存儲(chǔ)區(qū)中以鏈表方式進(jìn)行存儲(chǔ),假如當(dāng)前數(shù)據(jù)幀包括3個(gè)信元,那么當(dāng)前隊(duì)列指針鏈表的構(gòu)成如圖5(b)所示。此時(shí)frame_depth0的值由0變?yōu)?,depth_flag0由0變?yōu)?,表示當(dāng)前隊(duì)列中有完整的數(shù)據(jù)幀,可以被調(diào)度輸出。指針讀出控制狀態(tài)機(jī)持續(xù)監(jiān)視每個(gè)邏輯隊(duì)列的狀態(tài),如果發(fā)現(xiàn)某個(gè)邏輯隊(duì)列中有完整的數(shù)據(jù)幀,就會(huì)向隊(duì)列管理狀態(tài)機(jī)申請(qǐng)將該邏輯隊(duì)列隊(duì)首的指針讀出。隊(duì)列管理狀態(tài)機(jī)根據(jù)head0的值(100)及鏈表存儲(chǔ)結(jié)構(gòu)[3],可以依次讀出該隊(duì)列的多個(gè)指針,直至tail0所指向的存儲(chǔ)區(qū)。讀出的指針由讀出控制狀態(tài)機(jī)寫入與該邏輯隊(duì)列對(duì)應(yīng)的臨時(shí)指針緩沖區(qū)中。
圖5 鏈表存儲(chǔ)區(qū)結(jié)構(gòu)
臨時(shí)指針緩沖區(qū)由一個(gè)深度很小的先入先出存儲(chǔ)器(First In First Out,F(xiàn)IFO)構(gòu)成,本設(shè)計(jì)中針對(duì)16個(gè)流和8個(gè)優(yōu)先級(jí)隊(duì)列分別設(shè)置了一個(gè)臨時(shí)指針緩沖區(qū)(圖中stream0-stream15、class7-class0對(duì)應(yīng)的FIFO),用于存儲(chǔ)各邏輯隊(duì)列首部的指針。傳統(tǒng)的緩沖區(qū)隊(duì)列中通常不設(shè)置臨時(shí)指針緩沖區(qū),本設(shè)計(jì)是為了滿足TSN對(duì)輸出調(diào)度實(shí)時(shí)性的要求而增加的。圖5中鏈表隊(duì)列的寫入和讀出操作是互斥的,這使得隊(duì)列調(diào)度器從某個(gè)邏輯隊(duì)列中讀出指針的時(shí)延可能較大并存在抖動(dòng)。采用臨時(shí)指針緩沖區(qū)后,隊(duì)列調(diào)度器可以根據(jù)調(diào)度需要實(shí)時(shí)讀出所選擇隊(duì)列首部的指針,消除了隊(duì)列管理狀態(tài)機(jī)的指針讀出操作時(shí)延不確定性,保證了輸出數(shù)據(jù)幀的實(shí)時(shí)調(diào)度,可滿足端系統(tǒng)對(duì)時(shí)間敏感業(yè)務(wù)調(diào)度的時(shí)間精度要求。
本設(shè)計(jì)中的緩沖區(qū)管理器把緩沖區(qū)分塊,建立對(duì)應(yīng)數(shù)據(jù)塊指針,把指針以鏈表的形式存入存儲(chǔ)區(qū),并給各個(gè)隊(duì)列建立臨時(shí)指針緩沖區(qū),使得端系統(tǒng)的多個(gè)輸入端口可以共享緩沖區(qū),給時(shí)間敏感型業(yè)務(wù)預(yù)留一定存儲(chǔ)資源,提高端系統(tǒng)的抗壓性能,滿足時(shí)間敏感網(wǎng)絡(luò)的需求。
本設(shè)計(jì)中的隊(duì)列調(diào)度器調(diào)度數(shù)據(jù)時(shí),使用了嚴(yán)格優(yōu)先級(jí)調(diào)度算法和CBS調(diào)度兩種調(diào)度算法,調(diào)度算法配合門控實(shí)現(xiàn)了對(duì)時(shí)間敏感型業(yè)務(wù)的特殊調(diào)度,最終實(shí)現(xiàn)對(duì)時(shí)間敏感業(yè)務(wù)的帶寬保證和時(shí)延保證。隊(duì)列調(diào)度器中使用8個(gè)門來(lái)控制8個(gè)優(yōu)先級(jí)的緩沖隊(duì)列,隊(duì)列調(diào)度器通過(guò)門控列表控制門狀態(tài)和門操作的執(zhí)行時(shí)間,相鄰兩次門操作之間的時(shí)間間隔相等。門控列表和門操作間隔都可以由CNC配置,門狀態(tài)為open時(shí)代表允許該門對(duì)應(yīng)優(yōu)先級(jí)的緩沖隊(duì)列傳輸數(shù)據(jù),當(dāng)同一時(shí)刻有多個(gè)門狀態(tài)為open時(shí),不同優(yōu)先級(jí)之間的緩沖隊(duì)列按照嚴(yán)格優(yōu)先級(jí)算法進(jìn)行傳輸。按照需要制定門控列表并執(zhí)行門操作,可以給時(shí)間敏感業(yè)務(wù)提供保證帶寬和確定性時(shí)延的服務(wù)。如圖4所示,T1時(shí)刻門狀態(tài)為OCCCCCCC,表示門7為open,其他門均為closed,即在T1到T2時(shí)間段內(nèi),僅允許優(yōu)先級(jí)為7的數(shù)據(jù)幀傳輸,這段時(shí)間的端口帶寬被全部用來(lái)傳輸優(yōu)先級(jí)為7的數(shù)據(jù)幀,控制每個(gè)時(shí)間片內(nèi)門7開啟的時(shí)間段,可以精確控制優(yōu)先級(jí)為7的業(yè)務(wù)流占用的總帶寬;控制相鄰門7兩次開啟的時(shí)間間隔,可以精確控制時(shí)間敏感業(yè)務(wù)的流量分布。這種通過(guò)配置門控列表確定時(shí)間敏感業(yè)務(wù)流量分布特征的方式可以精確控制時(shí)間敏感業(yè)務(wù)在每個(gè)節(jié)點(diǎn)的時(shí)延,從而可以精確控制時(shí)間敏感業(yè)務(wù)的端到端時(shí)延。
不同優(yōu)先級(jí)的緩沖隊(duì)列使用嚴(yán)格優(yōu)先級(jí)算法選出傳輸?shù)臄?shù)據(jù)幀,相同優(yōu)先級(jí)的緩沖隊(duì)列使用CBS調(diào)度算法選擇數(shù)據(jù)幀。如圖4所示,門7后共有17條優(yōu)先級(jí)為7的緩沖隊(duì)列,包括class7和 stream0~ stream15,端系統(tǒng)會(huì)根據(jù)stream0~ stream15的業(yè)務(wù)需求和流量特征給每條流配置不同的信用參數(shù)。門7開啟時(shí),隊(duì)列調(diào)度器使用CBS調(diào)度算法從stream0~stream15中選出數(shù)據(jù)幀進(jìn)行傳輸,若stream0~stream15中沒(méi)有符合發(fā)送條件的,則發(fā)送class7中的數(shù)據(jù)幀。
CBS調(diào)度算法主要根據(jù)隊(duì)列信用進(jìn)行調(diào)度,隊(duì)列信用相關(guān)參數(shù)則是在端系統(tǒng)初始化時(shí)由CNC配置的,包括最大信用值hicredit、最小信用值locredit、信用值增加速率idlesope和信用值減小速率sendslope。門7的狀態(tài)為open且stream0-stream15中有等待傳輸?shù)臄?shù)據(jù)幀時(shí),該緩沖隊(duì)列的信用以idlesope的速率開始增長(zhǎng)。門狀態(tài)為open時(shí)隊(duì)列信用值開始累加,門狀態(tài)從open轉(zhuǎn)為closed時(shí)隊(duì)列信用值清零且保持不變,直到下一個(gè)open狀態(tài)。數(shù)據(jù)幀在門狀態(tài)為open且該隊(duì)列信用值為非負(fù)數(shù)的時(shí)候可以開始傳輸,數(shù)據(jù)幀傳輸時(shí)隊(duì)列信用值以sendslope的速率減小,當(dāng)前數(shù)據(jù)幀傳輸完成后若隊(duì)列中還有數(shù)據(jù)幀等待傳輸且信用值為非負(fù)數(shù),則開始傳輸下一個(gè)數(shù)據(jù)幀。如圖6所示,0到t1時(shí)間段內(nèi),該隊(duì)列沒(méi)有數(shù)據(jù)幀等待,隊(duì)列信用值保持為0;t1時(shí)刻,數(shù)據(jù)幀A進(jìn)入隊(duì)列,此時(shí)端口為空閑狀態(tài)可以發(fā)送數(shù)據(jù)幀,開始發(fā)送數(shù)據(jù)幀A;t1到t2時(shí)間段內(nèi),數(shù)據(jù)幀A通過(guò)端口發(fā)送出去,該隊(duì)列的信用值以sendslope速率下降;t2時(shí)刻,數(shù)據(jù)幀A發(fā)送完畢;t2到t3時(shí)間段內(nèi),該隊(duì)列信用值以idlesope速率上升;t3時(shí)刻,該隊(duì)列信用值上升到0,但此時(shí)隊(duì)列中沒(méi)有等待發(fā)送的數(shù)據(jù)幀,隊(duì)列信用值保持為0。
圖6 發(fā)送數(shù)據(jù)幀時(shí)隊(duì)列信用的變化
隊(duì)列信用相關(guān)參數(shù)與隊(duì)列占用帶寬之間存在對(duì)應(yīng)關(guān)系,假設(shè)門打開時(shí)某隊(duì)列中有數(shù)據(jù)幀,且每次該隊(duì)列傳輸數(shù)據(jù)幀信用值都剛好降低到locredit,門打開時(shí),傳輸數(shù)據(jù)幀的時(shí)間和門打開時(shí)間之前的比值為:
根據(jù)式(1)可知,在門打開時(shí),該隊(duì)列占用輸出端口傳輸數(shù)據(jù)的時(shí)間和門打開的總時(shí)間之間的關(guān)系為該隊(duì)列信用增加速率和信用減小速率的代數(shù)關(guān)系,說(shuō)明通過(guò)CNC配置隊(duì)列信用相關(guān)參數(shù)可以精確控制該隊(duì)列在門打開時(shí)占用輸出端口傳輸數(shù)據(jù)的時(shí)間,CBS調(diào)度算法配合門控列表可以精確控制該隊(duì)列占用的總帶寬。門控機(jī)制結(jié)合嚴(yán)格優(yōu)先級(jí)和CBS算法可以實(shí)現(xiàn)對(duì)時(shí)間敏感業(yè)務(wù)的帶寬保證和時(shí)延 保證。
本文設(shè)計(jì)的隊(duì)列管理器基于Xilinx Zynq7020 FPGA實(shí)現(xiàn),圖7、圖8、圖9是典型仿真波形。圖7中,PHYA_rgmii接口包括信號(hào)PHYA_rgmii_rxc、PHYA_rgmii_rx_ctl和PHYA_rgmii_rxd,連續(xù)輸入長(zhǎng)度為1 000字節(jié)的以太網(wǎng)數(shù)據(jù)幀(PHYA_rgmii_rx_ctl為1表示當(dāng)前正在輸入1個(gè)數(shù)據(jù)幀),該業(yè)務(wù)流在電路內(nèi)部采用CBS算法進(jìn)行流量整形。可以看出,大量輸入的數(shù)據(jù)幀被丟棄,只有在該隊(duì)列的信用值符合輸出調(diào)度要求時(shí),才會(huì)將當(dāng)前隊(duì)列首部的數(shù)據(jù)幀輸出,此時(shí),PHYA_rgmii_tx接口按照一定間隔輸出經(jīng)過(guò)流量整形的數(shù)據(jù)幀,說(shuō)明CBS調(diào)度器可以基于信用配置進(jìn)行數(shù)據(jù)幀的輸出調(diào)度。
圖7 CBS算法仿真結(jié)果
圖8中,通過(guò)用戶端口A和用戶端口B分別連續(xù)輸入長(zhǎng)度為1 000字節(jié)和500字節(jié)的數(shù)據(jù)幀,二者輸入帶寬之和大于輸出端口的帶寬。此時(shí)在輸出端口上觀察PHYA_rgmii_tx_ctl可以看出,端口A輸入的長(zhǎng)度為1 000字節(jié)的數(shù)據(jù)幀數(shù)量明顯多于端口B輸入的長(zhǎng)度為500字節(jié)的數(shù)據(jù)幀,說(shuō)明隊(duì)列調(diào)度器可以按照優(yōu)先級(jí)進(jìn)行數(shù)據(jù)幀的輸出調(diào)度。
圖8 嚴(yán)格優(yōu)先級(jí)算法仿真結(jié)果
圖9中,輸入端口A輸入的數(shù)據(jù)幀按照信用進(jìn)行調(diào)度輸出,端口B輸入的數(shù)據(jù)幀按照優(yōu)先級(jí)進(jìn)行調(diào)度。如圖9所示,長(zhǎng)度為1 000字節(jié)的數(shù)據(jù)幀根據(jù)信用累計(jì)情況近似等間隔輸出,長(zhǎng)度為500字節(jié)的數(shù)據(jù)幀占據(jù)了剩余的帶寬。
圖9 CBS算法和嚴(yán)格優(yōu)先級(jí)聯(lián)合仿真結(jié)果
綜上仿真分析可見(jiàn),本文實(shí)現(xiàn)的隊(duì)列管理器可以滿足TSN對(duì)端系統(tǒng)關(guān)于業(yè)務(wù)緩沖和調(diào)度功能的需求。
本文設(shè)計(jì)了一種應(yīng)用于TSN端系統(tǒng)的隊(duì)列管理器,說(shuō)明了隊(duì)列管理器的工作流程,分析了采用邏輯鏈表實(shí)現(xiàn)的緩沖區(qū)管理器的工作機(jī)制,分析了支持CBS算法、嚴(yán)格優(yōu)先級(jí)調(diào)度和門控列表的隊(duì)列調(diào)度器的工作機(jī)制和關(guān)鍵工作參數(shù)。仿真分析表明,所實(shí)現(xiàn)的隊(duì)列管理器可以滿足TSN端系統(tǒng)對(duì)用戶業(yè)務(wù)進(jìn)行緩沖和分類調(diào)度的需求。