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