PCIE3.0基礎說明(PCI Express Base Specification Revision 3.0 by PCI-SIG)筆記——第二章:事務層說明(2)

2.2.4.路由和尋址規則

TLP路由具備三個主要機制:地址路由、ID路由和隱式(implicit)路由。其中,隱式路由僅有消息請求使用。

2.2.4.1 基於地址的路由規則

  1. 地址路由主要用於內存和I/O請求。
  2. 定義了兩種地址格式,64位格式使用了4個DW的頭部,32位格式使用了3個DW的頭部。(分別如figure 2-7和2-8所示)。
    在這裏插入圖片描述在這裏插入圖片描述
  3. 對於內存讀、內存寫和AtomicOp 請求,地址類型域(AT)將按照如Table2-5中進行編碼。對於其他請求,AT域是保留的。
    在這裏插入圖片描述
  4. Table2-6給出了TLP頭部的地址映射。
    在這裏插入圖片描述在這裏插入圖片描述
  5. 內存讀、內存寫和AtomicOp 請求均可以使用上述兩種格式
    1).對於低於4GB的地址空間,請求者必須使用32位格式。如果接受者收到了一個用於請求4GB以下(即,高32位地址全爲0)的地址空間的64位格式地址,那麼其行爲是未定義的。
  6. I/O讀請求和I/O寫請求使用的是32位格式。
  7. 所有代理都必須對頭部中的所有地址位進行解碼,不允許使用地址別名。

2.2.4.2.基於ID的路由規則

  1. 配置請求、ID路由消息和“完成”將使用ID路由。

  2. ID路由使用總線、設備和功能編號來指定TLP的目的地:
    1)Table2-7給出了非ARI的I路由ID,總線、設備和功能編號(3位)同TLP頭部的映射關係
    2)Table2-8給出了ARI的I路由ID,總線、設備和功能編號(3位)同TLP頭部的映射關係
    在這裏插入圖片描述在這裏插入圖片描述

  3. 定義了兩種ID路由格式,一種使用了4個DW的頭部,一種使用了3個DW的頭部。分別如Figure2-9/2-10所示。
    在這裏插入圖片描述在這裏插入圖片描述

2.2.5.頭/尾DW字節使能規則

內存、I/O和配置請求都包含字節使能。“字節使能”處於請求頭部的第7個字節(見Figure2-11)。對於設置了TH位的內存讀請求,字節使能域也用於攜帶ST[7:0]域。TH位僅能在內存讀請求中設置,使得在數據都可用時完成這些讀請求。
在這裏插入圖片描述

  1. 對於設置了TH位的內存讀請求,如下的值用於進行字節使能。
    1)如果請求的Length域所指定的長度爲1DW,那麼頭DW的字節使能的值被設置爲“1111b”,尾DW的字節使能的值被設置爲“0000b”。
    2)如果請求的Length域所指定的長度大於1DW,那麼頭/尾DW字節使能的值將被設置爲“1111b”。

  2. 頭DW BE[3:0]域中包含了由一個請求使用的第一個(或唯一一個)DW的字節使能。
    1)如果請求中的Length與所指定的長度大於1DW,那麼這個域不能設置爲0000b。

  3. 尾DW BE[3:0]域中包含了一個請求的最後一個DW的字節使能。
    1)如果一個請求的Length域所指定的長度爲1DW,那麼這個域僅能設置爲0000b。
    2)如果一個請求的Length域所指定的長度大於1DW,那麼這個域不能設置爲0000b。

  4. 對於字節使能域中的每個位:
    1)如果被設置位0b,則對應的字節不能寫,或者如果不能預取,則Completer不能讀該字節。
    2)如果被設置爲1b,則對應的字節必須寫或Completer必須讀該字節。

  5. 對於所有長度爲1DW的請求,頭DW的BE域的值可以設置爲非連續的使能。
    1)非連續字節使能示例:1010b,0101b。

  6. 對於QW對齊的長度爲2DW(1QW)的內存請求,允許使用非連續字節使能。

  7. 所有長度爲2DW(1QW)的非QW對其內存請求和長度爲3DW或更多的內存請求,只能使能請求中的頭DW和尾DW中連續的數據。
    1)連續字節使能示例:
    頭DW BE:1100b,尾DW BE:0011b
    頭DW BE:1000b,尾DW BE:0111b

  8. Table2-9展示了字節使能域中的位和所處請求頭部中的位置、對應數據的字節的關係
    在這裏插入圖片描述

  9. 1DW長度的寫請求可以不使能字節,對Completer也沒有影響。

  10. 如果一個1DW的讀請求指定所讀取的數據爲未使能 (頭DW BE[3:0]域=0000b),則對應的Completion必須將Length設置爲1DW,其中包含1DW的數據負載。
    1)Completion包中數據負載的內容是未定義的,可能爲任意值。

  11. 如果TLP沒有遵守字節使能規則,那麼接受者/完成者的行爲將是未定義的。

  12. 接受者可能會根據配置,檢查是否有違反字節使能規則。如果接受者實現了這類檢查,那麼如果一個TLP違反了字節使能規則,那麼這個TLP就是一個存在錯誤的TLP。
    1)如果檢查了字節使能的規則,那麼當違反規則時,將報告與接收端口所對應的錯誤。

零長度讀取
設備將使用沒有字節使能的1DW內存讀取請求(或“零長度讀取”),作爲一種清空請求。對於一個請求者,清空原語允許一個設備可以確保之前的Posted writes操作已經在PCIE目的地完成了。爲了滿足所有情況,零長度讀取的地址必須和用於清空的Posted Writess指向同一個設備。建議使用Posted writes清空時使用的同一個地址。

清空原語具有廣泛的應用,所有Completer都必須實現同這個原語相關的功能。因爲Requester可能在不瞭解Completer特點的情況下使用清空原語,Completer必須保證零長度讀取沒有副作用。對於規則“在一個非預取空間,Completer不能讀取未使能的字節”,這是一種具體的情況。需要注意的是,在進行零長度讀取時,清空僅用於相同的Traffic Class流。

2.2.6. 事務描述符

待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章