MSI-X 之有別於MSI


MSI-X Capability結構

MSI-X Capability中斷機制與MSI Capability的中斷機制類似。PCIe總線引出MSI-X機制的主要目的是為了擴展PCIe設備使用中斷向量的個數,同時解決MSI中斷機制要求使用中斷向量號連續所帶來的問題

MSI中斷機制最多只能使用32個中斷向量,而MSI-X可以使用更多的中斷向量。目前Intel的許多PCIe設備支持MSI-X中斷機制。與MSI中斷機制相比,MSI-X機制更為合理。首先MSI-X可以支持更多的中斷請求,但是這並不是引入MSI-X中斷機制最重要的原因。因為對於多數PCIe設備,32種中斷請求已經足夠了。而引入MSI-X中斷機制的主要原因是,使用該機制不需要中斷控制器分配給該設備的中斷向量號連續。

如果一個PCIe設備需要使用8個中斷請求時,如果使用MSI機制時,Message Data的[2:0]字段可以為0b000~0b111,因此可以發送8種中斷請求,但是這8種中斷請求的Message Data字段必須連續。在許多中斷控制器中,Message Data字段連續也意味着中斷控制器需要為這個PCIe設備分配8個連續的中斷向量號。

有時在一個中斷控制器中,雖然具有8個以上的中斷向量號,但是很難保證這些中斷向量號是連續的。因此中斷控制器將無法為這些PCIe設備分配足夠的中斷請求,此時該設備的“Multiple Message Enable”字段將小於“Multiple Message Capable”。

而使用MSI-X機制可以合理解決該問題。在MSI-X Capability結構中,每一個中斷請求都使用獨立的Message Address字段和Message Data字段,從而中斷控制器可以更加合理地為該設備分配中斷資源。

與MSI Capability寄存器相比,MSI-X Capability寄存器使用一個數組存放Message Address字段和Message Data字段,而不是將這兩個字段放入Capability寄存器中,本篇將這個數組稱為MSI-X Table。從而當PCIe設備使用MSI-X機制時,每一個中斷請求可以使用獨立的Message Address字段和Message Data字段。

除此之外MSI-X中斷機制還使用了獨立的Pending Table表,該表用來存放與每一個中斷向量對應的Pending位。這個Pending位的定義與MSI Capability寄存器的Pending位類似。MSI-X Table和Pending Table存放在PCIe設備的BAR空間中。MSI-X機制必須支持這個Pending Table,而MSI機制的Pending Bits字段是可選的。

 

正所謂

長江后浪推前浪,前浪死在沙灘上。

技術革新永不斷,一不小心就完蛋。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM