在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

教大家如何處理x86處理器中MSI-X中斷請求

TLOc_gh_3394704 ? 來源:博客 ? 作者:sailing ? 2021-08-12 11:23 ? 次閱讀

x86處理器如何處理MSI-X中斷請求PCIe設備發出MSI-X中斷請求的方法與發出MSI中斷請求的方法類似,都是向Message Address所在的地址寫Message Data字段包含的數據。

只是MSI-X中斷機制為了支持更多的中斷請求,在MSI-X Capablity結構中存放了一個指向一組Message Address和 Message Data字段的指針,從而一個PCIe設備可以支持的MSI-X中斷請求數目大于32個,而且并不要求中斷向量號連續。

MSI-X機制使用的這組Message Address和 Message Data字段存放在PCIe設備的BAR空間中,而不是在PCIe設備的配置空間中,從而可以由用戶決定使用MSI-X中斷請求的數目。

當系統軟件初始化PCIe設備時,如果該PCIe設備使用MSI-X機制傳遞中斷請求,需要對MSI-X Capability結構指向的Message Address和Message Data字段進行設置,并使能MSI-X Enable位。x86處理器在此處的實現與PowerPC處理器有較大的不同。

Message Address字段和Message Data字段的格式

在x86處理器系統中,PCIe設備也是通過向Message Address寫入Message Data指定的數值實現MSI/MSI-X機制。在x86處理器系統中,PCIe設備使用的Message Adress字段和Message Data字段與PowerPC處理器不同。

1 PCIe設備使用Message Adress字段

在x86處理器系統中,PCIe設備使用的Message Address字段仍然保存PCI總線域的地址。

其中第31~20位,存放FSB Interrupts存儲器空間的基地址,其值為0xFEE。當PCIe設備對0xFEEX-XXXX這段“PCI總線域”的地址空間進行寫操作時,MCH/ICH將會首先進行“PCI總線域”到“存儲器域”的地址轉換,之后將這個寫操作翻譯為FSB總線的Interrupt Message總線事務,從而向CPU內核提交中斷請求。

x86處理器使用FSB Interrupt Message總線事務轉發MSI/MSI-X中斷請求。使用這種方法的優點是向CPU內核提交中斷請求的同時,提交PCIe設備使用的中斷向量,從而CPU不需要使用中斷響應周期從寄存器中獲得中斷向量。FSB Interrupt Message總線事務的詳細說明見下文。

Message Address字段其他位的含義如下所示。

?Destination ID字段保存目標CPU的ID號,目標CPU的ID與該字段相等時,目標CPU將接收這個Interrupt Message。FSB Interrupt Message總線事務可以向不同的CPU提交中斷請求。

?RH(Redirection Hint Indication)位為0時,表示Interrupt Message將直接發向與Destination ID字段相同的目標CPU;如果RH為1時,將使能中斷轉發功能。

?DM(Destination Mode)位表示在傳遞優先權最低的中斷請求時,Destination ID字段是否被翻譯為Logical或者Physical APIC ID。在x86處理器中APIC ID有三種模式,分別為Physical、Logical和Cluster ID模式。

?如果RH位為1且DM位為0時,Destination ID字段使用Physical模式;如果RH位為1且DM位為1,Destination ID字段使用Logical模式;如果RH位為0,DM位將被忽略。

以上這些字段的描述與x86處理器使用的APIC中斷控制器相關。對APIC的詳細說明超出了本書的范圍,對此部分感興趣的讀者請參閱Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide, Part 1。

2 Message Data字段

Trigger Mode字段為0b0x時,PCIe設備使用邊沿觸發方式申請中斷;為0b10時使用低電平觸發方式;為0b11時使用高電平觸發方式。

MSI/MSI-X中斷請求使用邊沿觸發方式,但是FSB Interrupt Message總線事務還支持Legacy INTx中斷請求方式,因此在Message Data字段中仍然支持電平觸發方式。但是對于PCIe設備而言,該字段為0b0x。

Vector字段表示這個中斷請求使用的中斷向量。FSB Interrupt Message總線事務在提交中斷請求的同時,將中斷向量也通知給處理器。

因此使用FSB Interrupt Message總線事務時,處理器不需要使用中斷響應周期通過讀取中斷控制器獲得中斷向量號。與PowerPC的傳統方式相比,x86處理器的這種中斷請求的效率較高[①]。

值得注意的是,在x86處理器中,MSI機制使用的Message Data字段與MSI-X機制相同。但是當一個PCIe設備支持多個MSI中斷請求時,其Message Data字段必須是連續的,因而其使用的Vector字段也必須是連續的,這也是在x86處理器系統中,PCIe設備支持多個MSI中斷請求的問題所在,而使用MSI-X機制有效避免了該問題。

Delivery Mode字段表示如何處理來自PCIe設備的中斷請求。

?該字段為0b000時,表示使用“Fixed Mode”方式。此時這個中斷請求將被Destination ID字段指定的CPU處理。

?該字段為0b001時,表示使用“Lowest Priority”方式。此時這個中斷請求將被優先權最低的CPU處理。

當使用“Fixed Mode”和“Lowest Priority”方式時,如果Vector字段有效,CPU接收到這個中斷請求之后,將使用Vector字段指定的中斷向量處理這些中斷請求;而當Delivery Mode字段為其他值時,Message Data字段中所包含的Vector字段無效。

?該字段為0b010時,表示使用SMI方式傳遞中斷請求,而且必須使用邊沿觸發,此時Vector字段必須為0。這個中斷請求將被Destination ID字段指定的CPU處理。

?該字段為0b100時,表示使用NMI方式傳遞中斷請求,而且必須使用邊沿觸發,此時Vector字段和Trigger字段的內容將被忽略。這個中斷請求將被Destination ID字段指定的CPU處理。

?該字段為0b101時,表示使用INIT方式傳遞中斷請求,Vector字段和Trigger字段的內容將被忽略。這個中斷請求將被Destination ID字段指定的CPU處理。

?該字段為0b111時,表示使用INTR信號傳遞中斷請求且使用邊沿觸發。此時MSI中斷信息首先傳遞給中斷控制器,然后中斷控制器在通過INTR信號向CPU傳遞中斷請求,之后CPU在通過中斷響應周期獲得中斷向量。

上文中PowerPC處理器使用的方法與此方法類似。而在x86處理器中多使用Interrupt Message總線事務進行MSI中斷信息的傳遞,因此這種模式很少被使用。

邊沿觸發和電平觸發是中斷請求常用的兩種方式。其中電平觸發指外部設備使用邏輯電平1(高電平觸發)或者0(低電平觸發),提交中斷請求。使用電平或者邊沿方式提交中斷請求時,外部設備一般通過中斷線(IRQ_PIN#)與中斷控制器相連,其中多個外部設備可能通過相同的中斷線與中斷控制器相連(線與或者與門)。

外部設備在使用低電平觸發,提交中斷請求的過程中,首先需要將IRQ_PIN#信號驅動為低。當中斷控制器將該中斷請求提交給處理器,而且處理器將這個中斷請求處理完畢后,處理器將通過寫外部設備的某個寄存器來清除此中斷源,此時外部設備將不再驅動IRQ_PIN#信號線,從而結束整個中斷請求。

IRQ_PIN#信號線可以被多個外部設備共享,在這種情況之下,只有所有外部設備都不驅動IRQ_PIN#信號線時,IRQ_PIN#信號才為高電平。

采用電平觸發方式進行中斷請求的優點是不會丟失中斷請求,而缺點是一個優先權較高的中斷請求有可能會長期占用中斷資源,從而使其他優先權較低的中斷不能被及時提交。因為優先級別較高的中斷源有可能會持續不斷地驅動IRQ_PIN#信號。

而邊沿觸發使用上升沿(0到1)或者下降沿(1到0)作為觸發條件,但是中斷控制器并不是使用這個“邊沿”作為觸發條件。

中斷控制器使用內部時鐘對IRQ_PIN#信號進行采樣,如果在前一個時鐘周期,IRQ_PIN#信號為0,而后一個時鐘周期,IRQ_PIN#信號為1,中斷控制器認為外部設備提交了一個有效“上升沿”,中斷控制器會鎖定這個“上升沿”并向處理器發出中斷請求。

這也是外部設備至少需要將IRQ_PIN#信號保持一個時鐘采樣周期的原因,否則中斷控制器可能無法識別本次邊沿觸發的中斷請求,從而產生Spurious中斷請求。

外部設備使用“上升沿”進行中斷申請時,不需要持續地將IRQ_PIN#信號驅動為1,而只需要保證中斷控制器可以進行正確采樣這些中斷信號即可。在處理邊沿觸發中斷請求時,處理器不需要清除中斷源。

使用邊沿觸發可以有效避免“優先級別”較高的中斷源長期占用IRQ_PIN#信號的情況,使用“下降沿”觸發進行中斷請求與“上升沿”觸發類似。

但是外部設備使用邊沿觸發方式時,有可能會丟失一些中斷請求。例如在一個處理器系統中,存在一個定時器,這個定時器使用上升沿觸發方式向中斷控制器定時提交中斷。

如果當處理器正在處理這個定時器的上一個中斷請求時,將不會處理這個定時器發出的其他“邊沿”中斷請求,從而導致中斷丟失。而使用電平觸發方式不會出現這類問題,因為電平觸發方式是一個“持續”過程,處理器只有處理完畢當前中斷,并清除相應中斷源之后,才會處理下一個中斷源。

MSI中斷請求實際上和邊沿觸發方式非常類似,MSI中斷請求通過存儲器寫TLP實現,這個寫動作是一個瞬間的動作,并不是一個持續請求,因此在x86處理器中MSI中斷請求使用邊沿觸發進行中斷請求。

還有一些外部設備可以通過I/O APIC進行中斷請求[②],這些I/O APIC接收的外部中斷需要標明是使用邊沿或者電平觸發,I/O APIC使用FSB Interrupt Message總線事務將中斷請求發向Local APIC,并由Local APIC向處理器提交中斷請求。

FSB Interrupt Message總線事務

與MPC8572處理器處理MSI中斷請求不同,x86處理器使用FSB的Interrupt Message總線事務,處理PCIe設備的MSI/MSI-X中斷請求。

由上文所示,MPC8572處理器處理MSI中斷請求時,首先由MPIC中斷控制器截獲這個MSI中斷請求,之后由MPIC中斷控制器向CPU提交中斷請求,而CPU通過中斷響應周期從MPIC中斷控制器的ACK寄存器中獲得中斷向量。

采用這種方式的主要問題是,當一個處理器中存在多個CPU時,這些CPU都需要通過中斷響應周期從MPIC中斷控制器的ACK寄存器中獲得中斷向量。在一個中斷較為密集的應用中,ACK寄存器很可能會成為系統瓶頸。

而采用Interrupt Message總線事務可以有效地避免這種系統瓶頸,因為使用這種方式中斷信息和中斷向量將同時到達指定的CPU,而不需要使用中斷響應周期獲得中斷向量。

x86處理器也具有通過中斷控制器提交MSI/MSI-X中斷請求的方法,在I/O APIC具有一個 “The IRQ Pin Assertion Register”寄存器,該寄存器地址為0xFEC00020[③],其第4~0位存放IRQ Number。系統軟件可以將PCIe設備的Message Address寄存器設置為0xFEC00020,將Meaasge Data寄存器設置為相應的IRQ Number。

當PCIe設備需要提交MSI中斷請求時,將向PCI總線域的0xFEC00020地址寫入Message Data寄存器中的數據。此時這個存儲器寫請求將數據寫入I/O APIC的The IRQ Pin Assertion Register中,并由I/O APIC將這個MSI中斷請求最終發向Local APIC,之后再由Local APIC通過INTR#信號向CPU提交中斷請求。

上述步驟與MPC8572處理器傳遞MSI中斷的方法類似。在x86處理器中,這種方式基本上已被棄用。說明x86處理器如何使用FSB總線的Interrupt Message總線事務,向CPU提交MSI/MSI-X中斷請求。

PCIe設備在發送MSI/MSI-X中斷請求之前,系統軟件需要合理設置PCIe設備MSI/MSI-X Capability寄存器,使Message Address寄存器的值為0xFEExx00y[④],同時合理地設置Message Data寄存器Vector字段。

PCIe設備提交MSI/MSI-X中斷請求時,需要向0xFEExx00y地址寫Message Data寄存器中包含的數據,并以存儲器寫TLP的形式發送到RC。如果ICH收到這個存儲器寫TLP時,將通過DMI接口將這個TLP提交到MCH。

MCH收到這個TLP后,發現這個TLP的目的地址在FSB Interrupts存儲器空間中,則將PCIe總線的存儲器寫請求轉換為Interrupt Message總線事務,并在FSB總線上廣播。

FSB總線上的CPU,根據APIC ID信息,選擇是否接收這個Interrupt Message總線事務,并進入中斷狀態,之后該CPU將直接從這個總線事務中獲得中斷向量號,執行相應的中斷服務例程,而不需要從APIC中斷控制器獲得中斷向量。與PowerPC處理器的MPIC中斷控制器相比,這種方法更具優勢。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 處理器
    +關注

    關注

    68

    文章

    19440

    瀏覽量

    231321
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10911

    瀏覽量

    213150
  • APIC
    +關注

    關注

    0

    文章

    4

    瀏覽量

    7269

原文標題:x86處理器如何處理MSI-X中斷請求

文章出處:【微信號:gh_339470469b7d,微信公眾號:FPGA與數據通信】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    海光國產x86處理器未來可能會在芯國際生產

    海光方面對國產X86處理器一直比較低調,沒有透露是哪家晶圓廠生產的,不過這個問題也不算復雜,AMD的第一代Zen處理器使用的是格芯的工藝。因此不難猜測。
    的頭像 發表于 06-27 16:13 ?1.3w次閱讀

    國產X86處理器與國際CPU有多大差距?有人做了個測試

    國產處理器何時能夠達到世界領先水平?這個問題幾乎是每一個關心國產半導體的人都在期待的,尤其是國產的X86處理器。
    的頭像 發表于 02-04 11:35 ?8099次閱讀

    PCIe設備發出MSI-X中斷請求的方法

    x86處理器何處理MSI-X中斷請求PCIe設備發出MSI-X
    發表于 02-16 06:36

    政務辦公標準配置:兆芯國產X86處理器

    目前,聯想開天M6100臺式機和昭陽CF03商用筆記本電腦成功入圍上海市政采購目錄并邁向大規模推廣應用,這兩款電腦的共同之處在于都采用了具有自主國產芯的兆芯X86通用處理器。那么讓人不禁發問,兆芯X86
    發表于 07-27 10:56 ?2167次閱讀

    獲Zen架構授權,國產X86處理器即將問世

    國內的處理器廠商在MIPS、ARM及Alpha等架構上搞的還可以,但在桌面市場上,因為Wintel聯盟的門檻限制,沒有X86處理器是玩不轉的。
    發表于 06-12 14:27 ?1718次閱讀

    國產x86處理器已開啟生產,或將擺脫對海外的依賴?

    由芯片制造商海光(Hygon)負責制造的中國國產Dhyana(禪定)x86處理器開始啟動生產。值得注意的是,這款芯片是根據AMD Zen微架構開發的。AMD將x86的IP授權給中國合作伙伴,Dhyana正是合作的結果。
    發表于 07-09 15:48 ?1402次閱讀

    國產x86處理器發布,該芯片依據AMD Zen微架構開發

    北京時間7月9日上午消息,由芯片制造商海光(Hygon)負責制造的中國國產Dhyana(禪定)x86處理器開始啟動生產。
    的頭像 發表于 07-13 13:34 ?4772次閱讀

    全球首款集成AI協處理器x86處理器實照公布 采用LGA觸點式封裝方式

    2019年11月,在通用x86處理器領域沉寂多年的威盛(VIA)高調歸來,旗下已有24年歷史的處理器研發部門CenTaur開發出了世界上第一個集成AI協處理器
    的頭像 發表于 02-19 15:15 ?2830次閱讀

    蘋果M1嚴重威脅x86處理器,關鍵因素在于錢

    最近一段時間,隨著配備M1處理器的Mac電腦上市,大部分人都被M1的性能給震撼了,此前幾乎沒有人能想到ARM架構性能也可以正面威脅高端x86處理器了。
    的頭像 發表于 11-23 10:46 ?1900次閱讀

    簡述MSIMSI-X中斷機制

    中斷請求機制,而可以不支持INTx中斷消息。 在PCIe總線MSIMSI-X中斷機制使用存
    的頭像 發表于 08-10 17:54 ?5949次閱讀

    x86處理器何處理MSI-X中斷請求

    x86處理器何處理MSI-X中斷請求PCIe設備發出MSI-X
    發表于 12-17 18:28 ?9次下載
    <b class='flag-5'>x86</b><b class='flag-5'>處理器</b>如<b class='flag-5'>何處理</b><b class='flag-5'>MSI-X</b><b class='flag-5'>中斷請求</b>

    Cortex-M0處理器中斷請求形式:電平觸發和脈沖輸入

    Cortex-M0處理器允許兩種形式的中斷請求:電平觸發和脈沖輸入。
    的頭像 發表于 05-13 12:05 ?1852次閱讀

    AMD Q4季度移動處理器x86處理器份額已超三成

    AMD 2022年第四季度在包括桌面處理器,移動處理器和服務處理器x86處理器整體市場當中的
    發表于 02-13 10:56 ?388次閱讀

    英特爾x86處理器市占率為68.7%,AMD則上升至31.3%

    雖然英特爾依然穩居x86處理器市場龍頭寶座,近年來卻被AMD搶走部分市占率。Mercury Research數據顯示,去年Q4,英特爾在x86處理器市場的市占率為68.7%,AMD則上
    發表于 02-14 10:28 ?1312次閱讀

    INT8量子化PyTorch x86處理器

    INT8量子化PyTorch x86處理器
    的頭像 發表于 08-31 14:27 ?955次閱讀
    INT8量子化PyTorch <b class='flag-5'>x86</b><b class='flag-5'>處理器</b>
    主站蜘蛛池模板: 在线观看不卡一区 | 宅男午夜视频在线观看 | 国产一区二区三区在线观看视频 | 日韩视频高清 | 男人天堂伊人网 | 狠狠的干狠狠的操 | 天天综合色一区二区三区 | 日韩欧免费一区二区三区 | 日本精品一在线观看视频 | 欧美一级欧美三级在线 | 琪琪see色原网一区二区 | 禁h粗大太大好爽好涨受不了了 | 天天干天天干天天天天天天爽 | 啪啪啦资源站永久 | 黄色片啪啪 | 日本又粗又长一进一出抽搐 | 网站色| 午夜精品一区二区三区在线观看 | 完整日本特级毛片 | 久久人人澡 | 天天色天天爽 | 黑人一区二区三区中文字幕 | 日本a级特黄三级三级三级 日本边添边爱边摸边做边爱 | 小视频国产 | 黄网在线观看免费 | 精品国产一二三区 | 婷婷综合在线观看丁香 | 不卡一级毛片免费高清 | 国产一级爱c片免费播放 | 日干夜操 | 天天性综合 | 人色网 | 久久久久琪琪免费影院 | 黄色大片a级 | 999影院成 人在线影院 | 日本加勒比视频在线观看 | 亚洲不卡在线播放 | 免费看大黄 | 欧美一级做一级做片性十三 | 免费一级毛片正在播放 | 国产午夜免费视频 |