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中斷機制的主要緣由是,使用該機制不須要中斷控制器分配給該設備的中斷向量號連續。spa

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

有時在一箇中斷控制器中,雖然具備8個以上的中斷向量號,可是很難保證這些中斷向量號是連續的。所以中斷控制器將沒法爲這些PCIe設備分配足夠的中斷請求,此時該設備的「Multiple Message Enable」字段將小於「Multiple Message Capable」。資源

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

與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字段是可選的。請求

 

正所謂技術

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

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

相關文章
相關標籤/搜索