PCIE Zero-Length read
1、Zero-Length Write
PCIe協議提出了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)的數值,也不會產生對應地址的寫脈沖,更不會應該此寫操作造成芯片功能的變化
A Memory Write 通常在特定的協議中去使用,已達到額外的效果,例如LN protocol.(沒深入看)
2、Zero-Length Read
PCIe協議提出了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的作用
協議原文描述如下:
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 通常作為一種刷新操作,用于確保之前發起的Posted Writes已經被completer完成了。假設master在T0時刻已經發起mem_write(addrA),T1時刻發起zero_mem_rd(addA),T3時刻master收到對應的cpld。此時在T3時刻,master就知道了mem_write(addrA)已經被slave正確執行了。
對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的數值沒有要求,可以是任意值。
3、Zero-Length Read相對于正常讀操作有什么優勢呢?
假設目標地址的讀寫操作均會觸發芯片內部不同功能的啟動,而Zero-Length Read實際不要求真正去執行一次memory read操作。同樣都能確保之前Posted Writes已經被執行,但是真實的讀操作可能會改變芯片功能狀態,而Zero-Length Read不會,因此Zero-Length Read更有優勢。
談談bus master en
Bus master en信號
Type0的function:控制function發起Memory and I/O Read/Write Requests
1.Bus Master Enable為0,不允許function發起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方向轉發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 方向發出Memory and I/O Read/Write Requests
ECRC 與 credit 信用量
1、ECRC 是不算在信用量范圍內的
從PCIe協議上可以看出,信用量僅僅包含三類:CPL credit/Post credit/non-post credit,其中每種包含data credit和header credit。
ECRC 是額外添加的校驗字段,在TLP內是1DW,即4byte,不屬于data payload,也不屬于header字段。因此ECRC不在信用量的考量范圍內。
2、Buffer size的注意事項
支持ECRC check功能的PCIE 在設計rx buffer時,需要考慮到當所有收到的TLP都帶ECRC字段時,buffer是否會溢出。
審核編輯 :李倩
-
芯片
+關注
關注
455文章
50714瀏覽量
423155 -
寄存器
+關注
關注
31文章
5336瀏覽量
120231 -
PCIe
+關注
關注
15文章
1234瀏覽量
82584
原文標題:PCIE知識點:談談bus master en等
文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論