PCIE總線的分層協(xié)議介紹_第1頁
PCIE總線的分層協(xié)議介紹_第2頁
PCIE總線的分層協(xié)議介紹_第3頁
PCIE總線的分層協(xié)議介紹_第4頁
PCIE總線的分層協(xié)議介紹_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

精選優(yōu)質(zhì)文檔-----傾情為你奉上精選優(yōu)質(zhì)文檔-----傾情為你奉上專心---專注---專業(yè)專心---專注---專業(yè)精選優(yōu)質(zhì)文檔-----傾情為你奉上專心---專注---專業(yè)在PCIE總線中信息是以封包的形式傳輸?shù)?,下面為大家介紹一下數(shù)據(jù)在PCIE設(shè)備中是如何封包以及怎樣傳輸?shù)?這里我們將省去路由尋址、流量控制等一些細(xì)節(jié),只介紹數(shù)據(jù)在設(shè)備中的傳輸過程。PCIE總線采用了串行連接方式,并使用數(shù)據(jù)包(Packet)進(jìn)行數(shù)據(jù)傳輸,采用這種結(jié)構(gòu)有效去除了在PCI總線中存在的一些邊帶信號,如INTx和PME#等信號。在PCIE總線中,數(shù)據(jù)報文在接收和發(fā)送過程中,需要通過多個層次,包括事務(wù)層、數(shù)據(jù)鏈路層和物理層,才能完成數(shù)據(jù)的傳輸。PCIE總線的層次結(jié)構(gòu)如圖1所示。圖1PCIE總線的層次結(jié)構(gòu)在PCIE體系結(jié)構(gòu)中,數(shù)據(jù)報文首先在設(shè)備的核心層(DeviceCore)中產(chǎn)生,然后再經(jīng)過該設(shè)備的事務(wù)層(TransactionLayer)、數(shù)據(jù)鏈路層(DataLinkLayer)和物理層(PhysicalLayer),最終發(fā)送出去。而接收端的數(shù)據(jù)也需要通過物理層、數(shù)據(jù)鏈路和事務(wù)層,并最終到達(dá)DeviceCore。下面將介紹各個層次的功能以及該層數(shù)據(jù)的封包形態(tài),每個層次從發(fā)送端和接收端兩個方面來講:1、事務(wù)層(TransactionLayer)事務(wù)層是三層協(xié)議結(jié)構(gòu)的最高層,數(shù)據(jù)在這一層組成最基本的數(shù)據(jù)包,即事務(wù)層數(shù)據(jù)包(TransactionLayerPacket,TLP)。在發(fā)送端,當(dāng)處理器或者其他PCIE設(shè)備訪問PCIE設(shè)備時,事務(wù)層接收來自PCIE設(shè)備核心層的數(shù)據(jù),并將其封裝為TLP后,發(fā)向數(shù)據(jù)鏈路層。在接收端,事務(wù)層可以從數(shù)據(jù)鏈路層中接收數(shù)據(jù)報文,然后轉(zhuǎn)發(fā)至PCIE設(shè)備的核心層。接收部分將入站的TLP保存在虛擬通道緩沖區(qū)中,根據(jù)TLP中的ECRC字段檢查CRC錯誤。若無誤,則刪去ECRC字段,將在TLPHeader中得到的信息及數(shù)據(jù)有效載荷(DataPayload)發(fā)送給用戶接口。事務(wù)層數(shù)據(jù)包(TLP)主要由一個或多個可選的TLPPrefixes、一個TLPHeader、一個DataPayload和一個可選的TLPDigest組成。TLP的組成如圖2所示,每一部分的功能會在下面做簡單介紹。圖2TLP的組成TLPPrefix由PCIEV2.1總線規(guī)范引入,分為LocalTLPPrefix和EP-EPTLPPrefix兩類。其中LocalTLPPrefix的主要作用是在PCIE鏈路的兩端傳遞消息,而EP-EPTLPPrefix的主要作用是在發(fā)送設(shè)備和接收設(shè)備之間傳遞消息。設(shè)置TLPPrefix的主要目的是為了擴展TLP頭,并以此支持PCIEV2.1規(guī)范的一些新的功能。由于TLPPrefix是可選的,如果我們用不到,TLP中可以省去該字段。TLPHeader是TLP中最重要的標(biāo)志,不同的TLP其頭的定義并不相同。TLP頭的大小為3個或4個DW(雙字),其中的信息包含了地址、TLP類型、傳送數(shù)據(jù)的長度、請求者/應(yīng)答者ID、標(biāo)記、流量類別、字節(jié)允許、完成代碼和屬性等字段。TLPHeader的通用格式(以4DW長度為例)如下圖所示。圖3TLPHeader通用格式其中第一個DW(Byte0~Byte3)中的各個字段在所有的TLPHeader中定義是一樣的,而后面的2-3個DW則因TLP的類型不同而有所差異。至于TLPHeader中每個字段代表的具體意義,以及不同事務(wù)類型的TLP中Header的具體形式,大家有興趣的話可以參考附件文件,里面有詳細(xì)的介紹。DataPayload,即我們要傳輸?shù)臄?shù)據(jù)。在一個TLP中,DataPayload的長度視數(shù)據(jù)長度而定,最小為0,最大為1024DW。DataPayload也可以看做一個可選項,有些TLP并不需要DataPayload,如存儲器讀請求、配置和I/O寫完成TLP并不需要DataPayload;而在存儲器寫請求、I/O寫請求、配置寫請求和消息請求的TLP中是帶數(shù)據(jù)的,DataPayload字段要有。TLPDigest是一個可選項,

長度為1DW。一個TLP是否需要TLPDigest由TLPHeader中TD字段決定。如果接收設(shè)備支持ECRC校驗的功能的話,則TLPDigest字段用來放置TLP中的數(shù)據(jù)校驗碼ECRC。2、數(shù)據(jù)鏈路層(DataLinkLayer)數(shù)據(jù)鏈路層(DataLinkLayer)連接事務(wù)層和物理層,其主要功能是保證在各鏈路上發(fā)送和接受數(shù)據(jù)包時的數(shù)據(jù)完整性。數(shù)據(jù)鏈路層使用ACK/NAK協(xié)議保證報文的可靠傳遞(ACK/NAK協(xié)議:ACK(Acknowledgement)為確認(rèn)應(yīng)答字符,在數(shù)據(jù)通信中,當(dāng)接收站確認(rèn)接收的數(shù)據(jù)無誤后,會發(fā)給發(fā)送站該類字符;NAK(NegativeAcknowledge)為否定應(yīng)答字符,當(dāng)接收站確認(rèn)數(shù)據(jù)收到,但是有錯誤的信息,便會發(fā)送該字符,接收站收到NAK字符后,便會重發(fā)數(shù)據(jù),直到接收站返回ACK字符,即數(shù)據(jù)傳輸無誤)。在發(fā)送設(shè)備中,數(shù)據(jù)鏈路層從事務(wù)層接收TLP,接收時必須遵循流量控制機制。數(shù)據(jù)鏈路層接收到TLP后,生成鏈路CRC(LCRC)和一個SequenceNumber(序列ID)并附加到TLP上。之后在該層中的重放緩沖區(qū)中保留該TLP的一個副本并將TLP發(fā)往接收設(shè)備。接收設(shè)備的數(shù)據(jù)鏈路層對收到的TLP進(jìn)行CRC校驗;如果校驗無誤,則向發(fā)送設(shè)備返回一個帶有序列ID的ACKDLLP,發(fā)送設(shè)備在接收到ACK后,確認(rèn)該TLP已成功到達(dá)接收設(shè)備,同時清空重放緩沖區(qū)中與該序列ID有關(guān)的TLP;如果校驗有誤,接收設(shè)備會返回一個帶序列ID的NAKDLLP,發(fā)送設(shè)備將重發(fā)緩沖區(qū)中與此ID相關(guān)的TLP。數(shù)據(jù)鏈路層在TLP上添加的序列ID和LCRC的字段長度分別為12bit和32bit。序列ID用于將重放緩沖區(qū)中保存的出站TLP副本與入站ACK/NAKDLLP聯(lián)系起來,LCRC則是根據(jù)TLP的所有字節(jié)和序列ID計算的,用于檢測數(shù)據(jù)包的傳輸是否正確。在數(shù)據(jù)鏈路層中的數(shù)據(jù)封包如下所示。序列IDTLPPrefixesTLPHeaderDatapayloadECRCLCRC2Byte(11:0bit有效)nDW(n為0,1……)3或4DW0----1024DW1DW1DW圖4數(shù)據(jù)鏈路層中的數(shù)據(jù)封包格式這里簡單介紹一下ACK/NAKDLLP,DLLP(DataLinkLayerPacket)產(chǎn)生于數(shù)據(jù)鏈路層,終止于數(shù)據(jù)鏈路層,并不會傳遞到事務(wù)層。DLLP總長度為6Byte,其類型主要由第一個字節(jié)DLLPType字段決定,最后兩個字節(jié)為CRC校驗碼。DLLP的各種類型在PCIE3.0規(guī)范中DataLinkLayerSpecification章節(jié)中也有詳細(xì)的介紹,這里只介紹一下ACK/NAKDLLP的格式,如下所示:DLLPTypeReservedAckNak_Seq_NumCRC00000000-Ack00010000-Nak12bit12bit(同TLP序列ID)16bit圖5ACK/NAKDLLP3、物理層(PhysicalLayer)物理層作為PCIE總線的最底層,負(fù)責(zé)直接連接PCIE設(shè)備,它為設(shè)備的數(shù)據(jù)通信提供傳送介質(zhì)。物理層又可分為兩部分:邏輯物理層和電氣物理層。邏輯物理層包括對數(shù)據(jù)包(從數(shù)據(jù)鏈路層接收的TLP、DLLP以及從鏈路上接收的物理層數(shù)據(jù)包)進(jìn)行相關(guān)的數(shù)字邏輯,電氣物理層是連接物理層和鏈路的模擬接口,由各通道的差分驅(qū)動器和差分接收器組成。在發(fā)送設(shè)備中,來自數(shù)據(jù)鏈路層的TLP和DLLP被定時輸入到邏輯物理層的發(fā)送緩沖區(qū)中,物理層在TLP和DLLP的前后分別添加一個幀開始和幀結(jié)尾字符。接收設(shè)備利用這兩個字符檢測數(shù)據(jù)包的開始和結(jié)束。此時,在物理層中TLP的數(shù)據(jù)封包格式如下。STP序列IDTLPPrefixesTLPHeaderDatapayloadECRCLCRCEND幀開始1Byte2Byte(11:0bit有效)nDW(n為0,1……)3或4DW0----1024DW1DW1DW幀結(jié)尾1Byte圖6物理層中的TLP封包格式在發(fā)送端,待數(shù)據(jù)包處理完成后,物理層通過串/并轉(zhuǎn)換器將數(shù)據(jù)轉(zhuǎn)換成串行比特流,通過差分驅(qū)動器發(fā)送出去;在接收端,物理層通過并/串轉(zhuǎn)換器將串行數(shù)據(jù)轉(zhuǎn)換成字節(jié)。在這里我們需要知道的是在每個Byte的傳輸是以低位(LSB)開始,高位(MSB)結(jié)束的。下面介紹一下PCIE總線中的數(shù)據(jù)編碼方式:在PCIE總線V1.x和V2.0規(guī)范中物理層中使用8/10b編碼,即在PCIE鏈路上的10bit中含有8bit的有效數(shù)據(jù)。在8/10bit編碼中,將每個Byte看成由3bits(高3位,如下圖中的HGF)和5bits(低5位,如圖中的EDCBA)兩部分組成,編碼后這個Byte數(shù)據(jù)則變成jhgfiedcba(需要注意的是,這里的hgfedcba已經(jīng)和原字節(jié)中的HGFEDCBA不一樣了,在附件PCIExpressBaser3.0的附錄B(SymbolEncoding)中枚舉了一個字節(jié)的所有值,及其對應(yīng)的10bit編碼),j和i則是給每部分添加的起始位,其隨Byte的值而有所不同。圖78/10b編碼方式而在PCIEV3.0規(guī)范中使用128/130b編碼方式,即在PCIE鏈路上的130bit中含有128bit的有效數(shù)據(jù)。在128/130b編碼方式中,在128bit的開頭添加了H0、H1兩個同步起始頭,H0H1有兩種有效的編碼:10和01,其定義了傳輸?shù)臄?shù)據(jù)負(fù)載的類型。下圖是128bit數(shù)據(jù)從發(fā)送端到接收

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論