PCIe學習筆記分享

2021-06-20 16:03:35 字數 4651 閱讀 4680

本總結隨著dm8168中pcie的學習,以及pcie原理的學習而新增,都是一些零碎的知識點,有部分個人理解,將來溫故知新用。

欠奉。pcie裝置需要使用refclk+,refclk作為本地參考時鐘,其時鐘頻率固定為100mhz,在dm8168系統中,需要提供兩個100mhz時鐘,乙個給dm8168用於檢測pcie並且同步pcie裝置,乙個給pcie插槽用於ep的本地參考時鐘,兩個時鐘必須同源,以保證pcie掛載裝置與系統同步。

wake#: 當pcie裝置進入休眠需要喚醒時,pcie裝置通過wake#訊號使處理器重新為pcie裝置供電,達到喚醒目的。

jtag: 常見除錯介面,在pcie介面中由trst#,tck, tdk, tdo和tms訊號組成。

prsnt1#,prsnt2#: 與pcie裝置熱插拔有關的一組訊號。dm816x裝置不支援熱插拔。

pcie匯流排採用序列的連線方式,並使用資料報(packet)進行資料傳輸,在資料報的接收和傳送過程中,需要經過多個層次,包括事務層,資料鏈路層和物理層三層。類似網路傳輸的osi七層模型。

pcie為互聯裝置提供高速,高效能,點對點,雙—單工,差分訊號鏈路。資料從一組訊號線傳送,在另一組訊號線上接收。

pcie匯流排規定了兩大類的復位方式,一種是傳統的復位方式(conventional reset),另一種是flr(function-level reset)方式。

傳統的復位方式有cord,warm和hot reset三種方式。cordreset方式就是pcie上電時系統通過perst#腳進行復位,類似9650外圍晶元的阻容復位,我理解是一種硬復位。而warm reset類似於看門狗,在系統上電執行後,通過看門狗等方式對pcie進行的復位,應該屬於pcie裝置全域性復位,復位後pcie裝置重新啟動執行。hot reset復位,是使用軟體對pcie裝置進行復位,如系統軟體對bridge control register某位置1,該橋片對pcie裝置進行復位。

flr方式,即function-levelreset方式,這個方式與上述傳統復位有什麼區別,舉個例子:當pcie網絡卡的某個功能模組「與網路部分相關」的邏輯需要復位,而傳統方式(cold,warm,hot reset)不能做到區域性復位,而flr方式就是一種區域性復位。dm8168

不支援flr

方式。17.1.3sprugx8b.pdf

北橋晶元   它主要負責cpu與記憶體之間的資料交換,並控制agp、pci資料在其內部的傳輸,是主機板效能的主要決定因素。隨著晶元的整合度越來越高,它也整合了不少其它功能。如:由於althon64內部整合了記憶體控制器;nvidia在其nf3 250、nf4等晶元組中,去掉了南橋,而在北橋中則加入千兆網路、串列埠硬碟控制等功能。現在主流的北橋芯徵的牌子有via、nvidia及sis等。  當然這些晶元的好壞並不是由主機板生產廠家所決定的,但是主機板生產商採取什麼樣的晶元生產卻是直接決定了主機板的效能。如:同樣是採用via的晶元,效能上則有kt600>kt400a>kt333>kt266a等。目前主流的 amd平台上,可選的晶元組有:kt600、nf2、k8t800、nf3等;對於intel平台,則有915、865pe、pt880、845pe、 848p等。

南橋晶元主要是負責i/o介面等一些外設介面的控制、ide裝置的控制及附加功能等等。常見的有via的8235、8237等;intel的有ch4、ch5、ch6等;nvidia的mcp、mcp-t、mcp raid等。在這部分上,名牌主機板與一般的主機板並沒有很大的差異,但是名牌主機板憑著其出色的做工,還是成為不少人的首選。而不排除一部分質量稍差的主機板為了在競爭中取得生存,可能會採用功能更強的南橋以求在功能上取勝。

fsb只指cpu與北橋晶元之間的資料傳輸匯流排,又稱前端匯流排。  對於p4來說,fsb頻率=cpu外頻*4。  這個引數指的就是前端匯流排的頻率,它是處理器與主機板交換資料的通道北橋晶元負責聯絡記憶體、顯示卡等資料吞吐量最大的部件,並和南橋晶元連線。cpu就是通過前端匯流排(fsb)連線到北橋晶元,進而通過北橋晶元和記憶體、顯示卡交換資料。前端匯流排是cpu和外界交換資料的最主要通道,因此前端匯流排的資料傳輸能力對計算機整體效能作用很大,如果沒足夠快的前端匯流排,再強的cpu也不能明顯提高計算機整體速度。資料傳輸最大頻寬取決於所有同時傳輸的資料的寬度和傳輸頻率,即資料頻寬=(匯流排頻率×資料位寬)÷8。目前pc機上所能達到的前端匯流排頻率有266mhz、333mhz、400mhz、533mhz、800mhz幾種,前端匯流排頻率越大,代表著cpu與北橋晶元之間的資料傳輸能力越大,更能充分發揮出cpu的功能。

由於pcie匯流排使用端到端的連線方式,一條pcie鏈路只能連線乙個裝置。當乙個pcie鏈路需要掛接多個ep時,需要使用switch進行擴充套件。乙個標準的switch具有乙個上游埠和多個下游埠。上游埠與rc或者其他switch的下游埠相連,而下游埠可以與ep、pcie-to-pci橋或者下游switch的上游埠相連。switch是一種鏈路擴充套件的方式。

pcie-to-pci橋片:將pcie匯流排轉換為pci匯流排,以實現pcie裝置與pci裝置的互聯,理解為轉換器。

同理pcie-to-pci-x橋片。

tlp的路由是指tlp通過switch或者pcie橋片時採用那條路徑,最終到達ep或者rc的方法。pcie匯流排一共定義了三種路由方法,分別是基於位址(address)的路由,基於id的路由和隱式路由(implicit)方式。

max_payload_size引數決定了乙個tlp報文可能使用的最大有效負載,pcie匯流排規定max_payload_size的最大值為4096b,但是許多pcie裝置不一定能夠支援這麼大的負載。在實際應用中,乙個pcie裝置的支援的max_payload_size引數通常是128b,256b或者512b。

區別於使用intx引腳提交的中斷請求,msi和msi-x中斷機制使用儲存器寫請求的tlp向處理器提交中斷請求,也就是說這種中斷的方法是嵌在tlp報文中的。不同的處理器對pcie裝置發出的msi報文的解釋並不相同。但是pcie裝置在提交msi中斷請求時,都是向msi/msi-x capability結構中的message address的位址寫message data資料,從而組成乙個儲存器寫tlp,向處理器提交中斷請求。

有些pcie裝置還支援legacy中斷方式,比如dm8168,這種中斷方式是通過傳送assert_intx和deassert_intx訊息報文進行中斷請求,即虛擬中斷線(intx)的方式。在pcie體系結構中,仍然存在許多pci裝置,而這些裝置通過pcie橋連線到pcie匯流排中,這些裝置可能並不支援msi/msi-x中斷機制,因此必須使用intx訊號進行中斷請求。

這個見於pcie裝置和系統記憶體互訪問時,outbound是指cpu到裝置方向;inbound指device--> rc(cpu端)方向。從這個概念上說,裝置(device)都是外部的,沒有內部裝置之說。cpu讀寫rc 端的暫存器時,還是屬於片上系統的範圍,所以既不是inbound 也不是outbound。

簡單的說,如果cpu讀寫pci bar 的匯流排位址,就是outbound,如果裝置讀寫cpu端的主存,就是inbound。

pcie匯流排規定,pcie鏈路兩端的裝置所使用的lane可以錯序進行連線,pcie匯流排規範該功能為「lanereversal」。在相同的lane上,差分訊號的極性也可以錯序連線,pcie匯流排規範將該功能稱為「polarity inversion」。

所謂列舉,就是從host/pci橋開始進行探測和掃瞄,逐個「列舉」連線在第一條pci匯流排上的所有裝置並記錄在案。如果其中的某個裝置是pci-pci橋,則又進一步再探測和掃瞄連在這個橋上的次級pci匯流排。就這樣遞迴下去,直到窮盡系統中的所有pci裝置。其結果,是在記憶體中建立起一棵代表著這些pci匯流排和裝置的pci樹。每個pci裝置(包括pci橋裝置)都由乙個pci_dev結構體來表示,而每條pci匯流排則由pci_bus結構來表示。

序號 b面 功能

a面 功能 01

+12v

+12v電壓

prsnt1#

熱撥插存在檢測 02

+12v

+12v電壓

+12v

+12v電壓

03 rsvd

保留針腳

+12v

+12v電壓

04 gnd 地

gnd 地

05 smclk

系統管理匯流排時鐘

jtag2

測試時鐘、jtag介面輸出時鐘06

smdat

系統管理匯流排資料

jtag3

測試資料輸出 07

gnd 地

jtag4

測試模式選擇 08

+3.3v

+3.3.v電壓

jtag5

測試模式選擇 09

jtag1

測試復位,jtag介面復位時鐘

+3.3v

+3.3.v電壓

10 3.3vaux

3.3v

輔助電源

+3.3v

+3.3.v電壓

11 wake#

鏈結啟用訊號

perst#

pcie

復位訊號 12

rsvd

保留針腳

gnd 地

13gnd 地

refclk+

差分訊號對的參考時鐘 14

petp0 0

號通道傳送

refclk- 15

petn0

gnd 地

16gnd 地

perp0 0

號通道接收 17

prsnt2#

熱撥插存在檢測

pern0 18

gnd 地

gnd 地

參考:

PHP學習筆記分享(一)

apache目錄介紹 bin 二進位制 windows下的一些可執行檔案 conf 配置檔案目錄 htdocs apache預設的主機位址 根目錄 modules 模組 apache的所有功能都是模組化的,想要什麼內容,用相應模組載入 httpd.exe的詳細應用 1.伺服器程序 執行之後才能工作 ...

hook筆記分享

見多了前端各種js的混淆,引數的加密,雖然抓包會拿到最後的結果,但是一步步分析是真的折磨人,像一些噁心的sojson混淆,可能會讓人看著各種引數而頭皮發麻。這裡分享一些常用的hook js的方法,與反爬一起進步!hook window物件的 pt 屬性的設定與取值 function set func...

Django 筆記分享

django是乙個基於mvc構造的框架。但是在django中,控制器接受使用者輸入的部分由框架自行處理,所以 django 裡更關注的是模型 model 模板 template 和檢視 views 稱為 mtv模式。它們各自的職責如下 層次職責 模型 model 即資料訪問層 處理與資料相關的所有事...