羅 莉,周宏偉,周 理,潘國(guó)騰,周海亮,劉 彬
(1.國(guó)防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073;2.武警貴州省總隊(duì),貴州 貴陽(yáng) 550081)
隨著大數(shù)據(jù)計(jì)算、數(shù)據(jù)中心和集成電路技術(shù)的飛速發(fā)展,多核處理器支持直連接口實(shí)現(xiàn)共享主存的對(duì)稱(chēng)多處理器SMP(Symmetric MultiProcessing)系統(tǒng)已經(jīng)成為主流。直連接口負(fù)責(zé)實(shí)現(xiàn)處理器芯片間的直連,也可用于實(shí)現(xiàn)備份和冗余,提高系統(tǒng)容錯(cuò)能力和性能。處理器之間直連接口設(shè)計(jì)不僅需要滿(mǎn)足低延遲、高帶寬,還必須滿(mǎn)足高可靠的服務(wù)質(zhì)量QoS(Quality of Service)保障。處理器直連接口提供的QoS保障,能夠?qū)崿F(xiàn)可靠、實(shí)時(shí)、完整和順序到達(dá)的數(shù)據(jù)傳輸。
本文提出了一種面向多核處理器的直連接口的QoS設(shè)計(jì)方案,接口采用信用機(jī)制設(shè)計(jì)避免了擁塞,利用虛通道技術(shù)、優(yōu)先級(jí)的仲裁調(diào)度策略避免了死鎖、擁塞的傳輸問(wèn)題,同時(shí),滑動(dòng)窗口重傳協(xié)議維護(hù)了數(shù)據(jù)傳輸?shù)捻樞蛐院驼_性。模擬結(jié)果顯示,QoS設(shè)計(jì)的正確性,為多個(gè)處理器的直接互連提供了穩(wěn)定的魯棒性,移植到FPGA原型驗(yàn)證平臺(tái),順利通過(guò)了測(cè)試。目前,該芯片已成功流片。
處理器直連接口能夠?qū)崿F(xiàn)處理器之間直接互連,國(guó)內(nèi)外市場(chǎng)上大多數(shù)高端服務(wù)器產(chǎn)品都支持多個(gè)處理器以直接互連的方式構(gòu)建多路服務(wù)器系統(tǒng)。
Intel公司[1]推出了一種高速、點(diǎn)到點(diǎn)的處理器間互連總線(xiàn)QPI(Quick Path Interconnect),集成于Intel的服務(wù)器處理器中。Intel Xeon E5系列和E7系列分別集成了2個(gè)和3個(gè)QPI總線(xiàn)接口,可實(shí)現(xiàn)多路處理器的直連。IBM公司[2]的p系列服務(wù)器采用IBM Power5+高性能處理器,通過(guò)處理器直連通道互連,最大支持32路處理器。AMD[3]的超傳輸HT(HyperTransport)總線(xiàn),實(shí)現(xiàn)了一種高速、雙向、低延時(shí)、點(diǎn)對(duì)點(diǎn)的直連接口。NVIDIA的NVLink支持連接多個(gè)GPU。IBM公司[4]的Power9處理器通過(guò)NVLink可以直接與NVIDIA GPU互連,實(shí)現(xiàn)高性能計(jì)算(HPC)系統(tǒng)。
上述直連接口技術(shù)并不是通用協(xié)議,相關(guān)技術(shù)不開(kāi)放,不能作為國(guó)產(chǎn)處理器的直連接口技術(shù)。為此,自主設(shè)計(jì)并實(shí)現(xiàn)芯片直連接口是不可避免的選擇,王錦涵等[5]將PCI-E的總線(xiàn)技術(shù)運(yùn)用在國(guó)產(chǎn)處理器的片間直連中,可以實(shí)現(xiàn)自主可控的芯片直連接口,達(dá)到處理器直連的目的。周宏偉等[6]提出了一種面向多核微處理器的互連接口的設(shè)計(jì)方案,基于精簡(jiǎn)的PCI-E 總線(xiàn)協(xié)議,采用高速串行數(shù)據(jù)傳輸技術(shù),支持Cache一致性報(bào)文和大塊數(shù)據(jù)傳輸報(bào)文,能夠用于實(shí)現(xiàn)4 路處理器的直接互連。王云霏等[7]針對(duì)國(guó)產(chǎn)服務(wù)器的處理器間互連的直連接口,為了降低片間通信帶寬需求,設(shè)計(jì)了一種基于Token 協(xié)議和目錄協(xié)議的混合一致性協(xié)議,目的是在帶寬資源受限系統(tǒng)中具有更好的系統(tǒng)性能。
本文旨在研究面向多核高性能微處理器的直連接口QoS設(shè)計(jì),能夠?qū)崿F(xiàn)處理器直連通信可靠、實(shí)時(shí)、完整和順序到達(dá)的數(shù)據(jù)傳輸。
對(duì)稱(chēng)多處理器系統(tǒng)SMP中所有處理器共享一個(gè)統(tǒng)一的地址空間,具有相同的地址空間視圖。系統(tǒng)的分布式內(nèi)存和I/O資源為所有的處理器共享,易于構(gòu)建單一映像的操作系統(tǒng),并為上層應(yīng)用提供統(tǒng)一、高效的編程接口。
通過(guò)高速處理器互連接口,多個(gè)處理器可以方便地實(shí)現(xiàn)SMP系統(tǒng)。為了達(dá)到更高的帶寬,避免對(duì)共享資源的競(jìng)爭(zhēng),目前主流多處理器之間的連接鏈路普遍采用點(diǎn)到點(diǎn)的直連鏈路。如圖1所示,直接互連的處理器的數(shù)目最常見(jiàn)的是2~4個(gè)。
Figure 1 SMP system interconnected by direct connection interface圖1 通過(guò)直連接口互連的SMP系統(tǒng)
設(shè)計(jì)多個(gè)直連接口支持多個(gè)處理器芯片直連,也可用于實(shí)現(xiàn)備份和冗余,以提高系統(tǒng)容錯(cuò)能力和性能。3個(gè)直連接口最多支持 4路處理器直連的拓?fù)浣Y(jié)構(gòu);2個(gè)處理器可以相互連接構(gòu)成2路直連的多處理器系統(tǒng),連接時(shí)可以使用1個(gè)直連接口,如圖1a所示的2路SMP系統(tǒng),也可以把3個(gè)直連接口都連接上,以提高傳輸帶寬和容錯(cuò)能力;4個(gè)處理器則可以相互連接構(gòu)成 4 路多處理器系統(tǒng),如圖1b所示,當(dāng)部分處理器發(fā)生故障時(shí),可以降級(jí)為 3 路或2 路多處理器系統(tǒng)。
在SMP互連體系結(jié)構(gòu)中,處理器互連接口一般分為多個(gè)層次,但與傳統(tǒng)的Internet 中使用的OSI 7 層協(xié)議[8]不同。傳統(tǒng)的OSI 7 層協(xié)議由于協(xié)議層次多,各層協(xié)議功能重復(fù)、復(fù)雜,處理器間的互連通常采用功能精簡(jiǎn)、結(jié)構(gòu)合理的互連網(wǎng)絡(luò)協(xié)議,其協(xié)議主要包含了傳輸層、數(shù)據(jù)鏈路層和物理層。本文的研究目標(biāo)是面向多核處理器的直連接口,協(xié)議層次如圖2所示,包含應(yīng)用層(Application Layer)、傳輸層(Transport Layer)、數(shù)據(jù)鏈路層(Link Layer)和物理層(Physical Layer)。
Figure 2 Hierarchy of direct connection interface圖2 直連部件的層次結(jié)構(gòu)
應(yīng)用層在本文的處理器芯片中是片上網(wǎng)絡(luò)NoC(Network on Chip)接口,負(fù)責(zé)向直連部件發(fā)送NoC待傳輸?shù)膱?bào)文,報(bào)文類(lèi)型劃分為請(qǐng)求(REQ)、響應(yīng)(RSP)、監(jiān)聽(tīng)(SNP)和應(yīng)答(ACK)4類(lèi),并接收直連部件輸出的報(bào)文。
傳輸層接收應(yīng)用層的報(bào)文(Message),按照鏈路層需要的格式,將其轉(zhuǎn)換成鏈路層需要的數(shù)據(jù)序列(Data Sequence),并根據(jù)接收方和數(shù)據(jù)鏈路層的狀態(tài),將轉(zhuǎn)換好的數(shù)據(jù)序列發(fā)送給數(shù)據(jù)鏈路層。同時(shí)傳輸層接收數(shù)據(jù)鏈路層的數(shù)據(jù)序列,并將其轉(zhuǎn)換成應(yīng)用層需要的報(bào)文格式,緩沖后發(fā)送給應(yīng)用層。傳輸層結(jié)構(gòu)主要包括報(bào)文緩沖(Message Buffer)、四選一仲裁(Arbitration)、數(shù)據(jù)序列格式轉(zhuǎn)換(Data Sequence Format Convert)和信用控制(Credit Control)。
鏈路層接收傳輸層的數(shù)據(jù)序列,將其轉(zhuǎn)換成適合鏈路傳輸?shù)奈?Packet)格式,并根據(jù)鏈路管理(Link Management)狀態(tài),將微包發(fā)送到物理層。鏈路層同時(shí)接收物理層的微包,并將其轉(zhuǎn)換成傳輸層需要的數(shù)據(jù)序列。鏈路層還具有微包的CRC校驗(yàn)和出錯(cuò)重傳等功能。鏈路層結(jié)構(gòu)主要包括微包打包(Packing Packet)、微包解包(Unpacking Packet)、微包管理(Packet Management)、鏈路管理(Link Management)、重傳緩沖(Retry Buffer)和二選一開(kāi)關(guān)(MUX)。
物理層將微包轉(zhuǎn)換成串行的碼流,通過(guò)SERDES(串行/解串)發(fā)送和接收。SERDES技術(shù)因其傳輸速率高、抗干擾能力強(qiáng)等優(yōu)點(diǎn)已成為主流的高速接口物理層規(guī)范。
通過(guò)高速處理器互連接口實(shí)現(xiàn)SMP系統(tǒng),用于未來(lái)的高性能計(jì)算機(jī)和數(shù)據(jù)中心,直連接口必須提供處理器之間低延遲、高帶寬和高可靠的QoS保障。
所謂服務(wù)質(zhì)量(QoS)是指網(wǎng)絡(luò)在傳輸數(shù)據(jù)流時(shí)要滿(mǎn)足的一系列服務(wù)請(qǐng)求,如Internet僅提供盡力而為(Best Effort Service)的傳輸服務(wù),盡力發(fā)送的機(jī)制對(duì)報(bào)文傳輸時(shí)的可靠性、實(shí)時(shí)性、完整性、到達(dá)的順序性,以及傳輸?shù)臅r(shí)延無(wú)法提供任何保證。盡力而為不能達(dá)到直連接口的QoS要求,處理器之間建立的直連傳輸鏈路,不僅需要提高數(shù)據(jù)的吞吐率,還必須提供保障服務(wù),避免死鎖和擁塞,保障數(shù)據(jù)的完整性和到達(dá)的順序性。
為解決互連傳輸擁塞,本文采用了基于信用的流控機(jī)制。相比傳統(tǒng)的空、滿(mǎn)溢出流控方式,采用基于信用的流控能精確判斷流量,同時(shí)利于后端實(shí)現(xiàn)。
處理器互連接口的輸出都是點(diǎn)到點(diǎn)傳輸,分時(shí)共享鏈路傳輸?shù)莫?dú)占資源。為了避免事務(wù)之間相互依賴(lài)而導(dǎo)致的死鎖,本文設(shè)計(jì)了基于事務(wù)類(lèi)型的4個(gè)虛通道、固定優(yōu)先級(jí)的仲裁調(diào)度,同時(shí)采用等待時(shí)間控制“饑餓”狀態(tài),有效提供了QoS保障。
鏈路層通信的QoS要求傳輸具有可靠性和完整性,本文利用滑動(dòng)窗口重傳協(xié)議實(shí)現(xiàn)無(wú)差錯(cuò)的鏈路層通信;利用CRC校驗(yàn)技術(shù)檢測(cè)錯(cuò)誤,自動(dòng)地對(duì)丟失的微包、錯(cuò)誤微包請(qǐng)求重發(fā)。
解決網(wǎng)絡(luò)擁塞的辦法通常是采用流量許可控制,當(dāng)接收一個(gè)新的數(shù)據(jù)流時(shí)許可承諾是有效的,如果一個(gè)新的數(shù)據(jù)流所請(qǐng)求的網(wǎng)絡(luò)資源超出可用網(wǎng)絡(luò)資源,許可承諾會(huì)被置為無(wú)效。
為確保直連部件協(xié)議層次間發(fā)送/接收?qǐng)?bào)文的順利進(jìn)行,需要確保發(fā)送方在發(fā)送報(bào)文時(shí)接收方有足夠的空間接收?qǐng)?bào)文,發(fā)送方和接收方必須有一個(gè)有效的流控機(jī)制,以協(xié)調(diào)報(bào)文的發(fā)送和接收。
本文在協(xié)議層次輸入端口和輸出端口上均設(shè)計(jì)了報(bào)文緩沖區(qū),為保證緩沖區(qū)不發(fā)生上溢和下溢,必須對(duì)進(jìn)入緩沖區(qū)的報(bào)文進(jìn)行流控。 傳統(tǒng)的緩沖區(qū)流控策略是使用緩沖區(qū)的空信號(hào)和滿(mǎn)信號(hào)來(lái)判斷緩沖區(qū)是否發(fā)生上溢和下溢,本文采用基于信用的流控,精確控制流量,較好地避免了擁塞。
圖3所示是直連部件支持的通用接口信用機(jī)制。圖3中Sender是發(fā)送方,Receiver是接收方,在數(shù)據(jù)的源端維護(hù)一個(gè)信用計(jì)數(shù)器,初始值設(shè)置為緩沖區(qū)深度,當(dāng)數(shù)據(jù)源發(fā)出一個(gè)微報(bào)信號(hào)Send,信用減1;當(dāng)緩沖區(qū)中消耗 1 個(gè)微包時(shí),釋放 1 個(gè)信用,當(dāng)信用釋放信號(hào)Release到達(dá)數(shù)據(jù)源端時(shí),信用計(jì)數(shù)器加 1。Sender在發(fā)送報(bào)文時(shí),每個(gè)時(shí)鐘周期都可以將Packet傳輸給接收方,接收方有一個(gè)輸入緩沖區(qū),這個(gè)緩沖區(qū)能夠緩沖N個(gè)Packet,只要接收緩沖區(qū)有足夠的空間,發(fā)送方就直接發(fā)送新的Packet給接收方,發(fā)送方通過(guò)一個(gè)信用計(jì)數(shù)器(Credit Counter)來(lái)確認(rèn)是否可以發(fā)送Packet給接收方。
Figure 3 Universal credit mechanism for direct connection interface圖3 直連部件的通用接口信用機(jī)制
初始時(shí),信用計(jì)數(shù)器的值等于接收方緩沖器的深度,發(fā)送方在發(fā)送Packet前必須檢查信用計(jì)數(shù)器的值,只要信用計(jì)數(shù)器的值大于0,發(fā)送方就可以發(fā)送Packet,每發(fā)送一個(gè)Packet,發(fā)送方就將信用計(jì)數(shù)器的值減1。接收方會(huì)將收到的Packet緩存在接收緩沖區(qū)中,同時(shí)接收方的內(nèi)部處理邏輯也會(huì)不斷消耗處理緩沖區(qū)中的數(shù)據(jù),接收方每消耗掉緩沖區(qū)的一個(gè)Packet,就會(huì)通過(guò)Release信號(hào)向發(fā)送方發(fā)送一個(gè)脈沖信號(hào),發(fā)送方收到Release脈沖,就將信用計(jì)數(shù)器的值加1。
這種信用機(jī)制應(yīng)用于直連部件的每個(gè)層次接口,如應(yīng)用層與傳輸層接口、傳輸層與數(shù)據(jù)鏈路層接口、數(shù)據(jù)鏈路層與物理層的接口。
相比傳統(tǒng)的緩沖區(qū)空滿(mǎn)的流控策略,信用流控可以不必考慮數(shù)據(jù)源端和緩沖區(qū)端之間的距離,二者之間可以任意增加中繼,非常有利于芯片物理實(shí)現(xiàn)的后端設(shè)計(jì)。
傳輸層將接收的應(yīng)用層報(bào)文,按照鏈路層需要的格式,轉(zhuǎn)換成鏈路層需要的數(shù)據(jù)序列,并根據(jù)接收方和數(shù)據(jù)鏈路層的狀態(tài),將轉(zhuǎn)換后的數(shù)據(jù)序列發(fā)送給數(shù)據(jù)鏈路層。傳輸層還接收數(shù)據(jù)鏈路層的數(shù)據(jù)序列,并將其轉(zhuǎn)換成應(yīng)用層需要的報(bào)文格式,緩沖后發(fā)送給應(yīng)用層。
應(yīng)用層的報(bào)文與片上網(wǎng)絡(luò)的報(bào)文格式一致。多核處理器Cache一致性協(xié)議和片上互連結(jié)構(gòu)采用了緊耦合設(shè)計(jì),片上互連網(wǎng)絡(luò)連接了主存、Cache、核和I/O設(shè)備等,Cache一致性消息通過(guò)片上網(wǎng)絡(luò)報(bào)文進(jìn)行傳輸,片上網(wǎng)絡(luò)的報(bào)文可劃分為請(qǐng)求、監(jiān)聽(tīng)請(qǐng)求、監(jiān)聽(tīng)?wèi)?yīng)答和讀寫(xiě)響應(yīng)4種類(lèi)型。
進(jìn)入鏈路層的各類(lèi)事務(wù)必須分時(shí)共享鏈路傳輸?shù)莫?dú)占資源,因此不可避免地會(huì)將各類(lèi)事務(wù)統(tǒng)一排隊(duì)處理。為了避免死鎖,傳輸層與應(yīng)用層之間采用虛通道方式,虛通道是一種避免網(wǎng)絡(luò)死鎖的常用技術(shù)。
傳輸層與應(yīng)用層的傳輸數(shù)據(jù)根據(jù)傳輸?shù)膱?bào)文類(lèi)型,定義4個(gè)虛通道:請(qǐng)求(REQ)通道、響應(yīng)(RSP)通道、監(jiān)聽(tīng)(SNP)通道和應(yīng)答(ACK)通道。虛通道設(shè)計(jì)避免了不同類(lèi)型的事務(wù)混合在一起互相等待,若一個(gè)虛通道被阻塞,則其他的虛通道還能繼續(xù)通向輸出端口,最大限度地減少了由于事務(wù)之間相互依賴(lài)而導(dǎo)致的死鎖。
分時(shí)共享鏈路傳輸?shù)莫?dú)占資源,為了避免因?yàn)槭聞?wù)之間相互依賴(lài)而導(dǎo)致的死鎖,本文設(shè)計(jì)了固定優(yōu)先級(jí)的仲裁調(diào)度,根據(jù)優(yōu)先級(jí)選擇調(diào)度哪一個(gè)虛通道占用鏈路層傳輸。一個(gè)Cache事務(wù)的生命周期通常是{請(qǐng)求,響應(yīng)}、{請(qǐng)求,監(jiān)聽(tīng)請(qǐng)求,監(jiān)聽(tīng)響應(yīng),響應(yīng)}、{請(qǐng)求,監(jiān)聽(tīng)請(qǐng)求,監(jiān)聽(tīng)請(qǐng)求,…,監(jiān)聽(tīng)請(qǐng)求,監(jiān)聽(tīng)響應(yīng),…,監(jiān)聽(tīng)響應(yīng),響應(yīng)}的事務(wù)序列,優(yōu)先級(jí)最高的是響應(yīng)通道,其次是監(jiān)聽(tīng)響應(yīng)、監(jiān)聽(tīng)請(qǐng)求和請(qǐng)求通道?;趦?yōu)先級(jí)調(diào)度的仲裁方式保障了響應(yīng)事務(wù)、監(jiān)聽(tīng)響應(yīng)事務(wù)及時(shí)得到處理。
當(dāng)出現(xiàn)連續(xù)不斷的、穩(wěn)定的監(jiān)聽(tīng)響應(yīng)、響應(yīng)傳輸時(shí),可能會(huì)導(dǎo)致監(jiān)聽(tīng)請(qǐng)求或者請(qǐng)求通道得不到仲裁調(diào)度,從而出現(xiàn) “饑餓”現(xiàn)象。傳輸層的仲裁選擇調(diào)度采用固定優(yōu)先級(jí)設(shè)置,通道的“饑餓”現(xiàn)象同樣存在,為了避免這種情況,監(jiān)聽(tīng)通道請(qǐng)求和請(qǐng)求通道都設(shè)置等待計(jì)時(shí)器,若監(jiān)聽(tīng)請(qǐng)求通道或者請(qǐng)求通道的報(bào)文等待時(shí)間大于門(mén)限設(shè)置時(shí)間,優(yōu)先級(jí)調(diào)整為最高,仲裁調(diào)度器會(huì)選中該通道報(bào)文輸入鏈路層。
傳輸層采用虛通道技術(shù)、基于優(yōu)先級(jí)的仲裁調(diào)度策略避免了死鎖,同時(shí)利用等待時(shí)間控制饑餓狀態(tài),有效提供了QoS的保障。
鏈路層將接收的傳輸層數(shù)據(jù)序列轉(zhuǎn)換成適合鏈路傳輸?shù)奈?Packet)格式,并根據(jù)鏈路管理(Link Management)狀態(tài),將微包發(fā)送到物理層。同時(shí)將接收的物理層微包轉(zhuǎn)換格式后輸入到傳輸層。
鏈路層傳輸?shù)男畔挝皇俏?,是芯片間鏈路傳輸層的信息傳輸、校驗(yàn)、重傳、流控的最小單位,微包的類(lèi)型分為報(bào)文微包和管理微包,管理微包有鏈路初始化微包、鏈路初始化響應(yīng)微包和空微包??瘴擎溌房臻e時(shí)發(fā)出的微包,攜帶了滑窗的序列號(hào)。鏈路層通信的QoS要求每個(gè)微包傳輸具有可靠性和完整性,本文利用滑動(dòng)窗口重傳協(xié)議實(shí)現(xiàn)無(wú)差錯(cuò)的鏈路層通信;采用CRC校驗(yàn)技術(shù)檢測(cè)錯(cuò)誤,自動(dòng)地對(duì)錯(cuò)誤微包請(qǐng)求重發(fā)。
鏈路層通信遇到數(shù)據(jù)傳輸或者接收錯(cuò)誤時(shí),需要進(jìn)行重傳,重傳協(xié)議為滑動(dòng)窗口重傳協(xié)議(Sliding Window Retry Protocol),滑動(dòng)窗口機(jī)制在重傳協(xié)議中維護(hù)了發(fā)送和接收2個(gè)窗口。發(fā)送窗口實(shí)際上是維護(hù)重傳緩沖區(qū)的讀寫(xiě)控制和發(fā)送方序列號(hào),而接收窗口實(shí)際上是維護(hù)接收方的序列號(hào)。
Figure 4 Calibration mechanism of frequency skew圖4 頻率偏斜校準(zhǔn)機(jī)制
接收窗口的大小設(shè)計(jì)為1,可以順序接收發(fā)送方發(fā)出的報(bào)文,任何序列號(hào)不等于接收窗口所對(duì)應(yīng)序列號(hào)的報(bào)文都會(huì)被丟棄。接收窗口保障了接收?qǐng)?bào)文的順序正確性和無(wú)重復(fù)的報(bào)文序列。
CRC循環(huán)冗余校驗(yàn)碼簡(jiǎn)稱(chēng)循環(huán)冗余碼,是一種檢錯(cuò)概率高且易于硬件實(shí)現(xiàn)的檢錯(cuò)碼。為了保證報(bào)文傳輸過(guò)程的正確性,發(fā)送方在將要發(fā)送的微包上附加一個(gè)CRC校驗(yàn)碼,接收方則根據(jù)CRC校錯(cuò)碼對(duì)微包進(jìn)行差錯(cuò)檢測(cè),若發(fā)現(xiàn)錯(cuò)誤,就返回請(qǐng)求重發(fā)的應(yīng)答,發(fā)送方收到請(qǐng)求重發(fā)的應(yīng)答后,便重新傳輸該微包。本文使用滑動(dòng)窗口機(jī)制,高效地實(shí)現(xiàn)了重傳協(xié)議中的重傳緩沖區(qū)和收發(fā)序列號(hào)管理。
數(shù)據(jù)鏈路層實(shí)現(xiàn)的滑動(dòng)窗口重傳協(xié)議解決了數(shù)據(jù)傳輸?shù)某鲥e(cuò)、丟失、亂序和重復(fù)問(wèn)題,CRC校驗(yàn)檢查傳輸數(shù)據(jù)的正確性,如果出錯(cuò)自動(dòng)發(fā)起重傳,保障了鏈路層每個(gè)微包傳輸?shù)目煽啃院屯暾浴?/p>
物理層包括物理編碼子層PCS(Physical Coding Sublayer)和物理媒介適配層PMA(Physical Media Attachment)。其中PCS為數(shù)字電路,PMA也可以被稱(chēng)為串并轉(zhuǎn)換電路(SERDES)。PCS基于64 B/66 B編碼技術(shù)、擾碼傳輸技術(shù)和頻率偏斜校準(zhǔn)機(jī)制,物理層傳輸速度可以達(dá)到 25 Gbps。
圖4所示是PCS子層頻率偏斜校準(zhǔn)機(jī)制,是頻率補(bǔ)償與延遲修正合二為一的校準(zhǔn)機(jī)制。PCS子層的每個(gè)通道(Lane)有一套獨(dú)立的數(shù)據(jù)棧(Stack)。數(shù)據(jù)棧具有彈性緩沖的功能,用于調(diào)節(jié)每個(gè)Lane從PMA層恢復(fù)出來(lái)的時(shí)鐘(pma_rcvr_clk_in_lane[i])和PCS子層的時(shí)鐘clk_ref之間的時(shí)鐘頻率偏差;數(shù)據(jù)棧也可作為糾正Lane與Lane之間傳輸延遲偏斜的緩沖器使用。將彈性緩沖和延遲糾正緩沖合二為一,能夠降低PCS層的物理資源需求,減小物理層的面積。
直連接口的設(shè)計(jì)包括應(yīng)用層、傳輸層、數(shù)據(jù)鏈路層和物理層的PCS子層,本文利用S2C公司的VU440開(kāi)發(fā)板,實(shí)現(xiàn)了FPGA原型驗(yàn)證平臺(tái),限于篇幅,在此不做詳述。
針對(duì)本文研發(fā)的面向多核處理器的直連接口,功能驗(yàn)證平臺(tái)開(kāi)發(fā)了測(cè)試單部件回環(huán)、雙部件互連的軟模擬驗(yàn)證環(huán)境,通過(guò)功能點(diǎn)測(cè)試,保障了QoS設(shè)計(jì)的正確性。功能驗(yàn)證平臺(tái)是基于UVM(Universal Verification Methodology)[9]方法學(xué)實(shí)現(xiàn)的驗(yàn)證平臺(tái),UVM是一個(gè)通用的驗(yàn)證方法學(xué),UVM的一個(gè)關(guān)鍵特性就是開(kāi)發(fā)了一系列可重用的驗(yàn)證組件UVC(UVM Verification Components)。UVM以systemVerilog語(yǔ)言為基礎(chǔ),已經(jīng)成為業(yè)界標(biāo)準(zhǔn),目前3大EDA廠(chǎng)商的工具都支持UVM。
單部件回環(huán)驗(yàn)證環(huán)境結(jié)構(gòu)如圖5所示,該環(huán)境重點(diǎn)測(cè)試了錯(cuò)誤注入、模擬通路傳輸錯(cuò)誤和通路延遲,激發(fā)鏈路層重傳相關(guān)操作。DUT(Device Under Test)是本文研發(fā)的面向多核處理器的直連接口部件,phy_monitor是用于檢查物理層接口協(xié)議的檢查器。
Figure 5 Loop back verification environment for one DUT component圖5 單部件回環(huán)驗(yàn)證環(huán)境
testcase是測(cè)試用例集,DVB_config、NoC_config和phy_config定義了約束化的隨機(jī)方式。env是UVM驗(yàn)證方法學(xué)中引入的一個(gè)容器類(lèi),當(dāng)調(diào)用 run_test 函數(shù)時(shí),可以傳遞參數(shù)給env容器類(lèi),使得 UVM 能夠自動(dòng)地創(chuàng)建組件實(shí)例,大大減少了代碼的冗余。env主要包含sequence、driver、monitor和scoreboard等組件,sequence組件的主要功能是用于產(chǎn)生各種激勵(lì);sequencer組件主要是將sequence產(chǎn)生的激勵(lì)和各種transaction類(lèi)傳遞給驅(qū)動(dòng)器driver。驗(yàn)證平臺(tái)實(shí)現(xiàn)了基于env實(shí)例化的NoC_ENV、REG_ENV和PHY_ENV,是模擬NoC行為、寄存器配置和物理層接口的功能。
NoC_ENV.driver模擬NoC的BFM(Bus Function Model)行為,是時(shí)鐘精確的NoC模型,實(shí)現(xiàn)了NoC片上網(wǎng)絡(luò)4類(lèi)報(bào)文數(shù)據(jù)的隨機(jī)發(fā)送。
REG_ENV.driver模擬了寄存器配置的BFM行為,例如配置重傳超時(shí)計(jì)數(shù)器上限值、最大連續(xù)重傳次數(shù)上限值和達(dá)到max_retry_counter后鏈路是否復(fù)位等。
PHY_ENV.driver模擬了物理層接口的BFM行為。
scoreboard負(fù)責(zé)對(duì)仿真運(yùn)行結(jié)果進(jìn)行自動(dòng)比對(duì),對(duì)比對(duì)結(jié)果進(jìn)行分類(lèi)匯總,提供完整的錯(cuò)誤信息并控制仿真器在出錯(cuò)時(shí)的運(yùn)行狀態(tài),即停頓等待、關(guān)閉終止還是繼續(xù)運(yùn)行。
monitor檢查寄存器配置的正確性,Tx_monitor和Rx_monitor除了監(jiān)控DUT的輸入輸出,還完成了覆蓋率統(tǒng)計(jì)收集,phy_monitor是物理層協(xié)議的檢查器。
當(dāng)有多個(gè)sequence需要按一定次序發(fā)送transaction給對(duì)應(yīng)的sequencer時(shí),使用Virtual Sequencer來(lái)進(jìn)行調(diào)度。
圖6所示是2個(gè)直連部件連接的驗(yàn)證環(huán)境,重點(diǎn)測(cè)試微包正確打包、解包功能、鏈路管理功能和重傳協(xié)議功能。
直連部件的驗(yàn)證功能點(diǎn)如表1所示,測(cè)試寄存器配置、NoC報(bào)文傳輸、NoC報(bào)文壓力、注錯(cuò)、鏈路管理、物理層接口檢查的功能正確性。本文采用受約束隨機(jī)產(chǎn)生激勵(lì)和定向激勵(lì)的驗(yàn)證策略,發(fā)現(xiàn)了設(shè)計(jì)中較多缺陷,其中敏化了多個(gè)高質(zhì)量的滑動(dòng)窗口重傳協(xié)議的設(shè)計(jì)缺陷。NoC報(bào)文壓力測(cè)試和注錯(cuò)測(cè)試重點(diǎn)驗(yàn)證直連部件的QoS設(shè)計(jì),測(cè)試1 000萬(wàn)個(gè)NoC報(bào)文傳輸,擁塞和餓死場(chǎng)景沒(méi)有發(fā)生。注錯(cuò)測(cè)試是在鏈路傳輸數(shù)據(jù)中注入錯(cuò)誤,例如微包初始化錯(cuò)誤、微包序號(hào)錯(cuò)誤、空?qǐng)?bào)文錯(cuò)誤、微包的凈荷數(shù)據(jù)植入一位錯(cuò),都能引起正確重傳。
Table 1 Verification function points of direct connection interface
Figure 6 Verification environment for two DUT components圖6 2個(gè)直連部件連接的驗(yàn)證環(huán)境
直連部件的延遲性能如圖7所示,直連部件主頻設(shè)計(jì)為1.5 GHz,在傳輸層和數(shù)據(jù)鏈路層信用都有效情況下,傳輸層和數(shù)據(jù)鏈路層的延遲為7.5 ns;在傳輸層和數(shù)據(jù)鏈路層信用無(wú)效的情況下,延遲為15 ns;當(dāng)鏈路傳輸數(shù)據(jù)中注入錯(cuò)誤產(chǎn)生了重傳時(shí),延遲為21 ns。物理層PCS子層時(shí)鐘相位偏移45°、90°、180°時(shí),直連部件都可以正常工作;物理層PCS子層輸出的的各個(gè)通道(Lane)之間偏移延遲(skew)允許最多5個(gè)PCS子層時(shí)鐘周期,直連部件可以正常工作。直連部件通過(guò)軟模擬功能驗(yàn)證后,移植到FPGA原型驗(yàn)證平臺(tái)測(cè)試,達(dá)到了預(yù)期目標(biāo)。目前,該芯片已成功流片。
Figure 7 Latency performance of direct interface圖7 直連部件延遲性能
本文主要研究高性能處理器直連接口的QoS設(shè)計(jì),通過(guò)直連接口實(shí)現(xiàn)跨芯片的一致性報(bào)文有效、可靠傳輸。本文詳細(xì)闡述了直連接口各個(gè)協(xié)議層QoS設(shè)計(jì)的關(guān)鍵技術(shù),基于UVM方法學(xué)構(gòu)建了單部件和雙部件驗(yàn)證平臺(tái),模擬驗(yàn)證了QoS設(shè)計(jì)的正確性,移植到FPGA原型驗(yàn)證平臺(tái),順利通過(guò)了測(cè)試。實(shí)現(xiàn)處理器芯片直連,是提升高性能多路服務(wù)器的主流方向,具有良好的應(yīng)用和研究前景。