本發(fā)明涉及計(jì)算機(jī),特別涉及一種控制數(shù)據(jù)交互方法、裝置、計(jì)算機(jī)程序產(chǎn)品、設(shè)備及介質(zhì)。
背景技術(shù):
1、nvme(non-volatile?memory?express,非易失性?xún)?nèi)存主機(jī)控制器接口規(guī)范)存儲(chǔ)設(shè)備支持兩種類(lèi)型的命令:admin控制命令(administrative?commands)和io命令(input/output?commands,輸入/輸出命令),前者用于設(shè)備控制,后者用于用戶(hù)數(shù)據(jù)存取。圖1是主機(jī)和nvme存儲(chǔ)設(shè)備通信的示例,有些admin控制命令通過(guò)sqe(submission?queue?entry,提交隊(duì)列條目)和cqe(completion?queue?entry,完成隊(duì)列條目)的交互就可以完成對(duì)設(shè)備的控制。有些admin控制命令則需要在sqe和cqe之外額外傳輸控制數(shù)據(jù),具體的,參見(jiàn)圖2所示,圖2為一種主機(jī)、存儲(chǔ)設(shè)備及控制器數(shù)據(jù)交互流程圖,主機(jī)根據(jù)命令類(lèi)型在內(nèi)存中申請(qǐng)固定大小的空間,并將內(nèi)存首地址填入的物理區(qū)域頁(yè)字段,然后將sqe放入提交隊(duì)列;nvme設(shè)備讀取sqe后,通過(guò)直接內(nèi)存訪問(wèn)搬運(yùn)指定大小的控制數(shù)據(jù),完成后生成完成隊(duì)列條目并中斷通知主機(jī)。
2、在nvme協(xié)議中,部分命令需傳輸固定大小的結(jié)構(gòu)化數(shù)據(jù),但主機(jī)通常僅關(guān)注其中少數(shù)字段,導(dǎo)致底層鏈路帶寬資源和主機(jī)內(nèi)存資源的雙重浪費(fèi)。特別是在嵌入式場(chǎng)景下,主機(jī)需要同時(shí)與多個(gè)存儲(chǔ)設(shè)備進(jìn)行數(shù)據(jù)交互,單次并發(fā)交互不僅需要申請(qǐng)大量?jī)?nèi)存,而且在頻繁的數(shù)據(jù)傳輸過(guò)程中,大量冗余數(shù)據(jù)嚴(yán)重占用了鏈路帶寬,導(dǎo)致存儲(chǔ)設(shè)備與主機(jī)之間的數(shù)據(jù)交互效率極為低下。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本發(fā)明的目的在于提供一種控制數(shù)據(jù)交互方法、裝置、計(jì)算機(jī)程序產(chǎn)品、設(shè)備及介質(zhì),能夠提升底層鏈路帶寬的利用率,確保分配的內(nèi)存大小與實(shí)際傳輸數(shù)據(jù)量相符,提高了存儲(chǔ)設(shè)備與主機(jī)之間的數(shù)據(jù)交互效率,其具體方案如下:
2、第一方面,本技術(shù)公開(kāi)了一種控制數(shù)據(jù)交互方法,應(yīng)用于存儲(chǔ)設(shè)備,包括:
3、解析主機(jī)下發(fā)的提交隊(duì)列條目的第一字段,以確定操作命令類(lèi)型;
4、當(dāng)操作命令類(lèi)型為控制命令時(shí),解析提交隊(duì)列條目的第二字段,以獲取數(shù)據(jù)范圍指示信息;其中,數(shù)據(jù)范圍指示信息表示目標(biāo)數(shù)據(jù)在控制數(shù)據(jù)中的范圍信息,控制數(shù)據(jù)為輔助完成控制命令的數(shù)據(jù)集合;
5、根據(jù)數(shù)據(jù)范圍指示信息執(zhí)行控制命令,實(shí)現(xiàn)目標(biāo)數(shù)據(jù)在存儲(chǔ)設(shè)備與主機(jī)的目標(biāo)內(nèi)存之間的傳輸,并生成執(zhí)行結(jié)果;其中,目標(biāo)內(nèi)存通過(guò)主機(jī)基于數(shù)據(jù)范圍指示信息預(yù)先分配得到;
6、將包含執(zhí)行結(jié)果的完成隊(duì)列條目返回至主機(jī)。
7、可選的,第二字段包括傳輸模式字段和地址范圍字段,數(shù)據(jù)范圍指示信息包括傳輸模式參數(shù)和地址范圍參數(shù);其中,傳輸模式字段和傳輸模式參數(shù)相對(duì)應(yīng),地址范圍字段和地址范圍參數(shù)相對(duì)應(yīng)。
8、可選的,傳輸模式參數(shù)包括全量傳輸或部分傳輸,地址范圍參數(shù)包括偏移信息和長(zhǎng)度信息。
9、可選的,根據(jù)數(shù)據(jù)范圍指示信息執(zhí)行控制命令,實(shí)現(xiàn)目標(biāo)數(shù)據(jù)在存儲(chǔ)設(shè)備與主機(jī)的目標(biāo)內(nèi)存之間的傳輸,包括:
10、若數(shù)據(jù)范圍指示信息中的傳輸模式參數(shù)為全量傳輸,則將控制數(shù)據(jù)的全部?jī)?nèi)容確定為目標(biāo)數(shù)據(jù),并執(zhí)行控制命令,實(shí)現(xiàn)目標(biāo)數(shù)據(jù)在存儲(chǔ)設(shè)備與主機(jī)的目標(biāo)內(nèi)存之間的傳輸。
11、可選的,根據(jù)數(shù)據(jù)范圍指示信息執(zhí)行控制命令,實(shí)現(xiàn)目標(biāo)數(shù)據(jù)在存儲(chǔ)設(shè)備與主機(jī)的目標(biāo)內(nèi)存之間的傳輸,包括:
12、若數(shù)據(jù)范圍指示信息中的傳輸模式參數(shù)為部分傳輸,則根據(jù)地址范圍參數(shù)中的偏移信息確定目標(biāo)數(shù)據(jù)的起始位置,根據(jù)地址范圍參數(shù)中的長(zhǎng)度信息確定目標(biāo)數(shù)據(jù)的結(jié)束位置;
13、根據(jù)起始位置和結(jié)束位置從控制數(shù)據(jù)中確定目標(biāo)數(shù)據(jù),并執(zhí)行控制命令,實(shí)現(xiàn)目標(biāo)數(shù)據(jù)在存儲(chǔ)設(shè)備與主機(jī)的目標(biāo)內(nèi)存之間的傳輸。
14、可選的,控制數(shù)據(jù)交互方法,還包括:
15、若傳輸模式字段的取值為第一數(shù)值,則判定傳輸模式參數(shù)為全量傳輸,若傳輸模式字段的取值為第二數(shù)值,則判定傳輸模式參數(shù)為部分傳輸。
16、可選的,控制數(shù)據(jù)交互方法,還包括:
17、基于非易失性?xún)?nèi)存主機(jī)控制器接口規(guī)范協(xié)議,將第一數(shù)值配置為0以及將第二數(shù)值配置為1。
18、可選的,當(dāng)傳輸模式字段的取值為第一數(shù)值,則目標(biāo)內(nèi)存為基于非易失性?xún)?nèi)存主機(jī)控制器接口規(guī)范協(xié)議定義的靜態(tài)分配大小,當(dāng)傳輸模式字段的取值為第二數(shù)值,則目標(biāo)內(nèi)存為基于地址范圍參數(shù)得到的動(dòng)態(tài)分配大小。
19、可選的,根據(jù)數(shù)據(jù)范圍指示信息執(zhí)行控制命令,實(shí)現(xiàn)目標(biāo)數(shù)據(jù)在存儲(chǔ)設(shè)備與主機(jī)的目標(biāo)內(nèi)存之間的傳輸,包括:
20、當(dāng)控制命令表征存儲(chǔ)設(shè)備向主機(jī)傳輸數(shù)據(jù)時(shí),根據(jù)數(shù)據(jù)范圍指示信息從本地存儲(chǔ)的控制數(shù)據(jù)中確定目標(biāo)數(shù)據(jù);
21、將目標(biāo)數(shù)據(jù)傳輸至主機(jī)的目標(biāo)內(nèi)存。
22、可選的,當(dāng)控制命令表征存儲(chǔ)設(shè)備向主機(jī)傳輸數(shù)據(jù)時(shí),控制命令包括狀態(tài)反饋命令與數(shù)據(jù)上報(bào)命令;其中,狀態(tài)反饋命令用于提供存儲(chǔ)設(shè)備的狀態(tài)信息,數(shù)據(jù)上報(bào)命令用于傳輸存儲(chǔ)設(shè)備的運(yùn)行數(shù)據(jù)。
23、可選的,根據(jù)數(shù)據(jù)范圍指示信息執(zhí)行控制命令,實(shí)現(xiàn)目標(biāo)數(shù)據(jù)在存儲(chǔ)設(shè)備與主機(jī)的目標(biāo)內(nèi)存之間的傳輸,包括:
24、當(dāng)控制命令表征主機(jī)向存儲(chǔ)設(shè)備傳輸數(shù)據(jù)時(shí),根據(jù)數(shù)據(jù)范圍指示信息從目標(biāo)內(nèi)存的控制數(shù)據(jù)中確定目標(biāo)數(shù)據(jù);
25、將目標(biāo)數(shù)據(jù)傳輸至存儲(chǔ)設(shè)備的預(yù)設(shè)存儲(chǔ)區(qū)域。
26、可選的,當(dāng)控制命令表征主機(jī)向存儲(chǔ)設(shè)備傳輸數(shù)據(jù)時(shí),控制命令包括狀態(tài)管理命令與參數(shù)配置命令;其中,狀態(tài)管理命令用于調(diào)控存儲(chǔ)設(shè)備的工作狀態(tài),參數(shù)配置命令用于設(shè)置存儲(chǔ)設(shè)備的功能參數(shù)。
27、可選的,存儲(chǔ)設(shè)備包括磁盤(pán)陣列卡以及下掛至磁盤(pán)陣列卡的多個(gè)固態(tài)硬盤(pán)。
28、可選的,控制數(shù)據(jù)交互方法,還包括:
29、當(dāng)同時(shí)存在多個(gè)控制命令,則基于每一控制命令的操作緊急度以及數(shù)據(jù)時(shí)效性確定每一控制命令的優(yōu)先級(jí)評(píng)分;
30、根據(jù)控制命令的提交隊(duì)列條目在提交隊(duì)列中的初始順序,以及控制命令的優(yōu)先級(jí)評(píng)分確定各個(gè)控制命令的實(shí)際執(zhí)行順序。
31、第二方面,本技術(shù)公開(kāi)了一種控制數(shù)據(jù)交互方法,應(yīng)用于主機(jī),包括:
32、生成提交隊(duì)列條目;其中,提交隊(duì)列條目的第一字段包含操作命令類(lèi)型,當(dāng)操作命令類(lèi)型為控制命令時(shí),提交隊(duì)列條目的第二字段包含數(shù)據(jù)范圍指示信息,數(shù)據(jù)范圍指示信息表示目標(biāo)數(shù)據(jù)在控制數(shù)據(jù)中的范圍信息,控制數(shù)據(jù)為輔助完成控制命令的數(shù)據(jù)集合;
33、基于數(shù)據(jù)范圍指示信息預(yù)先分配得到目標(biāo)內(nèi)存;
34、將提交隊(duì)列條目下發(fā)至存儲(chǔ)設(shè)備,以使存儲(chǔ)設(shè)備根據(jù)數(shù)據(jù)范圍指示信息執(zhí)行控制命令,實(shí)現(xiàn)目標(biāo)數(shù)據(jù)在存儲(chǔ)設(shè)備與主機(jī)的目標(biāo)內(nèi)存之間的傳輸,并生成執(zhí)行結(jié)果;
35、接收存儲(chǔ)設(shè)備返回的包含執(zhí)行結(jié)果的完成隊(duì)列條目。
36、第三方面,本技術(shù)公開(kāi)了一種控制數(shù)據(jù)交互裝置,應(yīng)用于存儲(chǔ)設(shè)備,包括:
37、字段解析模塊,用于解析主機(jī)下發(fā)的提交隊(duì)列條目的第一字段,以確定操作命令類(lèi)型;
38、范圍確定模塊,用于當(dāng)操作命令類(lèi)型為控制命令時(shí),解析提交隊(duì)列條目的第二字段,以獲取數(shù)據(jù)范圍指示信息;其中,數(shù)據(jù)范圍指示信息表示目標(biāo)數(shù)據(jù)在控制數(shù)據(jù)中的范圍信息,控制數(shù)據(jù)為輔助完成控制命令的數(shù)據(jù)集合;
39、命令執(zhí)行模塊,用于根據(jù)數(shù)據(jù)范圍指示信息執(zhí)行控制命令,實(shí)現(xiàn)目標(biāo)數(shù)據(jù)在存儲(chǔ)設(shè)備與主機(jī)的目標(biāo)內(nèi)存之間的傳輸,并生成執(zhí)行結(jié)果;其中,目標(biāo)內(nèi)存通過(guò)主機(jī)基于數(shù)據(jù)范圍指示信息預(yù)先分配得到;
40、結(jié)果返回模塊,用于將包含執(zhí)行結(jié)果的完成隊(duì)列條目返回至主機(jī)。
41、第四方面,本技術(shù)公開(kāi)了一種控制數(shù)據(jù)交互裝置,應(yīng)用于主機(jī),包括:
42、條目生成模塊,用于生成提交隊(duì)列條目;其中,提交隊(duì)列條目的第一字段包含操作命令類(lèi)型,當(dāng)操作命令類(lèi)型為控制命令時(shí),提交隊(duì)列條目的第二字段包含數(shù)據(jù)范圍指示信息,數(shù)據(jù)范圍指示信息表示目標(biāo)數(shù)據(jù)在控制數(shù)據(jù)中的范圍信息,控制數(shù)據(jù)為輔助完成控制命令的數(shù)據(jù)集合;
43、內(nèi)存分配模塊,用于基于數(shù)據(jù)范圍指示信息預(yù)先分配得到目標(biāo)內(nèi)存;
44、條目下發(fā)模塊,用于將提交隊(duì)列條目下發(fā)至存儲(chǔ)設(shè)備,以使存儲(chǔ)設(shè)備根據(jù)數(shù)據(jù)范圍指示信息執(zhí)行控制命令,實(shí)現(xiàn)目標(biāo)數(shù)據(jù)在存儲(chǔ)設(shè)備與主機(jī)的目標(biāo)內(nèi)存之間的傳輸,并生成執(zhí)行結(jié)果;
45、結(jié)果接收模塊,用于接收存儲(chǔ)設(shè)備返回的包含執(zhí)行結(jié)果的完成隊(duì)列條目。
46、第五方面,本技術(shù)公開(kāi)了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序/指令,計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)前述的控制數(shù)據(jù)交互方法的步驟。
47、第六方面,本技術(shù)公開(kāi)了一種電子設(shè)備,包括:
48、存儲(chǔ)器,用于保存計(jì)算機(jī)程序;
49、處理器,用于執(zhí)行計(jì)算機(jī)程序,以實(shí)現(xiàn)前述公開(kāi)的控制數(shù)據(jù)交互方法。
50、第七方面,本技術(shù)公開(kāi)了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),用于保存計(jì)算機(jī)程序;其中,計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)前述公開(kāi)的控制數(shù)據(jù)交互方法。
51、可見(jiàn),本技術(shù)提出一種控制數(shù)據(jù)交互方法,應(yīng)用于存儲(chǔ)設(shè)備,包括:解析主機(jī)下發(fā)的提交隊(duì)列條目的第一字段,以確定操作命令類(lèi)型;當(dāng)操作命令類(lèi)型為控制命令時(shí),解析提交隊(duì)列條目的第二字段,以獲取數(shù)據(jù)范圍指示信息;其中,數(shù)據(jù)范圍指示信息表示目標(biāo)數(shù)據(jù)在控制數(shù)據(jù)中的范圍信息,控制數(shù)據(jù)為輔助完成控制命令的數(shù)據(jù)集合;根據(jù)數(shù)據(jù)范圍指示信息執(zhí)行控制命令,實(shí)現(xiàn)目標(biāo)數(shù)據(jù)在存儲(chǔ)設(shè)備與主機(jī)的目標(biāo)內(nèi)存之間的傳輸,并生成執(zhí)行結(jié)果;其中,目標(biāo)內(nèi)存通過(guò)主機(jī)基于數(shù)據(jù)范圍指示信息預(yù)先分配得到;將包含執(zhí)行結(jié)果的完成隊(duì)列條目返回至主機(jī)。
52、有益效果:本技術(shù)提出的控制數(shù)據(jù)交互方法中,存儲(chǔ)設(shè)備首先解析主機(jī)下發(fā)的提交隊(duì)列條目的第一字段,以確定操作命令類(lèi)型。當(dāng)識(shí)別出該命令為控制命令時(shí),進(jìn)一步解析第二字段以獲取數(shù)據(jù)范圍指示信息。該數(shù)據(jù)范圍指示信息精確界定了目標(biāo)數(shù)據(jù)在控制數(shù)據(jù)集合中的位置和范圍,使得主機(jī)能夠基于此信息預(yù)先分配大小精確匹配的目標(biāo)內(nèi)存。隨后,存儲(chǔ)設(shè)備根據(jù)該數(shù)據(jù)范圍指示信息,在存儲(chǔ)設(shè)備與主機(jī)預(yù)分配的目標(biāo)內(nèi)存之間實(shí)現(xiàn)目標(biāo)數(shù)據(jù)的精準(zhǔn)傳輸,并在完成傳輸后生成相應(yīng)的執(zhí)行結(jié)果。也就是說(shuō),主機(jī)在構(gòu)造控制命令時(shí)會(huì)嵌入數(shù)據(jù)范圍指示信息,并據(jù)此申請(qǐng)大小與數(shù)據(jù)范圍指示信息匹配的目標(biāo)內(nèi)存。存儲(chǔ)設(shè)備在接收到命令后,通過(guò)解析該數(shù)據(jù)范圍指示信息,能夠精準(zhǔn)定位控制數(shù)據(jù)中主機(jī)實(shí)際需要的目標(biāo)數(shù)據(jù),并實(shí)現(xiàn)目標(biāo)數(shù)據(jù)在存儲(chǔ)設(shè)備與主機(jī)的目標(biāo)內(nèi)存之間的傳輸。相較于現(xiàn)有技術(shù)中需要傳輸完整數(shù)據(jù)結(jié)構(gòu)并分配固定大內(nèi)存的方案,本技術(shù)通過(guò)精準(zhǔn)的數(shù)據(jù)范圍指示機(jī)制,僅傳輸主機(jī)實(shí)際關(guān)注的目標(biāo)數(shù)據(jù),不僅顯著提升了底層鏈路帶寬的利用率,還實(shí)現(xiàn)了內(nèi)存資源的優(yōu)化配置,顯著提高了存儲(chǔ)設(shè)備與主機(jī)之間的數(shù)據(jù)交互效率。