PCIE Zero-Length read
1、Zero-Length Write
PCIe協(xié)議提出了zero-length的讀寫操作,并且做了如下說明
Zero-Length Write的含義
A Memory Write Request of 1 DW with no bytes enabled, 即Memory Write 類型tlp中只有1DW的data,且length字段為1,并且tlp header中的First DW BE[3:0] 和Last DW BE[3:0]均為0。
A Memory Write Request of 1 DW with “zero-length Write,”
Zero-Length Write的作用
Zero-Length Write has no effect at the Completer unless otherwise specified. 正常情況下Zero-Length Write不會對完成者造成任何影響,除非特別指定。例如:正常情況下,一顆芯片中的PCIe作為endpoint,收到Zero-Length Write時,此Zero-Length Write不會改寫當前tlp中addr對應的寄存器(or RAM)的數(shù)值,也不會產(chǎn)生對應地址的寫脈沖,更不會應該此寫操作造成芯片功能的變化
A Memory Write 通常在特定的協(xié)議中去使用,已達到額外的效果,例如LN protocol.(沒深入看)
2、Zero-Length Read
PCIe協(xié)議提出了zero-length的讀操作,并且做了如下說明
Zero-Length Read的含義
A Memory Read Request of 1 DW with no bytes enabled。即Memory Read 類型tlp中且length字段為1,并且tlp header中的First DW BE[3:0] 和Last DW BE[3:0]均為0。
Zero-Length Write的作用
協(xié)議原文描述如下:
Zero-Length Read may be used by devices as a type of flush Request. For a Requester, the flush semantic allows a device to ensure that previously issued Posted Writes have been completed at their PCI Express destination. To be effective in all cases, the address for the zero-length Read must target the same device as the Posted Writes that are being flushed. One recommended approach is using the same address as one of the Posted Writes being flushed.
即:
Zero-Length Read 通常作為一種刷新操作,用于確保之前發(fā)起的Posted Writes已經(jīng)被completer完成了。假設master在T0時刻已經(jīng)發(fā)起mem_write(addrA),T1時刻發(fā)起zero_mem_rd(addA),T3時刻master收到對應的cpld。此時在T3時刻,master就知道了mem_write(addrA)已經(jīng)被slave正確執(zhí)行了。
對Zero-Length Write的要求:
If a Read Request of 1 DW specifies that no bytes are enabled to be read (First DW BE[3:0] field = 0000b), the corresponding Completion must specify a Length of 1 DW, and include a data payload of 1 DW.The contents of the data payload within the Completion packet is unspecified and may be any value。即對應cpl的長度必須指定為1DW,且必須包含1DW的data payload,并且data的數(shù)值沒有要求,可以是任意值。
3、Zero-Length Read相對于正常讀操作有什么優(yōu)勢呢?
假設目標地址的讀寫操作均會觸發(fā)芯片內(nèi)部不同功能的啟動,而Zero-Length Read實際不要求真正去執(zhí)行一次memory read操作。同樣都能確保之前Posted Writes已經(jīng)被執(zhí)行,但是真實的讀操作可能會改變芯片功能狀態(tài),而Zero-Length Read不會,因此Zero-Length Read更有優(yōu)勢。
談談bus master en
Bus master en信號
Type0的function:控制function發(fā)起Memory and I/O Read/Write Requests
1.Bus Master Enable為0,不允許function發(fā)起Memory and I/O Read/Write Requests
2.PF的Bus Master Enable 位于PF配置空間的Command Register的bit2,僅僅控制PF自身的請求,不會控制所屬VF的請求
3.VF的Bus Master Enable,位于VF配置空間的Command Register的bit2,僅僅控制VF自身的請求
Type1的function:控制function向Upstream方向轉(zhuǎn)發(fā)Memory and I/O Read/Write Requests
1.Switch upstream port的Bus Master Enable為0,
(1)會將downstream side收到的Memory and I/O Read/Write Requests當做UR處理
(2)Switch upstream port自身不允許向upstream 方向發(fā)出Memory and I/O Read/Write Requests
ECRC 與 credit 信用量
1、ECRC 是不算在信用量范圍內(nèi)的
從PCIe協(xié)議上可以看出,信用量僅僅包含三類:CPL credit/Post credit/non-post credit,其中每種包含data credit和header credit。
ECRC 是額外添加的校驗字段,在TLP內(nèi)是1DW,即4byte,不屬于data payload,也不屬于header字段。因此ECRC不在信用量的考量范圍內(nèi)。
2、Buffer size的注意事項
支持ECRC check功能的PCIE 在設計rx buffer時,需要考慮到當所有收到的TLP都帶ECRC字段時,buffer是否會溢出。
審核編輯 :李倩
-
芯片
+關注
關注
455文章
50851瀏覽量
424001 -
寄存器
+關注
關注
31文章
5343瀏覽量
120451 -
PCIe
+關注
關注
15文章
1239瀏覽量
82698
原文標題:PCIE知識點:談談bus master en等
文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論