[導(dǎo)讀]作者簡介???王柏生??資深技術(shù)專家,先后就職于中科院軟件所、紅旗Linux和百度,現(xiàn)任百度主任架構(gòu)師。在操作系統(tǒng)、虛擬化技術(shù)、分布式系統(tǒng)、云計(jì)算、自動(dòng)駕駛等相關(guān)領(lǐng)域耕耘多年,有著豐富的實(shí)踐經(jīng)驗(yàn)。著有暢銷書《深度探索Linux操作系統(tǒng)》(2013年出版)。謝廣軍??計(jì)算機(jī)專業(yè)博士...
作者簡介
王柏生 資深技術(shù)專家,先后就職于中科院軟件所、紅旗Linux和百度,現(xiàn)任百度主任架構(gòu)師。在操作系統(tǒng)、虛擬化技術(shù)、分布式系統(tǒng)、云計(jì)算、自動(dòng)駕駛等相關(guān)領(lǐng)域耕耘多年,有著豐富的實(shí)踐經(jīng)驗(yàn)。著有暢銷書《深度探索Linux操作系統(tǒng)》(2013年出版)。
謝廣軍 計(jì)算機(jī)專業(yè)博士,畢業(yè)于南開大學(xué)計(jì)算機(jī)系。資深技術(shù)專家,多年的IT行業(yè)工作經(jīng)驗(yàn)?,F(xiàn)擔(dān)任百度智能云副總經(jīng)理,負(fù)責(zé)云計(jì)算相關(guān)產(chǎn)品的研發(fā)。多年來一直從事操作系統(tǒng)、虛擬化技術(shù)、分布式系統(tǒng)、大數(shù)據(jù)、云計(jì)算等相關(guān)領(lǐng)域的研發(fā)工作,實(shí)踐經(jīng)驗(yàn)豐富。
本文內(nèi)容節(jié)選自《深度探索Linux虛擬化技術(shù)》,已獲得機(jī)械工業(yè)出版社華章公司授權(quán)。
歡迎讀者文末留言,閱碼場和機(jī)械工業(yè)出版社華章公司將為每位精彩留言獲獎(jiǎng)用戶奉送該書一本。
中斷是計(jì)算機(jī)系統(tǒng)中非常重要的部分,計(jì)算機(jī)基礎(chǔ)理論書籍往往也會花上很多篇幅討論中斷,但是因?yàn)椴僮飨到y(tǒng)都替開發(fā)人員處理好中斷了,所以除非是系統(tǒng)工程師,否則一般開發(fā)人員對中斷很難有一個(gè)很直觀的認(rèn)識,因此理解如何通過軟件的方式來模擬中斷更是一個(gè)挑戰(zhàn)。
因此,在本章中,我們簡單介紹硬件中斷的基本原理,然后結(jié)合中斷的基本原理討論如何虛擬化中斷芯片。我們從起初IBM PC為單核系統(tǒng)設(shè)計(jì)的PIC(8259A)機(jī)制開始,討論到為多核系統(tǒng)設(shè)計(jì)的APIC,一直到繞開I/O APIC、從設(shè)備直接向LAPIC發(fā)送基于消息的MSI機(jī)制。
中斷芯片可以在用戶空間中模擬,也可以在內(nèi)核空間模擬,但是因?yàn)橹袛嘈酒枰芗睾虶uest以及內(nèi)核中的KVM模塊交互,顯然在內(nèi)核空間模擬更合理,所以KVM在內(nèi)核中實(shí)現(xiàn)中斷芯片的模擬。最后,我們討論了為了提高效率,Intel是如何從硬件層面對虛擬化中斷進(jìn)行支持的,以及KVM是如何使用他們的。
虛擬中斷
在探討Guest模式的CPU處理中斷前,我們首先回顧一下物理CPU是如何響應(yīng)中斷的。當(dāng)操作系統(tǒng)允許CPU響應(yīng)中斷后,每當(dāng)執(zhí)行完一條指令后,CPU都將檢查中斷引腳是否有效,一旦有效,CPU將處理中斷,然后再執(zhí)行下一條指令,如圖3-1所示。
圖1 CPU處理中斷
當(dāng)有中斷需要CPU處理時(shí),中斷芯片將有效連接CPU的INTR引腳,也就是說如果INTR是高電平有效,那么中斷芯片拉高INTR引腳的電平。CPU在執(zhí)行完一條指令后,將檢查INTR引腳。類似的,虛擬中斷也效仿這種機(jī)制,虛擬中斷芯片負(fù)責(zé)將與CPU的INTR引腳相連的“引腳”有效,然后在每次VM entry時(shí),KVM將檢查虛擬中端芯片的INTR“引腳”是否有效。對于軟件虛擬的中斷芯片而言,“引腳”只是一個(gè)變量。如果KVM發(fā)現(xiàn)虛擬中斷芯片有中斷請求,則向VMCS中VM-entry control部分的VM-entry interruption-informationfield字段注入中斷信息,然后Guest模式下的CPU將執(zhí)行Guest系統(tǒng)IDT中對應(yīng)的中斷處理服務(wù),圖3-2為單核系統(tǒng)使用PIC中斷芯片下的虛擬中斷過程。
圖2 基于PIC的虛擬中斷過程
具體步驟如下:
1)虛擬設(shè)備向虛擬中斷芯片PIC發(fā)送中斷請求,虛擬PIC記錄下虛擬設(shè)備的中斷信息。與物理的中斷過程不同,此時(shí)并不會觸發(fā)虛擬PIC芯片的中斷評估邏輯,而是在VM entry時(shí)進(jìn)行。
2)如果虛擬CPU處于睡眠狀態(tài),則喚醒虛擬CPU,即使虛擬CPU對應(yīng)的線程進(jìn)入物理CPU的就緒任務(wù)隊(duì)列,隨時(shí)可以準(zhǔn)備得到運(yùn)行機(jī)會。
3)當(dāng)虛擬CPU開始運(yùn)行時(shí),在其切入Guest前一刻,KVM模塊將檢查虛擬PIC芯片,查看是否有中斷需要處理。此時(shí),KVM將觸發(fā)虛擬PIC芯片的中斷評估邏輯。
4)一旦虛擬中斷芯片計(jì)算出有需要Guest處理的中斷,則將中斷信息注入到VMCS中的字段VM-entry interruption-information。
5)進(jìn)入Guest模式后,CPU將調(diào)用Guest IDT中相應(yīng)的中斷服務(wù)處理中斷。
PIC只能支持單處理器系統(tǒng),對于多處理器系統(tǒng),需要APIC支持。對于虛擬化而言,顯然也需要虛擬相應(yīng)的APIC,但是其本質(zhì)上與PIC基本相同,如圖3-3所示。
圖3 基于APIC的虛擬中斷過程
與單處理器情況相比,多處理器的虛擬中斷主要有2點(diǎn)不同:
1)在多處理器系統(tǒng)下,不同CPU之間需要收發(fā)中斷,因此,每個(gè)CPU分別需要關(guān)聯(lián)一個(gè)獨(dú)立的中斷芯片,這個(gè)中斷芯片稱為LAPIC。LAPIC不僅需要接收CPU之間核間中斷IPI(Inter-Processor Interrupt),還需要接收來自外設(shè)的中斷。外設(shè)的中斷引腳不可能連接到每個(gè)LAPIC上,因此,有一個(gè)統(tǒng)一的I/O APIC芯片負(fù)責(zé)連接外設(shè),如果一個(gè)I/O APIC引腳不夠用,系統(tǒng)中可以使用多個(gè)I/O APIC。LAPIC和I/O APIC都接到中斷總線上,通過總線進(jìn)行通信。所以在虛擬化場景下,需要虛擬LAPIC和I/O APIC兩個(gè)組件。
2)在多處理器情況下,僅僅是喚醒可能在睡眠的虛擬CPU線程還不夠,如果虛擬CPU是在另外一顆物理CPU上運(yùn)行于Guest模式,此時(shí)還需要向其發(fā)送IPI中斷,使目的CPU從Guest模式退出到Host模式,然后下一次VM entry時(shí),進(jìn)行中斷注入。
Guest模式的CPU和虛擬中斷芯片處于兩個(gè)世界,所以處于Guest模式的CPU不能檢查虛擬中斷芯片的引腳,只能在VM entry時(shí)由KVM模塊代為檢查,然后寫入到VMCS。所以,一旦有中斷需要注入,那么處于Guest模式的CPU一定需要VM exit,退出到Host模式,這是一個(gè)很大的開銷。
為了去除VM exit這個(gè)開銷,Intel在硬件層面對中斷虛擬化進(jìn)行了支持。LAPIC使用一個(gè)頁面大小內(nèi)存存儲寄存器,我們知道,當(dāng)Guest訪問LAPIC這些寄存器時(shí),將導(dǎo)致VM exit,但是事實(shí)上,某些訪問LAPIC的這些寄存器,并不需要VMM介入,所以也就無需VM exit,所以Intel實(shí)現(xiàn)了一個(gè)處于Guest模式的這樣的一個(gè)頁面,稱之為virtual-APIC page。除次之外,Intel還在Guest模式下實(shí)現(xiàn)了部分中斷芯片的邏輯,比如中斷評估,我們將其稱之為虛擬中斷邏輯,如圖4所示。
圖4 硬件虛擬化支持下的中斷虛擬化過程
Intel從硬件層面對虛擬化進(jìn)行了支持,實(shí)現(xiàn)了一個(gè)處于Guest模式的用于存儲中斷相關(guān)寄存器的virtual-APIC page。除次之外,Intel還在Guest模式下實(shí)現(xiàn)了部分中斷芯片的邏輯,用于中斷評估和遞交。
在此情況下,只要LAPIC收到中斷,其不必再等待下一次VM entry時(shí),被動(dòng)執(zhí)行中斷評估,而是主動(dòng)向處于Guest模式的CPU告知信息,這個(gè)位置就是posted-interrupt descriptor。如果目標(biāo)CPU處于Guest模式,則通過一個(gè)特殊的核間中斷posted-interrupt notification通知目標(biāo)CPU,從而觸發(fā)虛擬的中斷邏輯,其會在Guest模式下進(jìn)行評估評估并且向虛擬CPU遞交中斷,而無須再通過VM exit/VM entry的方式注入中斷。
在硬件虛擬化的支持下,在Guest模式下有了狀態(tài)和邏輯,就可以模擬很多中斷的行為,比如訪問中斷寄存器、跟蹤中斷的狀態(tài)以及向CPU遞交中斷等。因此,很多中斷行為就無須VMM介入了,從而大大的減少了VM exit的次數(shù)。當(dāng)然有些寫中斷寄存器的操作是具有副作用的,比如通過寫icr寄存器發(fā)送IPI中斷,這時(shí)就需要觸發(fā)VM exit,由本地LAPIC向目標(biāo)LAPIC發(fā)送IPI中斷。
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。
關(guān)鍵字:
驅(qū)動(dòng)電源
在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。
關(guān)鍵字:
工業(yè)電機(jī)
驅(qū)動(dòng)電源
LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...
關(guān)鍵字:
驅(qū)動(dòng)電源
照明系統(tǒng)
散熱
電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...
關(guān)鍵字:
電動(dòng)汽車
新能源
驅(qū)動(dòng)電源
在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...
關(guān)鍵字:
發(fā)光二極管
驅(qū)動(dòng)電源
LED
在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...
關(guān)鍵字:
LED照明技術(shù)
電磁干擾
驅(qū)動(dòng)電源
開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源
關(guān)鍵字:
LED
驅(qū)動(dòng)電源
開關(guān)電源
LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。
關(guān)鍵字:
LED
隧道燈
驅(qū)動(dòng)電源
LED驅(qū)動(dòng)電源在LED照明系統(tǒng)中扮演著至關(guān)重要的角色。由于LED具有節(jié)能、環(huán)保、長壽命等優(yōu)點(diǎn),使得LED照明在各個(gè)領(lǐng)域得到廣泛應(yīng)用。然而,LED的電流、電壓特性需要特定的驅(qū)動(dòng)電源才能正常工作。本文將介紹常用的LED驅(qū)動(dòng)電...
關(guān)鍵字:
LED驅(qū)動(dòng)電源
led照明
LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電源轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。
關(guān)鍵字:
LED
驅(qū)動(dòng)電源
高壓工頻交流
崧盛股份9日發(fā)布投資者關(guān)系活動(dòng)記錄表,就植物照明發(fā)展趨勢、行業(yè)壁壘等問題進(jìn)行分享。植物照明未來市場需求廣闊崧盛股份指出,植物照明將會走向長期產(chǎn)業(yè)領(lǐng)域。主要原因有三:第一,LED植物照明賦能終端種植更具有經(jīng)濟(jì)價(jià)值。由于LE...
關(guān)鍵字:
崧盛股份
驅(qū)動(dòng)電源
在當(dāng)今高度發(fā)展的技術(shù)中,電子產(chǎn)品的升級越來越快,LED燈技術(shù)也在不斷發(fā)展,這使我們的城市變得豐富多彩。 LED驅(qū)動(dòng)電源將電源轉(zhuǎn)換為特定的電壓和電流,以驅(qū)動(dòng)LED發(fā)光。通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流電(即...
關(guān)鍵字:
LED
驅(qū)動(dòng)電源
高壓直流
人類社會的進(jìn)步離不開社會上各行各業(yè)的努力,各種各樣的電子產(chǎn)品的更新?lián)Q代離不開我們的設(shè)計(jì)者的努力,其實(shí)很多人并不會去了解電子產(chǎn)品的組成,比如LED電源。
關(guān)鍵字:
LED
驅(qū)動(dòng)電源
低壓直流
隨著科學(xué)技術(shù)的發(fā)展,LED技術(shù)也在不斷發(fā)展,為我們的生活帶來各種便利,為我們提供各種各樣生活信息,造福著我們?nèi)祟?。LED驅(qū)動(dòng)電源實(shí)際上是一種電源,但是它是一種特定的電源,用于驅(qū)動(dòng)LED發(fā)射帶有電壓或電流的光。 因此,LE...
關(guān)鍵字:
LED
驅(qū)動(dòng)電源
電流
LED燈作為一種新型節(jié)能和無污染光源,由于其特有的發(fā)光照明特性,在現(xiàn)代照明應(yīng)用中發(fā)揮著革命性的作用。作為 LED 照明產(chǎn)業(yè)鏈中最為核心的部件之一,LED 驅(qū)動(dòng)電源的驅(qū)動(dòng)控制技術(shù)所存在的可靠性低、成本高等典型問題一直制約著...
關(guān)鍵字:
多路
LED
驅(qū)動(dòng)電源
隨著社會的快速發(fā)展,LED技術(shù)也在飛速發(fā)展,為我們的城市的燈光煥發(fā)光彩,讓我們的生活越來越有趣,那么你知道LED需要LED驅(qū)動(dòng)電源嗎?那么你知道什么是LED驅(qū)動(dòng)電源嗎?
關(guān)鍵字:
LED
開關(guān)電源
驅(qū)動(dòng)電源
早前有新聞稱,Cree在2018年開始宣布轉(zhuǎn)型高科技半導(dǎo)體領(lǐng)域,并一邊逐漸脫離照明與LED相關(guān)業(yè)務(wù),一邊持續(xù)投資半導(dǎo)體。在今日,Cree宣布與SMART Global Holdings, Inc.達(dá)成最終協(xié)議,擬將LED...
關(guān)鍵字:
cree
led照明