2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

5.3 存儲器、I/O和配置讀寫請求TLP

 zhu智 2016-03-10

本節(jié)講述PCIe總線定義的各類TLP,并詳細介紹這些TLP的格式。在這些TLP中,有些格式對于初學(xué)者來說較難理解。讀者需要建立PCIe總線中與TLP相關(guān)的一些基本概念,特別是存儲器讀寫相關(guān)的報文格式。在PCIe總線中,存儲器讀寫,I/O讀寫和配置讀寫請求TLP由以下幾類報文組成。

(1)     存儲器讀請求TLP和讀完成TLP

當PCIe主設(shè)備,RC或者EP,訪問目標設(shè)備的存儲器空間時,使用Non-Posted總線事務(wù)向目標設(shè)備發(fā)出存儲器讀請求TLP,目標設(shè)備收到這個存儲器讀請求TLP后,使用存儲器讀完成TLP,主動向主設(shè)備傳遞數(shù)據(jù)。當主設(shè)備收到目標設(shè)備的存儲器讀完成TLP后,將完成一次存儲器讀操作。

(2)     存儲器寫請求TLP

在PCIe總線中,存儲器寫使用Posted總線事務(wù)。PCIe主設(shè)備僅使用存儲器寫請求TLP即可完成存儲器寫操作,主設(shè)備不需要目標設(shè)備的回應(yīng)報文。

(3)     原子操作請求和完成報文

原子操作由PCIe V2.1總線規(guī)范引入,一個完整的原子操作包括原子操作請求和原子操作完成報文組成。原子操作的使用方法與其他Non-Posted總線事務(wù)類似,首先PCIe主設(shè)備向目標設(shè)備發(fā)送原子操作請求,之后目標設(shè)備向主設(shè)備發(fā)送原子操作完成報文,結(jié)束一次原子操作。有關(guān)原子操作的詳細說明見第5.3.5節(jié)。

(4)     I/O讀寫請求TLP和讀寫完成TLP

在PCIe總線中,I/O讀寫操作使用Non-Posted總線事務(wù),I/O讀寫TLP都需要完成報文做為回應(yīng)。只是在I/O寫請求的完成報文中不需要“帶數(shù)據(jù)”,而僅含有I/O寫請求是否成功的狀態(tài)信息。

(5)     配置讀寫請求TLP和配置讀寫完成TLP

從總線事務(wù)的角度上看,配置讀寫請求操作的過程與I/O讀寫操作的過程類似。配置讀寫請求TLP都需要配置讀寫完成作為應(yīng)答,從而完成一個完成的配置讀寫操作。

(6)     消息報文

與PCI總線相比,PCIe總線增加了消息請求事務(wù)。PCIe總線使用基于報文的數(shù)據(jù)傳送模式,所有總線事務(wù)都是通過報文實現(xiàn)的,PCIe總線取消了一些在PCI總線中存在的邊帶信號。在PCIe總線中,一些由PCI總線的邊帶信號完成的工作,如中斷請求和電源管理等,在PCIe總線中由消息請求報文實現(xiàn)。

5.3.1 存儲器讀寫請求TLP

存儲器讀寫請求TLP的格式如圖5?8所示。

5.3 <wbr>存儲器、I/O和配置讀寫請求TLP

在PCIe總線中,存儲器寫請求TLP使用Posted數(shù)據(jù)傳送方式。而其他與存儲器和I/O相關(guān)的報文都使用Split方式進行數(shù)據(jù)傳送,這些請求報文需要完成報文,通知發(fā)送端之前的數(shù)據(jù)請求報文已經(jīng)被處理完畢,有關(guān)完成報文的詳細說明見第5.3.2節(jié)。

存儲器讀寫請求TLP使用地址路由方式進行數(shù)據(jù)傳遞,在這類TLP頭中包含Address字段,Address字段具有兩種地址格式,分別是32位和64位地址。在存儲器讀寫和I/O讀寫請求的第3和第4個雙字中,存放TLP的32或者64位地址。存儲器、I/O和原子操作讀寫請求使用的TLP頭較為類似。本節(jié)僅介紹存儲器、I/O讀寫使用的TLP頭,而在第5.3.5節(jié)詳細介紹原子操作。

1 Length字段

在存儲器讀請求TLP中并不包含Data Payload,在該報文中,Length字段表示需要從目標設(shè)備數(shù)據(jù)區(qū)域讀取的數(shù)據(jù)長度;而在存儲器寫TLP中,Length字段表示當前報文的Data Payload長度。

Length字段的最小單位為DW。當該字段為n時,表示需要獲得的數(shù)據(jù)長度或者當前報文的數(shù)據(jù)長度為n個DW,其中0£n£0x3FF。值得注意的是,當n等于0時,表示數(shù)據(jù)長度為1024個DW。

2 DW BE字段

PCIe總線以字節(jié)為基本單位進行數(shù)據(jù)傳遞,但是Length字段以DW為最小單位。為此TLP使用Last DW BE和First DW BE這兩個字段進行字節(jié)使能,使得在一個TLP中,有效數(shù)據(jù)以字節(jié)為單位。

這兩個DW BE字段各由4位組成,其中Last DW BE字段的每一位對應(yīng)數(shù)據(jù)Payload最后一個雙字的字節(jié)使能位;而First DW BE字段的每一位對應(yīng)數(shù)據(jù)Payload第一個雙字的字節(jié)使能位。其對應(yīng)關(guān)系如表5?5所示。

表5?5First和Last DW BE字段

Last DW BE

第3位

為1表示數(shù)據(jù)Payload的最后一個雙字的字節(jié)3有效

第2位

為1表示數(shù)據(jù)Payload的最后一個雙字的字節(jié)2有效

第1位

為1表示數(shù)據(jù)Payload的最后一個雙字的字節(jié)1有效

第0位

為1表示數(shù)據(jù)Payload的最后一個雙字的字節(jié)0有效

First DW BE

第3位

為1表示數(shù)據(jù)Payload的第一個雙字的字節(jié)3有效

第2位

為1表示數(shù)據(jù)Payload的第一個雙字的字節(jié)2有效

第1位

為1表示數(shù)據(jù)Payload的第一個雙字的字節(jié)1有效

第0位

為1表示數(shù)據(jù)Payload的第一個雙字的字節(jié)0有效

Last DW BE和First DW BE這兩個字段的使用規(guī)則如下。

如果傳送的數(shù)據(jù)長度在一個對界的雙字(DW)之內(nèi),則Last DW BE字段為0b0000,而First DW BE的對應(yīng)位置1;如果數(shù)據(jù)長度超過1DW,Last DW BE字段一定不能為0b0000。PCIe總線使用Last DW BE字段為0b0000表示所傳送的數(shù)據(jù)在一個對界的DW之內(nèi)。

如果傳送的數(shù)據(jù)長度超過1DW,則First DW BE字段至少有一個位使能。不能出現(xiàn)First DW BE為0b0000的情況。

如果傳送的數(shù)據(jù)長度大于等于3DW,則在First DW BE和Last DW BE字段中不能出現(xiàn)不連續(xù)的置1位。

如果傳送的數(shù)據(jù)長度在1DW之內(nèi)時,在First DW BE字段中允許有不連續(xù)的置1位。此時PCIe總線允許在TLP中傳送1個DW的第1,3字節(jié)或者第0,2字節(jié)。

如果傳送的數(shù)據(jù)長度為2DW之內(nèi)時,則First DW BE字段和Last DW BE字段允許有不連續(xù)的置1位。

值得注意的是,PCIe總線支持一種特殊的讀操作,即“Zero-Length”讀請求。此時Length字段的長度為1DW,而First DW BE字段和Last DW BE字段都為0b0000,即所有字節(jié)都不使能。此時與這個存儲器讀請求TLP對應(yīng)的讀完成TLP中不包含有效數(shù)據(jù)。再次提醒讀者注意“Zero-Length”讀請求使用的Length字段為1,而不是為0,為0表示需要獲得的數(shù)據(jù)長度為1024個DW。

“Zero-Length”讀請求的引入是為了實現(xiàn)“讀刷新”操作,該操作的主要目的是為了確保之前使用Posted方式所傳送的數(shù)據(jù),到達最終的目的地,與“Zero-Length”讀對應(yīng)的讀完成報文中不含有負載,從而提高了PCIe鏈路的利用率。

在PCIe總線中,使用Posted方式進行存儲器寫時,目標設(shè)備不需要向主設(shè)備發(fā)送回應(yīng)報文,因此主設(shè)備并不知道這個存儲器寫是否已經(jīng)達到目的地。而主設(shè)備可以使用“讀刷新”操作,向目標設(shè)備進行讀操作來保證存儲器寫最終到達目的地。

在PCIe總線中,標準的存儲器讀請求也可以完成同樣的刷新操作。但是“Zero-Length”讀請求與這種讀請求相比,其完成報文不需要“Data Payload”,因此在一定程度上提高了PCIe總線的效率。如果一個存儲器讀請求TLP報文的TH位為1時,DW BE字段將被重新定義為ST[7:0]字段,有關(guān)ST字段的詳細說明見第5.3.6節(jié)。

3 Requester ID字段

Requester ID字段包含“生成這個TLP報文”的PCIe設(shè)備的總線號(Bus Number)、設(shè)備號(Device Number)和功能號(Function Number),其格式如圖5?9所示。對于存儲器寫請求TLP,Requester ID字段并不是必須的,因為目標設(shè)備收到存儲器寫請求TLP后,不需要完成報文作為應(yīng)答,因此Requester ID字段對于存儲器寫請求TLP并沒有實際意義。

5.3 <wbr>存儲器、I/O和配置讀寫請求TLP

但是PCIe總線規(guī)范并沒有明確說明存儲器寫請求TLP究竟需不需要Requester ID字段,為此IC設(shè)計者依然需要將存儲器寫TLP的Requester ID字段置為有效。值得注意的是,如果一個存儲器寫請求TLP報文的TH位為1時,Tag字段將被重新定義為ST[7:0]字段,有關(guān)ST字段的詳細說明見第5.3.6節(jié)。

對于Non-Posted數(shù)據(jù)請求,目標設(shè)備需要使用完成報文做為回應(yīng)。在這個完成報文中,需要使用源設(shè)備的Requester ID字段。因此在Non-Posted數(shù)據(jù)請求TLP中,如存儲器讀請求、I/O和配置讀寫請求TLP,必須使用Requester ID字段。

存儲器,I/O讀請求TLP中含有Requester ID和Tag字段。在PCIe總線中Requester ID和Tag字段合稱為Transaction ID,Transaction ID字段的格式如圖5?9所示。存儲器讀,I/O和配置讀寫請求TLP使用Transaction字段的主要目的是使接收端通過分析報文的Transaction ID,確認完成報文的目的地。

在PCIe總線中,所有Non-Posted數(shù)據(jù)請求都需要完成報文作為應(yīng)答,才能結(jié)束一次完整的數(shù)據(jù)傳遞。一個源設(shè)備在發(fā)送Non-Posted數(shù)據(jù)請求之后,如果并沒有收到目標設(shè)備回送的完成報文,TLP報文的發(fā)送端需要保存這個Non-Posted數(shù)據(jù)請求,此時該設(shè)備使用的Transaction ID(Tag字段)不能被再次使用,直到一次數(shù)據(jù)傳送結(jié)束,即數(shù)據(jù)發(fā)送端收齊與該TLP對應(yīng)的所有完成報文。

PCIe設(shè)備發(fā)出的每一個Non-Posted數(shù)據(jù)請求TLP,在同一個時刻段內(nèi)Transaction ID必須是唯一的。即在同一時間段內(nèi),在當前PCI總線域中不能存在兩個或者兩個以上的存儲器讀請求TLP,其Transaction ID完全相同。

源設(shè)備發(fā)送Non-Posted數(shù)據(jù)請求后,在沒有獲得全部完成報文之前,不能釋放這個Transaction ID占用的資源。在同一個PCIe設(shè)備發(fā)送的TLP中,其Requester ID字段是相同的,因此PCIe設(shè)備的設(shè)計者所能管理的資源是Tag字段。PCIe設(shè)備的設(shè)計者需要合理地管理Tag資源,以保證數(shù)據(jù)傳送的正確性。

PCIe設(shè)備在發(fā)送Non-Posted數(shù)據(jù)請求時,需要暫存這些Non-Posted數(shù)據(jù)請求。其中Tag字段的長度決定了發(fā)送端能夠暫存多少個同類型的TLP,如果Tag字段長度為5,發(fā)送端能夠暫存32個報文;如果PCIe設(shè)備使能了Extended Tag位,Tag字段可以由8位組成,此時發(fā)送端能夠暫存256個報文。

通過Tag字段的長度,可以發(fā)現(xiàn)每個PCIe設(shè)備最多可以暫存256個同類型的Non-Posted報文。但是在多數(shù)情況下,一個PCIe設(shè)備可能只包含1個Function。因此PCIe設(shè)備還可以使用Function號擴展Tag字段,從而擴展“暫存TLP報文”的數(shù)目。

PCIe設(shè)備在PCI Express Capability結(jié)構(gòu)的Device Control寄存器中,設(shè)置了一個Phantom Functions Enable位,。當一個PCIe設(shè)備僅支持一個Function時,Phantom Functions Enable位可以被設(shè)置為1,此時PCIe設(shè)備可以使用Requester ID的Function Number字段對Tag字段進一步擴展,此時一個PCIe設(shè)備最多可以支持2048個同類型的數(shù)據(jù)請求。

由以上分析可以發(fā)現(xiàn),一個PCIe設(shè)備最多可以支持2048個存儲器讀數(shù)據(jù)請求,基本上可以滿足絕大多數(shù)需要。但是在某些特殊應(yīng)用場合,PCIe設(shè)備即使可以暫存2048個存儲器讀請求,也并不足夠。

與PCI總線相比,PCIe總線的數(shù)據(jù)傳送延時較長,而為了彌補這個傳送延時,PCIe設(shè)備通常使用流水線技術(shù)。此時PCIe設(shè)備必須能夠連續(xù)發(fā)送多個存儲器讀請求報文,隨后RC也將連續(xù)回送多個存儲器讀完成報文,在PCIe設(shè)備的實現(xiàn)中,需要保證能夠源源不斷地從RC接收這些報文,以充分利用報文接收流水線,。

PCIe V2.1總線規(guī)范還提出了另一種Requester ID格式,即ARI (Alternative Routing-ID Interpretation)格式,除了Requester ID外,在完成報文中使用的Completer ID也可以使用這種格式。ARI格式將ID號分為兩個字段,分別為Bus號和Function號,而不使用Device號,ARI格式如圖5?10所示。

5.3 <wbr>存儲器、I/O和配置讀寫請求TLP

PCIe總線引入ARI格式的依據(jù)是在一個PCIe鏈路上僅可能存在一個PCIe設(shè)備,因而其Device號一定為0。在多數(shù)PCIe設(shè)備中,Requester ID和Completion ID包含的Device號是沒有意義的。使用ARI格式時,一個PCIe設(shè)備最多可以支持256個Function,而傳統(tǒng)的PCIe設(shè)備最多只能支持8個Function。

4 I/O讀寫請求TLP的規(guī)則

I/O讀寫請求與存儲器讀寫請求TLP的格式基本類似,只是I/O讀寫請求TLP只能使用32位地址模式和基于地址的路由方式,而且I/O讀寫請求TLP只能使用Non-Posted方式進行傳遞。PCIe總線并不建議PCIe設(shè)備支持I/O地址空間,但是Switch和RC需要具備接收和發(fā)送I/O請求報文的能力,因為許多老的PCI設(shè)備依然使用I/O地址空間,這些PCI設(shè)備可以通過PCIe橋連接到PCIe總線中。因此雖然支持I/O讀寫請求的PCIe設(shè)備極少,但是在PCIe體系結(jié)構(gòu)中,依然需要支持PCI總線域的I/O地址空間。

與存儲器讀寫請求TLP不同,I/O讀寫請求TLP的某些字段必須為以下值。

TC[2:0]必須為0,I/O請求報文使用的TC標簽只能為0。

TH和Attr2位保留,而Attr[1:0]必須為“0b00”,這表示I/O請求報文必須使用PCI總線的強序數(shù)據(jù)傳送模式,而且在傳送過程中,硬件保證其傳送的數(shù)據(jù)與Cache保持一致,實際上I/O地址空間都是不可Cache的。

AT[1:0]必須為“0b00”,表示不支持地址轉(zhuǎn)換,因此在虛擬化技術(shù)中,并不處理PCI總線域中的I/O空間。

Length[9:0]為“0b00 0000 0001”,表示I/O讀寫請求TLP最大的數(shù)據(jù)Payload為1DW,該類TLP不支持突發(fā)傳送。

Last DW[3:0]為“0b0000”。

5.3.2 完成報文

PCIe總線支持Split傳送方式,目標設(shè)備使用完成報文向源設(shè)備主動發(fā)送數(shù)據(jù)。完成報文使用ID路由方式,由TLP Predix、報文頭和Data Payload組成,但是在某些完成報文可以不含有Data Payload,如I/O或者配置寫完成和Zero-Length讀完成報文。在PCIe總線中,有一下幾類數(shù)據(jù)請求需要收到完成報文之后,才能完成整個數(shù)據(jù)傳送過程,完成報文格式如圖5?11所示。

所有的數(shù)據(jù)讀請求,包括存儲器、I/O讀請求、配置讀請求和原子操作請求。當一個PCIe設(shè)備發(fā)出這些數(shù)據(jù)請求報文后,必須收到目標設(shè)備的完成報文后,才能結(jié)束一次數(shù)據(jù)傳送。這一類完成報文必須包含Data Payload。

所有的Non-Posted數(shù)據(jù)寫請求,包括I/O和配置寫請求。當一個PCIe設(shè)備發(fā)出這些數(shù)據(jù)請求報文后,必須收到目標設(shè)備的完成報文后,才能結(jié)束數(shù)據(jù)傳送。但是這一類完成報文不包含數(shù)據(jù),僅包含應(yīng)答信息。

與ATS機制相關(guān)的一些報文。

5.3 <wbr>存儲器、I/O和配置讀寫請求TLP

完成報文“Byte 0”中的大部分字段與“存儲器,I/O、配置請求報文”的對應(yīng)字段的含義相同。完成報文一次最多能夠傳送的報文大小不能超過Max_Payload_Size參數(shù)。在多數(shù)處理器中,完成報文中包含的數(shù)據(jù)在一個Cache行之內(nèi),完成報文使用RCB參數(shù)來處理數(shù)據(jù)對界,RCB參數(shù)的大小與處理器系統(tǒng)的Cache行長度和DDR-SDRAM的一次突發(fā)傳送長度相關(guān),這些參數(shù)的詳細描述見第5.4.3節(jié)。在x86和PowerPC處理器中,一個存儲器讀完成報文一般不超過RCB參數(shù)。

1 Requester ID和Tag字段

完成報文使用ID路由方式,ID路由方式詳見第5.2.2節(jié)。完成報文頭的長度為3DW,完成報文頭中包含Transaction ID信息,由Requester ID和Tag字段組成,這個ID必須與源設(shè)備發(fā)送的數(shù)據(jù)請求報文的Transaction ID對應(yīng),完成報文使用Transaction ID進行ID路由,并將數(shù)據(jù)發(fā)送給源設(shè)備。

當PCIe設(shè)備收到存儲器讀、I/O讀寫或者配置讀寫請求TLP時,需要首先保存這些報文的Transaction ID,之后當該設(shè)備準備好完成報文后,將完成報文的Requester ID和Tag字段賦值為之前保存的Transaction ID字段。

2 Completer ID字段

Completer ID字段的含義與Requester ID字段較為相似,只是該字段存放“發(fā)送完成報文”的PCIe設(shè)備的ID號。PCIe設(shè)備進行數(shù)據(jù)請求時需要在TLP字段中包含Requester ID字段;而使用完成報文結(jié)束數(shù)據(jù)請求時,需要提供Completer ID字段。

3 Status字段

Status字段保存當前完成報文的完成狀態(tài),表示當前TLP是正確地將數(shù)據(jù)傳遞給數(shù)據(jù)請求端;還是在數(shù)據(jù)傳遞過程中出現(xiàn)錯誤;或者要求數(shù)據(jù)請求方進行重試。PCIe總線規(guī)定了幾類完成狀態(tài),如表5?6所示。

表5?6Status字段

Status[2:0]

描述

0b000

SC(Sucessful Completion),正常結(jié)束

0b001

UR(Unsupported Request),不支持的數(shù)據(jù)請求

0b010

CRS(Configuration Request Retry Status),要求數(shù)據(jù)請求方進行重試。當RC對一個PCIe目標設(shè)備發(fā)起配置請求時,如果該目標設(shè)備沒有準備好,可以向RC發(fā)出CRS完成報文,當RC收到這類報文時,不能結(jié)束本次配置請求,必須擇時重新發(fā)送配置請求

0b100

CA(Completion Abort),數(shù)據(jù)夭折。表示目標設(shè)備無法完成本次數(shù)據(jù)請求

其他

保留

4 BCM位與Byte Count字段

BCM(Byte Count Modified)字段由PCI-X設(shè)備設(shè)置。PCI-X設(shè)備也支持Split Transaction傳送方式,當PCI-X設(shè)備進行存儲器讀請求時,目標設(shè)備不一定一次就能將所有數(shù)據(jù)傳遞給源設(shè)備。此時目標設(shè)備在進行第一次數(shù)據(jù)傳送時,需要設(shè)置Byte Count字段和BCM位。

BCM位表示Byte Count字段是否被更改,該位僅對PCI-X設(shè)備有效,而PCIe設(shè)備不能操縱BCM位,只有PCI-X設(shè)備或者PCIe-to-PCI-X橋可以改變該位。本節(jié)對此位不做進一步介紹,對此位感興趣的讀者可以參考PCI-X Addendum to the PCI Local Bus Specification, Revision 2.0。

Byte Count字段記錄源設(shè)備還需要從目標設(shè)備中,獲得多少字節(jié)的數(shù)據(jù)就能完成全部數(shù)據(jù)傳遞,當前TLP中的有效負載也被Byte Count字段統(tǒng)計在內(nèi)。該字段由12位組成。該字段為0b0000-0000-0001表示還剩一個字節(jié),為0b1111-1111-1111表示還剩4095個字節(jié),而為0b0000-0000-0000表示還剩4096個字節(jié)。除了存儲器讀請求的完成報文外,大多數(shù)完成報文的Byte Count字段為4。

如一個源設(shè)備向目標設(shè)備發(fā)送一個“讀取128B的存儲器讀請求TLP”,而目標設(shè)備收到這個讀請求TLP后,可能使用兩個存儲器讀完成TLP傳遞數(shù)據(jù)。其中第1個存儲器讀完成TLP的有效數(shù)據(jù)為64B,而Byte Count字段為128;第2個存儲器讀完成TLP中的有效數(shù)據(jù)為64B,而Byte Count字段也為64。當數(shù)據(jù)請求端接收完畢第1個存儲器讀完成TLP后,發(fā)現(xiàn)還有64B的數(shù)據(jù)沒有接收完畢,此時必須等待下一個存儲器讀完成TLP。等到數(shù)據(jù)請求端收齊所有數(shù)據(jù)后,才能結(jié)束整個存儲器讀請求。

目標設(shè)備發(fā)出的第2個讀完成TLP中的有效數(shù)據(jù)為64B,而Byte Count字段為64,當數(shù)據(jù)請求端接收完畢這個讀完成TLP后,將完成一個完整的存儲器讀過程,從而可以釋放這個存儲器讀過程使用的Tag資源。存儲器讀請求的完成報文的拆分方式較為復(fù)雜,Byte Count字段的設(shè)置也相對較為復(fù)雜。

5 Lower Address字段

如果當前完成報文為存儲器讀完成TLP,該字段存放在存儲器讀完成TLP中第一個數(shù)據(jù)所對應(yīng)地址的最低位。值得注意的是,在完成報文中,并不存在First DW BE和Last DW BE字段,因此接收端必須使用存儲器讀完成TLP的Low Address字段,識別一個TLP中包含數(shù)據(jù)的起始地址。

5.3.3 配置讀寫請求TLP

配置讀寫請求TLP由RC發(fā)起,用來訪問PCIe設(shè)備的配置空間。配置請求報文使用基于ID的路由方式。PCIe總線也支持兩種配置請求報文,分別為Type 00h和Type 01h配置請求。配置請求TLP的格式如圖5?12所示。

5.3 <wbr>存儲器、I/O和配置讀寫請求TLP

配置請求TLP的第4~7字節(jié)與存儲器請求TLP類似。而第8~11字節(jié)的Bus、Device和Function Number中存放該TLP訪問的目標設(shè)備的相應(yīng)的號碼,而Ext Register和Reigister Number存放寄存器號。配置請求報文的其他字段必須為以下值。

TC[2:0]必須為0,I/O請求報文的傳送類型(TC)只能為0。

TH位為保留位;Attr2位為保留,而Attr[1:0]必須為“00b”,這表示I/O請求報文使用PCI總線的強序數(shù)據(jù)傳送模式;AT[1:0]必須為“0b00”,表示不進行地址轉(zhuǎn)換。

Length[9:0]為“0b00 0000 0001”,表示配置讀寫請求最大Payload為1DW。

Last DW BE字段為“0b0000”。而First DW BE字段根據(jù)配置讀寫請求的大小設(shè)置。

5.3.4 消息請求報文

在PCIe總線中,多數(shù)消息報文使用隱式路由方式,其格式如圖5?13所示。其中Byte 0字段為通用TLP頭,而Byte 4的第3字節(jié)中存放Message Code字段。

5.3 <wbr>存儲器、I/O和配置讀寫請求TLP

PCIe總線規(guī)定了以下幾類消息報文。

INTx中斷消息報文(INTx Interrupt Signaling)。

電源管理消息報文(Power Management)。

錯誤消息報文(Error Signaling)。

鎖定事務(wù)消息報文(Locked Transaction Support)。

插槽電源限制消息報文(Slot Power Limit Support)。

Vendor-Defined Messages。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多