PCIe掃盲 兩種中斷傳遞方式

2021-10-04 10:59:00 字數 755 閱讀 7474

為了能夠讓一些優先順序高的事務得到優先處理,pci匯流排支援外設中斷用以提高匯流排效能。pcie匯流排繼承了pci匯流排的所有中斷特性(包括intx和msi/msi-x),以相容早期的一些pci應用層軟體。本次**的文章只是簡單的介紹pcie中斷的一些基本概念和特性,如需深入了解pci/pcie匯流排的中斷內容,請參閱pci/pci-x spec或者mindshare的書籍(pci system architecture)。

pci匯流排最早採用的中斷機制是intx,這是基於邊帶訊號的。後續的pci/pci-x版本,為了消除邊帶訊號,降低系統的硬體設計複雜度,逐漸採用了msi/msi-x(訊息訊號中斷)的中斷機制。

intx一般被稱為傳統的(legacy)pci中斷機制,每個pci裝置最多支援四個中斷訊號(邊帶訊號,inta#、intb#、intc#和intd#)。乙個簡單的例子如下圖所示:

msi/msi-x是後續的pci/pci-x匯流排改進後的中斷機制,其中msi-x(msi-extented)是pci-x中提出的公升級版本。需要特別注意的是,msi/msi-x與pcie匯流排中的訊息(message)的概念完全不同!msi/msi-x本質上是一種posted memory write。

乙個簡單的例子如下圖所示:

陣列的兩種傳遞方式

陣列傳遞 將陣列作為引數傳遞給函式,分值傳遞和位址傳遞。其中,值傳遞的效率較低,不建議使用。兩種傳遞方式都會改變main函式中陣列的值,如下 中a 3 的結果都為6。注意區分陣列的值傳遞和函式值傳遞的區別。陣列的兩種傳遞方式 includeusing namespace std 值傳遞 void f...

JUC中斷執行緒兩種方式

方式一catch了interruptedexcetion之後的優先選擇 在方法簽名中丟擲異常 那麼在run 就會強制try catch package threadcoreknowledge.stopthreads import threadcoreknowledge.createthreads.t...

ajax傳遞陣列的兩種方式

前台 var arrays 定義要傳遞的陣列 arrays.push 1 arrays.push 2 arrays.push 3 向陣列中新增元素 ajax datatype json traditional true 必須指定為true success function data 後台 publi...