- 論壇徽章:
- 9
|
本帖最后由 mordorwww 于 2014-07-03 17:15 編輯
網上這么一句話: 覺得說不通啊,數據還沒到,那你產生什么中斷啊
其二,傳統(tǒng)中斷超前產生,實際數據并未真正達到:
眾所周之,中斷通常是設備發(fā)送完數據后,給CPU一個中斷通知CPU進行處理。但是這種看似簡單的應用如果是傳統(tǒng)中斷也會產生問題,那就是,中斷已經產生,并且數據也已經從設備發(fā)出,但是實際上并沒有到達主存。這時候CPU是讀不到它想要的數據的。在這種情況下,CPU必須從設備端讀取寄存器來知道數據是否真的已經到達目的地,PCI事務排序規(guī)則確保該寄存器只有在數據真實到達之前才會更新。這是傳統(tǒng)中斷的另一弊端,而MSI中斷因為與數據包共享同一通路并且有嚴格的先后順序,所以不會出現這種問題,更不需要更新和查詢設備端寄存器,從而節(jié)省了很多開銷。
關于pcie中斷
2012-05-04 15:41:28| 分類: IT技能 |舉報|字號 訂閱
最近才開始接觸到pcie的有關內容,先把基本的一些概念搞清楚,后續(xù)調完這個問題,再記錄...
PCI支持兩種中斷,傳統(tǒng)INTx中斷和MSI中斷。 比較兩種中斷能讓我們了解PCI規(guī)范發(fā)展的來龍去脈,也能使我們把握PCI發(fā)展的技術方向。
什么是MSI
MSI 是 Message Signaled Interrupt (MSI) 的縮寫,PCI設備寫一個特定消息到特定地址,從而觸發(fā)一個CPU中斷.
MSI 相對于傳統(tǒng)中斷有三個主要優(yōu)勢:
其一,共享中斷帶來的性能損失:
傳統(tǒng)中斷的中斷引腳常常被多個設備共享. 當中斷觸發(fā)時, 內核必須依次觸發(fā)每個設備相應的中斷處理,這必將損失系統(tǒng)的整體性能. 每個MSI中斷屬于設備所獨有,因此不會產生共享中斷帶來的性能損失。
其二,傳統(tǒng)中斷超前產生,實際數據并未真正達到:
眾所周之,中斷通常是設備發(fā)送完數據后,給CPU一個中斷通知CPU進行處理。但是這種看似簡單的應用如果是傳統(tǒng)中斷也會產生問題,那就是,中斷已經產生,并且數據也已經從設備發(fā)出,但是實際上并沒有到達主存。這時候CPU是讀不到它想要的數據的。在這種情況下,CPU必須從設備端讀取寄存器來知道數據是否真的已經到達目的地,PCI事務排序規(guī)則確保該寄存器只有在數據真實到達之前才會更新。這是傳統(tǒng)中斷的另一弊端,而MSI中斷因為與數據包共享同一通路并且有嚴格的先后順序,所以不會出現這種問題,更不需要更新和查詢設備端寄存器,從而節(jié)省了很多開銷。
其三,每個設備最多只有四個傳統(tǒng)中斷引腳:
對于多功能PCI設備而言,每一個功能最多只有一個中斷引腳。設備驅動程序必須查詢設備產生的具體事件,勢必降低中斷處理速度。而一個設備可以支持最多32個MSI中斷,每個中斷有其特定功能,譬如,一些一場情況和錯誤處理有其單獨的中斷能讓驅動程序處理如數據收發(fā)中斷更有效。 |
|