本發(fā)明涉及dpu芯片,具體涉及一種基于dpu芯片的virtio架構(gòu)實(shí)現(xiàn)系統(tǒng)及方法。
背景技術(shù):
1、隨著工業(yè)互聯(lián)網(wǎng)、人工智能、大數(shù)據(jù)、5g等產(chǎn)業(yè)的快速發(fā)展,計(jì)算機(jī)需求呈爆炸式增長,數(shù)據(jù)中心的海量數(shù)據(jù)流動(dòng)驅(qū)動(dòng)網(wǎng)卡的端口速率從10g快速向25g甚至100g及以上演進(jìn),云化基礎(chǔ)設(shè)施平臺(tái)基于cpu完成網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)發(fā)的傳統(tǒng)模式出現(xiàn)瓶頸。因此虛擬化技術(shù)出現(xiàn)在了大眾的視野中,虛擬化是一種將計(jì)算機(jī)資源(如處理器、內(nèi)存、存儲(chǔ)和網(wǎng)絡(luò))抽象化的技術(shù),使得多個(gè)操作系統(tǒng)和應(yīng)用程序可以共享同一臺(tái)物理計(jì)算機(jī)的資源。
2、在完全虛擬化的解決方案中,客戶機(jī)vm要使用底層主機(jī)資源,需要hypervisor來截獲所有的請(qǐng)求指令,然后模擬出這些指令的行為,這樣勢(shì)必會(huì)帶來很多性能上的開銷。半虛擬化通過底層硬件輔助的方式,將部分沒必要虛擬化的指令通過硬件來完成,hypervisor只負(fù)責(zé)完成部分指令的虛擬化,要做到這點(diǎn),需要guest來配合,guest完成不同設(shè)備的前端驅(qū)動(dòng)程序,hypervisor配合guest完成相應(yīng)的后端驅(qū)動(dòng)程序,這樣兩者之間通過某種交互機(jī)制就可以實(shí)現(xiàn)高效的虛擬化過程。
3、由于不同guest前端設(shè)備其工作邏輯大同小異(如塊設(shè)備、網(wǎng)絡(luò)設(shè)備、pci設(shè)備、balloon驅(qū)動(dòng)等),單獨(dú)為每個(gè)設(shè)備定義一套接口實(shí)屬?zèng)]有必要,而且還要考慮擴(kuò)平臺(tái)的兼容性問題,另外,不同后端hypervisor的實(shí)現(xiàn)方式也大同小異(如kvm、xen等),這個(gè)時(shí)候,就需要一套通用框架和標(biāo)準(zhǔn)接口(協(xié)議)來完成兩者之間的交互過程,virtio就是這樣一套標(biāo)準(zhǔn),它極大地解決了這些不通用的問題。但是如果簡單的實(shí)現(xiàn)virtio協(xié)議,hypervisor配合guest過程中仍然會(huì)產(chǎn)生多次中斷請(qǐng)求的開銷,以及無法解決小包快頻的取描述符時(shí)產(chǎn)生的額外巨大開銷。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于提供一種基于dpu芯片的virtio架構(gòu)實(shí)現(xiàn)系統(tǒng)及方法,解決了現(xiàn)有技術(shù)主機(jī)與vmm(virtual?machine?monitor,虛擬機(jī))交互時(shí)產(chǎn)生開銷較大的問題。
2、本發(fā)明通過下述技術(shù)方案實(shí)現(xiàn):
3、一方面,本發(fā)明提供一種基于dpu芯片的virtio架構(gòu)實(shí)現(xiàn)系統(tǒng),包括主機(jī)、網(wǎng)絡(luò)處理器、virtio引擎以及virtio列隊(duì)組件;
4、所述主機(jī),用于產(chǎn)生一個(gè)或者多個(gè)數(shù)據(jù)發(fā)生請(qǐng)求,并根據(jù)所述數(shù)據(jù)發(fā)生請(qǐng)求通知網(wǎng)絡(luò)處理器;
5、所述網(wǎng)絡(luò)處理器,用于以所述數(shù)據(jù)發(fā)生請(qǐng)求為基礎(chǔ),生成取描述符請(qǐng)求,并將所述取描述符請(qǐng)求傳輸至virtio引擎;
6、所述virtio引擎,用于調(diào)度virtio列隊(duì)組件對(duì)所述取描述符請(qǐng)求進(jìn)行解析,得到解析結(jié)果,并根據(jù)所述解析解控控制virtio列隊(duì)組件執(zhí)行取描述符操作,將執(zhí)行取描述符操作得到的目標(biāo)描述符回復(fù)給網(wǎng)絡(luò)處理器;
7、所述virtio列隊(duì)組件,用于接受virtio引擎的調(diào)度,以獲取目標(biāo)描述符。
8、在一中可能的實(shí)施方式中,所述virtio引擎,還用于在將執(zhí)行取描述符操作得到的目標(biāo)描述符回復(fù)給網(wǎng)絡(luò)處理器之后,判斷是否需要執(zhí)行預(yù)取描述符操作,若是,則執(zhí)行預(yù)取描述符操作,并將得到的預(yù)取描述符存儲(chǔ)至virtio引擎的本地mem中,否則結(jié)束此次描述符獲取操作流程。
9、在一中可能的實(shí)施方式中,所述virtio引擎,還用于實(shí)時(shí)判斷是否需要執(zhí)行預(yù)取描述符操作,若是,則執(zhí)行預(yù)取描述符操作,并將得到的預(yù)取描述符存儲(chǔ)至virtio引擎的本地mem中,否則結(jié)束此次描述符獲取操作流程。
10、在一中可能的實(shí)施方式中,判斷是否需要執(zhí)行預(yù)取描述符操作,包括:
11、當(dāng)virtio引擎的本地存儲(chǔ)描述符的剩余內(nèi)存空間大于設(shè)定預(yù)取值或者主機(jī)內(nèi)剩余有效描述符大于設(shè)定值時(shí),確定需要執(zhí)行預(yù)取描述符操作,否則確定不需要執(zhí)行預(yù)取描述符操作。
12、在一中可能的實(shí)施方式中,以所述數(shù)據(jù)發(fā)生請(qǐng)求為基礎(chǔ),生成取描述符請(qǐng)求,并將所述取描述符請(qǐng)求傳輸至virtio引擎,包括:
13、當(dāng)主機(jī)產(chǎn)生數(shù)據(jù)發(fā)生請(qǐng)求時(shí),主機(jī)將數(shù)據(jù)按照virtio協(xié)議規(guī)定,生成描述符,并通知網(wǎng)絡(luò)處理器;
14、網(wǎng)絡(luò)處理器根據(jù)所述數(shù)據(jù)發(fā)生請(qǐng)求對(duì)應(yīng)的通知,生成取描述符請(qǐng)求,并將所述取描述符請(qǐng)求傳輸至virtio引擎,以實(shí)現(xiàn)取描述符操作。
15、在一中可能的實(shí)施方式中,所述virtio列隊(duì)組件包括狀態(tài)機(jī)模塊、取描述符模塊、取數(shù)據(jù)頭模塊以及描述符信息返回模塊;
16、所述狀態(tài)機(jī)模塊,用于接受virtio引擎的調(diào)度,對(duì)所述取描述符請(qǐng)求進(jìn)行解析,得到解析結(jié)果;所述解析結(jié)果包括是否需要取描述符以及待取描述符數(shù)量;
17、所述取描述符模塊,用于根據(jù)所述解析結(jié)果獲取目標(biāo)描述符;
18、所述狀態(tài)機(jī)模塊,還用于判斷是否需要取數(shù)據(jù)頭,若是,則確定需要執(zhí)行取數(shù)據(jù)頭操作,得到目標(biāo)數(shù)據(jù)頭,否則不需要執(zhí)行取數(shù)據(jù)頭操作;
19、所述取數(shù)據(jù)頭模塊,用于當(dāng)需要執(zhí)行取數(shù)據(jù)頭操作時(shí),獲取目標(biāo)數(shù)據(jù)頭;
20、所述描述符信息返回模塊,用于將目標(biāo)描述符以及目標(biāo)數(shù)據(jù)頭反饋給網(wǎng)絡(luò)處理器;
21、其中,所述取描述符模塊、取數(shù)據(jù)頭模塊以及描述符信息返回模塊均接受狀態(tài)機(jī)模塊的調(diào)控。
22、在一中可能的實(shí)施方式中,對(duì)所述取描述符請(qǐng)求進(jìn)行解析,得到解析結(jié)果,包括:
23、對(duì)所述取描述符請(qǐng)求進(jìn)行解析,確定是否需要取描述符以及取描述符的數(shù)量,得到解析結(jié)果。
24、在一中可能的實(shí)施方式中,判斷是否需要取數(shù)據(jù)頭,包括:
25、判斷主機(jī)是否需要發(fā)送數(shù)據(jù),若是,則確定需要取數(shù)據(jù)頭,否則確定不需要取數(shù)據(jù)頭。
26、另一方面,本發(fā)明提供一種基于dpu芯片的virtio架構(gòu)實(shí)現(xiàn)方法,包括:
27、產(chǎn)生一個(gè)或者多個(gè)數(shù)據(jù)發(fā)生請(qǐng)求;
28、以所述數(shù)據(jù)發(fā)生請(qǐng)求為基礎(chǔ),生成取描述符請(qǐng)求,并將所述取描述符請(qǐng)求傳輸至virtio引擎;
29、通過virtio引擎調(diào)度virtio列隊(duì)組件對(duì)所述取描述符請(qǐng)求進(jìn)行解析,得到解析結(jié)果,并根據(jù)所述解析解控控制virtio列隊(duì)組件執(zhí)行取描述符操作,將執(zhí)行取描述符操作得到的目標(biāo)描述符回復(fù)給網(wǎng)絡(luò)處理器。
30、在一中可能的實(shí)施方式中,將執(zhí)行取描述符操作得到的目標(biāo)描述符回復(fù)給網(wǎng)絡(luò)處理器之后,判斷是否需要執(zhí)行預(yù)取描述符操作,若是,則執(zhí)行預(yù)取描述符操作,并將得到的預(yù)取描述符存儲(chǔ)至virtio引擎的本地mem中,否則結(jié)束此次描述符獲取操作流程;
31、或者實(shí)時(shí)判斷是否需要執(zhí)行預(yù)取描述符操作,若是,則執(zhí)行預(yù)取描述符操作,并將得到的預(yù)取描述符存儲(chǔ)至virtio引擎的本地mem中,否則結(jié)束此次描述符獲取操作流程。
32、本發(fā)明提供的一種基于dpu芯片的virtio架構(gòu)實(shí)現(xiàn)系統(tǒng)及方法,通過i/o半虛擬化在dpu芯片上高效的實(shí)現(xiàn)方式,最大限度的減少host與vmm交互時(shí)產(chǎn)生的開銷,更高性價(jià)比實(shí)現(xiàn)網(wǎng)絡(luò)加速效果,通過提出了預(yù)取描述符的技術(shù)方案,能夠降低np等待virtio引擎回復(fù)完成的時(shí)間,進(jìn)一步提高了virtio引擎的工作效率。