色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

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

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

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

當(dāng)系統(tǒng)軟件初始化PCIe設(shè)備時,如果該PCIe設(shè)備使用MSI-X機制傳遞中斷請求,需要對MSI-X Capability結(jié)構(gòu)指向的Message Address和Message Data字段進行設(shè)置,并使能MSI-X Enable位。x86處理器在此處的實現(xiàn)與PowerPC處理器有較大的不同。

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

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

1 PCIe設(shè)備使用Message Adress字段

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

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

x86處理器使用FSB Interrupt Message總線事務(wù)轉(zhuǎn)發(fā)MSI/MSI-X中斷請求。使用這種方法的優(yōu)點是向CPU內(nèi)核提交中斷請求的同時,提交PCIe設(shè)備使用的中斷向量,從而CPU不需要使用中斷響應(yīng)周期從寄存器中獲得中斷向量。FSB Interrupt Message總線事務(wù)的詳細(xì)說明見下文。

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

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

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

?DM(Destination Mode)位表示在傳遞優(yōu)先權(quán)最低的中斷請求時,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中斷控制器相關(guān)。對APIC的詳細(xì)說明超出了本書的范圍,對此部分感興趣的讀者請參閱Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide, Part 1。

2 Message Data字段

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

FSB Interrupt Message總線事務(wù)

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

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

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

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

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

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

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

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

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

MCH收到這個TLP后,發(fā)現(xiàn)這個TLP的目的地址在FSB Interrupts存儲器空間中,則將PCIe總線的存儲器寫請求轉(zhuǎn)換為Interrupt Message總線事務(wù),并在FSB總線上廣播。

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

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19259

    瀏覽量

    229653
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10854

    瀏覽量

    211589
  • APIC
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    7250

原文標(biāo)題:x86處理器如何處理MSI-X中斷請求

文章出處:【微信號:gh_339470469b7d,微信公眾號:FPGA與數(shù)據(jù)通信】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    海光國產(chǎn)x86處理器未來可能會在芯國際生產(chǎn)

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

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

    國產(chǎn)處理器何時能夠達到世界領(lǐng)先水平?這個問題幾乎是每一個關(guān)心國產(chǎn)半導(dǎo)體的人都在期待的,尤其是國產(chǎn)的X86處理器
    的頭像 發(fā)表于 02-04 11:35 ?7944次閱讀

    PCIe設(shè)備發(fā)出MSI-X中斷請求的方法

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

    政務(wù)辦公標(biāo)準(zhǔn)配置:兆芯國產(chǎn)X86處理器

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

    獲Zen架構(gòu)授權(quán),國產(chǎn)X86處理器即將問世

    國內(nèi)的處理器廠商在MIPS、ARM及Alpha等架構(gòu)上搞的還可以,但在桌面市場上,因為Wintel聯(lián)盟的門檻限制,沒有X86處理器是玩不轉(zhuǎn)的。
    發(fā)表于 06-12 14:27 ?1649次閱讀

    國產(chǎn)x86處理器已開啟生產(chǎn),或?qū)[脫對海外的依賴?

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

    國產(chǎn)x86處理器發(fā)布,該芯片依據(jù)AMD Zen微架構(gòu)開發(fā)

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

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

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

    蘋果M1嚴(yán)重威脅x86處理器,關(guān)鍵因素在于錢

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

    簡述MSIMSI-X中斷機制

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

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

    x86處理器何處理MSI-X中斷請求PCIe設(shè)備發(fā)出MSI-X
    發(fā)表于 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處理器中斷請求形式:電平觸發(fā)和脈沖輸入

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

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

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

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

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

    INT8量子化PyTorch x86處理器

    INT8量子化PyTorch x86處理器
    的頭像 發(fā)表于 08-31 14:27 ?874次閱讀
    INT8量子化PyTorch <b class='flag-5'>x86</b><b class='flag-5'>處理器</b>
    主站蜘蛛池模板: 午夜国产精品视频| 国产色精品VR一区二区| 国产麻豆福利AV在线观看| 精品一区二区三区免费观看 | 巨大乳hdbbw| 日韩亚洲中文欧美在线| gogogo在线观看| 吃寂寞寡妇的奶| 精品国产高清自在线看| 欧美日韩北条麻妃一区二区| 校草让我脱了内裤给全班看| 精品久久免费视频| 青青草伊人| 亚洲性夜夜夜色综合网| wwwxx日本| 久久精品视在线观看85| 色欲精品久久人妻AV中文字幕| 夜蒲团之5阳性之教| 大桥未久电影在线| 就去色一色| 亚洲国产精品VA在线看黑人| av天堂网站avtt2017| 好看AV中文字幕在线观看| 日本19xxxx撤尿| 中文字幕成人免费高清在线| 国产精品久久久久影院嫩草| 牛牛自拍国产免费视频| 亚洲无遮挡无码A片在线| 成人欧美尽粗二区三区AV| 久久综合色超碰人人| 亚洲444777KKK在线观看| 宝贝乖女好紧好深好爽老师| 久久久中日AB精品综合| 性春院| 成人公开免费视频| 免费成人小视频| 伊人综合在线22| 国产亚洲精品成人AV久久| 肉肉高潮液体高干文H| 98久久人妻无码精品系列蜜桃 | 含羞草在线免费观看|