pcie的msi與msi x 序列VS並行

2021-09-21 04:16:22 字數 1044 閱讀 6916

之所以可以實現如此的msi中的message,是因為pcie不僅僅是一條匯流排,而是一套協議,它是序列的,而非傳統匯流排的並行形式,序列匯流排最適合定義協議了,然而不管怎樣,cpu引腳以及其區域性匯流排(前端匯流排)是並行的,因此針對於pcie,有乙個稱為root complex的傢伙負責並串轉換。由於pcie實現複雜的協議,因此它的乙個端點可以往root complex傳送乙個訊息,root complex接收到乙個msi時,它會將這個message轉換,依然向cpu的intr引腳傳送乙個高電平,然後cpu的inta引腳拉低的時候root complex將msi中取出的中斷號取出來傳送到資料匯流排上,也就是說,root complex代替pcie匯流排上連線的裝置傳送了intr高電平給cpu,然後代替各個裝置傳送了中斷號給cpu處理,因此就解除了cpu和各個裝置之間的耦合,只要root complex這個二傳手負責二者的互動即可。

在傳統的pci中斷體系中,每乙個pci匯流排上的裝置被分配乙個特定的中斷號,然後當裝置需要中斷cpu時,裝置直接發出int訊號,然後在cpu的inta引腳拉低的時候將自己的中斷號放在資料匯流排上,一切都要裝置自己負責,這一切的緣由一部分就是因為pci的並行性,實現事務很複雜,而pcie是序列的,很容易定義協議包,因此很容易就實現了由root complex**中斷的功能,因此裝置也就可以動態的分配獨佔的中斷號了,因為中斷號的分配完全是軟體解決的,而不再像傳統pci那樣是硬體解決的了,軟體的最大特點就是其靈活性,因此pcie更適合大量裝置的環境,中斷處理程式再也不需要大量遍歷共享中斷號的裝置來確定中斷源了。

聯想一下乙太網,或者ip網,它們的成功不是硬體的複雜性和高效性,而是不失高效性下的靈活性,這些體系或者機制的共同點就是它們的匯流排都是序列的,序列的匯流排可以方便的實現協議,而不用考慮並行同步的問題,這些協議是基於握手的,因此這些協議比硬體硬連線實現的機制更加靈活,如果採用硬連線並行機制,我們除了得到了短距離的快速傳輸外,幾乎無法傳輸任何控制資訊,還需要另外的控制匯流排和相關的時序,這就增加了晶元引腳的數量和積體電路裝置的複雜性,因此序列線路在更高層次上是比並行線路更具有優勢的,並行線路需要額外的控制電路時序來提供約束,而序列線路只需要協議包本身就可以提供約束。

附:一張可以體現pcie的圖

PCIE裝置與HOST之間的位址轉換

最近剛好用到了通過pcie的與pc端相連的arm板子,看了看 裡面的位址轉換確實把我也弄得有些暈,一邊和組裡的人討論一邊去問大神,終於算是把這塊給弄的明白了,在部落格裡稍微記錄一下,防止之後又忘記。pcie是一種高速序列計算機擴充套件匯流排標準,旨在替代老版的pci匯流排,現在大多數主機板都配有多個...

PCIE裝置與HOST之間的位址轉換

最近剛好用到了通過pcie的與pc端相連的arm板子,看了看 裡面的位址轉換確實把我也弄得有些暈,一邊和組裡的人討論一邊去問大神,終於算是把這塊給弄的明白了,在部落格裡稍微記錄一下,防止之後又忘記。pcie是一種高速序列計算機擴充套件匯流排標準,旨在替代老版的pci匯流排,現在大多數主機板都配有多個...

oracle 序列的建立與使用

學習了序列,一直沒怎麼有機會用過,做了個簡單的使用練習。在oracle中,可以使用序列自動生成乙個整數序列,主要用來自動為表中的資料型別的主鍵列提供有序的唯一值,這樣就可以避免在向表中新增資料時,手工指定主鍵值。而且使用手工指定主鍵值這種方式時,由於主鍵值不允許重複,因此它要求操作人員在指定主鍵值時...