PCIe中斷總結-各個中斷的區別

1.簡介:

PCIe中斷支持三種傳輸方式:

? ? ? ? ? Legacy: 也稱傳統中斷,Legacy PCI中斷機制,每個PCI設備最多支持四個中斷信號(邊帶信號:INTA# INTB# INTC# INTD#)

? ? ? ? ? MSI(Message Signaled Interrupt): Post Memory Write,只支持32個中斷向量

? ? ? ? ? MSI-x: MSI的升級,最多支持2048個中斷向量

2.傳統中斷

1. PCI設備通過INTx邊帶信號產生中斷請求,經過中斷控制器后轉換為INTR信號,并直接發送至CPU

2. CPU收到INTR信號置位后,知道了中斷請求的發生,但其并不知道是什么中斷請求,因此CPU通過中斷應答來查詢中斷請求信息

3. 中斷應答被發送至PIC后,PIC會返回一個8bits的中斷向量值給CPU

4. CPU收到中斷向量值后,去Memory中的中斷向量表中查找對應的中斷服務程序在memory的位置

5. CPU讀取ISR程序,然后處理該中斷

1. 配置空間Command Register的bit10可禁止/使能INTx中斷;但不會影響MSI&MSI-x

2. 配置空間Status Register的bit3表示中斷狀態

3. 配置空間Interrupt Pin定義中斷邊帶信號引腳號

4. 配置空間Interrupt Line定義中斷向量號
?

MSI本質上是一種Memory Write. MSI相關的寄存器存在于配置空間前256Bytes中.支持32個中斷向量。

3.MSI中斷

MSI本質上是一種Memory Write. MSI相關的寄存器存在于配置空間前256Bytes中.支持32個中斷向量。

? ?? Capability ID:只讀,05h表示支持MSI功能

? ? ? ? ? Next Capability Pointer:只讀,用于查找下一個Capability structer的位置,值為00h則表示到達Linked list的最后.

? ? ? ? ? Message Control Register:用于確定MSI的格式與支持的功能等信息

? ? ? ? ? Mask Bits:中斷屏蔽位,可屏蔽對應MSI信息的發送

? ? ? ? ? Pending Bits:相關中斷未屏蔽時,發生了相關中斷,對應的bit置位,一旦該中斷被發出,該位立即清零
?

4.MSI-x

MSI-x是MSI的改進,本質上也是一種Memory Write.?支持2048個中斷向量,占用更少的配置空間.中斷向量信息被存儲在特殊的Memory(MMIO)中,該memory指向Table BIR(Base address Indicator Register)

5.區別

傳統中斷在PCIe中也是基于消息的,那么那他與MSI中斷的區別是什么呢

其一,共享中斷帶來的性能損失:
傳統中斷的中斷引腳常常被多個設備共享. 當中斷觸發時, 內核必須依次觸發每個設備相應的中斷處理,這必將損失系統的整體性能.??每個MSI中斷屬于設備所獨有,因此不會產生共享中斷帶來的性能損失。
??
其二,傳統中斷超前產生,實際數據并未真正達到:
眾所周之,中斷通常是設備發送完數據后,給CPU一個中斷通知CPU進行處理。但是這種看似簡單的應用如果是傳統中斷也會產生問題,那就是,中斷已經產生,并且數據也已經從設備發出,但是實際上并沒有到達主存。這時候CPU是讀不到它想要的數據的。在這種情況下,CPU必須從設備端讀取寄存器來知道數據是否真的已經到達目的地,PCI事物排序規則確保該寄存器只有在數據真實到達之前才會更新。這是傳統中斷的另一弊端,而MSI中斷因為與數據包共享同一通路并且有嚴格的先后順序,所以不會出現這種問題,更不需要更新和查詢設備端寄存器,從而節省了很多開銷。

其三,每個設備最多只有四個傳統中斷引腳:
對于多功能PCI設備而言,每一個功能最多只有一個中斷引腳。設備驅動程序必須查詢設備產生的具體事件,勢必降低中斷處理速度。而一個設備可以支持最多32個MSI中斷,每個中斷有其特定功能,譬如,一些一場情況和錯誤處理有其單獨的中斷能讓驅動程序處理如數據收發中斷更有效。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212386.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212386.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212386.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

力扣labuladong一刷day35天

力扣labuladong一刷day35天 文章目錄 力扣labuladong一刷day35天一、98. 驗證二叉搜索樹二、700. 二叉搜索樹中的搜索三、701. 二叉搜索樹中的插入操作四、450. 刪除二叉搜索樹中的節點 一、98. 驗證二叉搜索樹 題目鏈接:https://leetcode.cn/problems/validate-bi…

【Linux】如何對文本文件進行有條件地劃分?——cut命令

cut 命令可以根據一個指定的標記(默認是 tab)來為文本劃分列,然后將此列顯示。 例如想要顯示 passwd 文件的第一列可以使用以下命令:cut –f 1 –d : /etc/passwd cut:用于從文件的每一行中提取部分內容的命令。-f 1&…

Sql server數據庫數據查詢

請查詢學生信息表的所有記錄。 答:查詢所需的代碼如下: USE 學生管理數據庫 GO SELECT * FROM 學生信息表 執行結果如下: 查詢學生的學號、姓名和性別。 答:查詢所需的代碼如下: USE 學生管理數據庫 GO SELE…

為什么需要 Kubernetes,它能做什么?

傳統部署時代: 早期,各個組織是在物理服務器上運行應用程序。 由于無法限制在物理服務器中運行的應用程序資源使用,因此會導致資源分配問題。 例如,如果在同一臺物理服務器上運行多個應用程序, 則可能會出現一個應用程…

【QED】高昂的貓 Ⅰ

目錄 題目背景題目描述輸入格式輸出格式 測試樣例樣例說明數據范圍 思路核心代碼 題目背景 這是小橘。因為它總是看起來很高傲,所以人送外號“高昂的貓”。 題目描述 "錒狗"的房間里放著 n n n ( 1 ≤ n ≤ 1 0 9 ) (1 \leq n \leq 10^9) (1≤n≤109)個…

C# 使用CancellationTokenSource 取消Task執行

寫在前面 在Task創建并執行后,如果狀態發生了變化,需要取消正在執行中的Task,除了使用主線程上的共享變量來判斷之外,更優雅的方式就是就是用CancellationTokenSource來取消任務的執行。 代碼實現 public static void CancelTas…

主流MQ [Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ]

主流MQ [Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ] 一,MQ對比圖 下面是 Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ 的更詳細和專業的對比: 特性/功能KafkaRabbitMQZeroMQRocketMQActiveMQ語言JavaErlangCJavaJava協議自有協議AMQP自有協…

算法工程師-機器學習面試題總結(6)

目錄 1.Bagging的思想是什么?它是降低偏差還是方差,為什么? 2.可否將RF的基分類模型由決策樹改成線性模型或者knn?為什么? 3.GBDT梯度提升和梯度下降有什么區別和聯系? 4.如何理解Boosting和Bagging&am…

基于ssm高校實驗室管理系統的設計與實現論文

摘 要 互聯網發展至今,無論是其理論還是技術都已經成熟,而且它廣泛參與在社會中的方方面面。它讓信息都可以通過網絡傳播,搭配信息管理工具可以很好地為人們提供服務。針對高校實驗室信息管理混亂,出錯率高,信息安全性…

散列卡片懸停變為整齊列表

效果展示 CSS 知識點 transform 屬性運用 頁面整體布局 <ul><li><div class"box"><img src"./user1.jpg" /><div class"content"><h4>Hamidah</h4><p>commented on your photo.<br />…

Excel 數據處理記錄

20231203 excel中的字符串以符號間隔開了&#xff0c;如何將其中的字符串挑出&#xff0c;分別放到其他單元列&#xff1a; 在Excel中打開你的表格&#xff0c;選中包含以符號間隔的字符串的單元格。在頂部菜單中&#xff0c;找到“數據”選項&#xff0c;并選擇“分列”。在…

電腦主板支持的cpu型號匯總

一、如何選擇不同的主板和對應CPU 1、看針腳&#xff1a;網上有相應的參數&#xff0c;只要CPU能安裝到主板中&#xff0c;基本就兼容&#xff0c;這主要取決CPU插槽和主板插槽十分一致。 2、看型號&#xff1a;桌面處理器&#xff0c;只有Intel和AMD兩大平臺&#xff0c;他們對…

dlib是什么?

dlib C Libraryhttp://dlib.net/ dlib是什么&#xff1f; Dlib is a modern C toolkit containing machine learning algorithms and tools for creating complex software in C to solve real world problems. It is used in both industry and academia in a wide range of…

基于SSM的高校共享單車管理系統的設計與實現論文

摘 要 網絡技術和計算機技術發展至今&#xff0c;已經擁有了深厚的理論基礎&#xff0c;并在現實中進行了充分運用&#xff0c;尤其是基于計算機運行的軟件更是受到各界的關注。加上現在人們已經步入信息時代&#xff0c;所以對于信息的宣傳和管理就很關鍵。因此高校單車租賃信…

二百一十、Hive——Flume采集的JSON數據文件寫入Hive的ODS層表后字段的數據殘缺

一、目的 在用Flume把Kafka的數據采集寫入Hive的ODS層表的HDFS文件路徑后&#xff0c;發現HDFS文件中沒問題&#xff0c;但是ODS層表中字段的數據卻有問題&#xff0c;字段中的JSON數據不全 二、Hive處理JSON數據方式 &#xff08;一&#xff09;將Flume采集Kafka的JSON數據…

【華為OD題庫-075】拼接URL-Java

題目 題目描述: 給定一個url前綴和url后綴,通過,分割。需要將其連接為一個完整的url。 如果前綴結尾和后綴開頭都沒有/&#xff0c;需要自動補上/連接符 如果前綴結尾和后綴開頭都為/&#xff0c;需要自動去重 約束:不用考慮前后綴URL不合法情況 輸入描述: url前綴(一個長度小于…

49.Go避免大量并發訪問DB、避免緩存擊穿、緩存穿透、緩存雪崩以及使用延遲雙刪保證數據一致性

文章目錄 一、在高并發下&#xff0c;如何避免大量請求直接訪問數據庫&#xff1f;二、避免緩存擊穿二、避免緩存穿透三、避免緩存雪崩四、延遲雙刪保證數據一致性五、在使用 Go 的 time.AfterFunc 函數時&#xff0c;如果刪除緩存操作失敗怎么辦&#xff1f; MySQL和 Redis是…

vue自定義指令實現按鈕只允許點擊一次

vue自定義指令實現按鈕只允許點擊一次 vue自定義指令實現按鈕只允許點擊一次 這個例子中創建了一個名為 click-once 的自定義指令&#xff0c;通過 bind 鉤子函數給元素綁定了一個點擊事件&#xff0c;并且利用一個變量 clicked 控制了按鈕只能點擊一次的行為。在點擊后會執行傳…

【ITK庫學習】使用itk庫進行圖像濾波ImageFilter:Voting濾波器

目錄 1、itkVotingBinaryImageFilter2、itkVotingBinaryHoleFillingImageFilter 洞穴充填濾波器3、itkVotingBinaryIterativeHoleFillingImageFilter4、itkLabelVotingImageFilter 1、itkVotingBinaryImageFilter 該類是一個基類&#xff0c;用于根據前景和背景像素的鄰域投票…

【數據結構實踐課設】新生報道注冊管理信息系統

目錄 1.主要框架 2.寫入文件 3.讀取文件 4.注冊學生信息 5.增加學生信息 6.刪除學生信息 7.按姓名查詢 8.按班級查詢 9.按專業查詢 10.打印學生信息 11.完整代碼 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高興與大家相識&#xff0c;希望我的博客能對你有所…