版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
(12)發(fā)明專利審查員崔景妹在虛擬化環(huán)境中動態(tài)分配物理存儲設(shè)備資于數(shù)據(jù)的存儲裝置和用于來自主機(jī)設(shè)備上的至(I/0)隊(duì)列。存儲設(shè)備可以支持I/0隊(duì)列創(chuàng)建命可以包括要與I/0隊(duì)列相關(guān)聯(lián)的邏輯塊地址21.一種用于在虛擬化環(huán)境中動態(tài)分配物理存儲設(shè)備資源的存儲設(shè)備,包括:至少一個(gè)輸入/輸出I/O隊(duì)列,用于來自主機(jī)設(shè)備上的至少一個(gè)虛擬機(jī)VM的請求,其中所述存儲設(shè)備支持I/O隊(duì)列創(chuàng)建命令,以請求為所述至少一個(gè)VM的VM分配所述至少一個(gè)I/O隊(duì)列的I/O隊(duì)列,所述I/O隊(duì)列創(chuàng)建命令包括要與所述I/O隊(duì)列相關(guān)聯(lián)的邏輯塊地址LBA的范圍的LBA范圍屬性以及用于所述VM的服務(wù)質(zhì)量QoS參數(shù)的服務(wù)質(zhì)量屬性,的最大數(shù)量、每秒讀取字節(jié)的最小數(shù)量、每秒讀取字節(jié)的最大數(shù)量、每秒寫入請求的最小數(shù)量、每秒寫入請求的最大數(shù)量、每秒寫入字節(jié)的最小數(shù)量和每秒寫入字節(jié)的最大數(shù)量中的至少一個(gè),其中,所述存儲設(shè)備將LBA的范圍映射到所述用于數(shù)據(jù)的存儲裝置中的物理塊地址PBA其中,所述SSD存儲設(shè)備使用到主機(jī)設(shè)備的非易失性存儲器快速NVMe接口。2.根據(jù)權(quán)利要求1所述的存儲設(shè)備,其中,所述存儲設(shè)備從所述主機(jī)設(shè)備上的管理程序接收所述I/0隊(duì)列創(chuàng)建命令。4.根據(jù)權(quán)利要求1所述的存儲設(shè)備,其中,所述I/O隊(duì)列創(chuàng)建命令包括共享命名空間屬性,所述屬性指定共享對所述LBA的范圍的訪問的命名空間的陣列。5.根據(jù)權(quán)利要求1所述的存儲設(shè)備,還包括將多個(gè)虛擬I/O隊(duì)列映射到所述I/O隊(duì)列的現(xiàn)場可編程門陣列FPGA,其中:所述FPGA支持虛擬I/O隊(duì)列創(chuàng)建命令,以請求分配所述多個(gè)虛擬I/O隊(duì)列的第一虛擬I/O隊(duì)列,所述虛擬I/O隊(duì)列創(chuàng)建命令包括要與所述第一虛擬I/O隊(duì)列相關(guān)聯(lián)的邏輯塊地址LBA的第二范圍的第二LBA范圍屬性,所述第一虛擬I/O隊(duì)列與所述I/O隊(duì)列相關(guān)聯(lián)。6.根據(jù)權(quán)利要求1所述的存儲設(shè)備,還包括門鈴分布邏輯,用于在與第二I/O隊(duì)列的第二門鈴不同的存儲器頁面中定位所述I/0隊(duì)列的第一門鈴。7.一種用于在虛擬化環(huán)境中動態(tài)分配物理存儲設(shè)備資源的現(xiàn)場可編程門陣列FPGA,包至少一個(gè)虛擬輸入/輸出I/O隊(duì)列,用于來自主機(jī)設(shè)備上的至少一個(gè)虛擬機(jī)VM的請求;以及映射邏輯,用于將所述至少一個(gè)虛擬I/O隊(duì)列的虛擬I/O隊(duì)列映射到存儲設(shè)備上的I/0隊(duì)列,使得所述虛擬I/O隊(duì)列中的從VM接收的I/0請求經(jīng)由所述I/O隊(duì)列被傳遞到所述存儲設(shè)備,并且所述I/0隊(duì)列中的從存儲設(shè)備接收的結(jié)果經(jīng)由所述虛擬I/0隊(duì)列被傳遞到所述其中所述FPGA支持虛擬I/O隊(duì)列創(chuàng)建命令,以請求為所述至少一個(gè)VM的VM分配所述至少一個(gè)虛擬I/0隊(duì)列的虛擬I/O隊(duì)列,所述虛擬I/O隊(duì)列創(chuàng)建命令包括要與所述虛擬I/O隊(duì)列相關(guān)聯(lián)的邏輯塊地址LBA的范圍的LBA范圍屬性以及用于所述VM的服務(wù)質(zhì)量QoS參數(shù)的服務(wù)質(zhì)量屬性,其中,所述QoS屬性包括最小帶寬、最大帶寬、3的最大數(shù)量、每秒讀取字節(jié)的最小數(shù)量、每秒讀取字節(jié)的最大數(shù)量、每秒寫入請求的最小數(shù)量、每秒寫入請求的最大數(shù)量、每秒寫入字節(jié)的最小數(shù)量和每秒寫入字節(jié)的最大數(shù)量中的其中,與所述FPGA分離但連接到所述FPGA的存儲設(shè)備將所述LBA的范圍映射到所述存8.根據(jù)權(quán)利要求7所述的FPGA,其中所述LBA范圍屬性包括開始LBA和結(jié)束LBA。9.根據(jù)權(quán)利要求7所述的FPGA,其中所述虛擬I/O隊(duì)列創(chuàng)建命令包括共享命名空間屬性,所述屬性指定共享對所述LBA的范圍的訪問的命名空間的陣列。10.根據(jù)權(quán)利要求7所述的FPGA,其中所述FPGA將多個(gè)虛擬I/O隊(duì)列映射到所述存儲設(shè)備上的I/O隊(duì)列。11.根據(jù)權(quán)利要求10所述的FPGA,其中所述FPGA是可操作的,以調(diào)用所述存儲設(shè)備上的I/O隊(duì)列創(chuàng)建命令來創(chuàng)建所述I/O隊(duì)列。12.根據(jù)權(quán)利要求7所述的FPGA,還包括門鈴分布邏輯,用于在與第二虛擬I/O隊(duì)列的第二門鈴不同的存儲器頁面中定位所述虛擬I/O隊(duì)列的第一虛擬門鈴。13.一種用于在虛擬化環(huán)境中動態(tài)分配物理存儲設(shè)備資源的包括非暫時(shí)性存儲介質(zhì)的物品,所述非暫時(shí)性存儲介質(zhì)上存儲有指令從主機(jī)設(shè)備上的虛擬機(jī)VM接收第一請求,所述第一請求去往存儲設(shè)備;捕獲所述第一請求防止其到達(dá)所述存儲設(shè)備;向現(xiàn)場可編程門陣列FPGA發(fā)送第二請求,所述第二請求模擬所述第一請求;其中,所述第一請求包括對于所述存儲設(shè)備創(chuàng)建I/0隊(duì)列的I/O隊(duì)列創(chuàng)建請求,其中,所述第二請求包括對于所述FPGA創(chuàng)建虛擬I/O隊(duì)列的虛擬I/0隊(duì)列創(chuàng)建請求以及用于所述VM的服務(wù)質(zhì)量QoS參數(shù)的服務(wù)質(zhì)量屬性,并且的最大數(shù)量、每秒讀取字節(jié)的最小數(shù)量、每秒讀取字節(jié)的最大數(shù)量、每秒寫入請求的最小數(shù)量、每秒寫入請求的最大數(shù)量、每秒寫入字節(jié)的最小數(shù)量和每秒寫入字節(jié)的最大數(shù)量中的至少一個(gè),其中所述第二請求還包括要與所述虛擬I/O隊(duì)列相關(guān)聯(lián)的LBA的范圍的邏輯塊地址LBA范圍屬性。14.根據(jù)權(quán)利要求13所述的物品,其中所述虛擬I/O隊(duì)列創(chuàng)建請求包括共享命名空間屬性,所述屬性指定共享對所述LBA的范圍的訪問的命名空間的陣列。4在虛擬化環(huán)境中動態(tài)分配物理存儲設(shè)備資源的機(jī)制[0001]相關(guān)申請數(shù)據(jù)[0002]本申請要求于2018年3月13日提交的美國臨時(shí)專利申請序列號62/642,596的權(quán)益,該申請出于所有目的通過引用并入本文。[0003]本申請與2018年4月20日提交的、現(xiàn)處于待決狀態(tài)的美國專利申請序列號15/959,108相關(guān),該申請出于所有目的在此通過引用并入本文。技術(shù)領(lǐng)域[0004]本發(fā)明構(gòu)思一般涉及存儲設(shè)備,更具體地,涉及支持由可能彼此隔離的虛擬機(jī)對存儲設(shè)備的訪問。背景技術(shù)[0005]單根輸入/輸出虛擬化(SingleRootInput/OutputVirtualization,SR-IOV)是一種規(guī)范支持的接口機(jī)制,該機(jī)制允許單個(gè)物理外圍組件互連快速(PeripheralComponentInterconnectExpress,PCIe)設(shè)備呈現(xiàn)為多個(gè)分離的(separate)物理PCIe設(shè)[0006]SR-IOV已經(jīng)存在了十年用于網(wǎng)絡(luò)適配器。最近,SR-IOV已經(jīng)開始包括存儲裝置 (storage)。中央處理單元(CentralProcessingUnit,CPU)處理已經(jīng)提供了資源隔離,這有助于通過管理程序(hypervisor)作為主設(shè)備和虛擬機(jī)(VirtualMachine,VM)作為輔助設(shè)備的快速虛擬化采用。使用SR-IOV,網(wǎng)絡(luò)和存儲設(shè)備會暴露物理功能設(shè)備(PhysicalFunction,PF)和虛擬功能設(shè)備(VirtualFunction,VF)。這些共同地提供設(shè)備隔離,足以將物理服務(wù)器轉(zhuǎn)變?yōu)槎鄠€(gè)虛擬服務(wù)器,這樣全部應(yīng)用都可以各自在它們自己的隔離的空間中運(yùn)行。[0007]盡管計(jì)算處理、網(wǎng)絡(luò)和存儲裝置構(gòu)成了三個(gè)虛擬化支柱,但存儲設(shè)備和存儲設(shè)備供應(yīng)商在符合SR-IOV方面仍然滯后。這個(gè)事實(shí)可能是因?yàn)?,與網(wǎng)絡(luò)化(networ儲裝置定義了由一定范圍的邏輯塊地址(LogicalBlockAddress,LBA)引用的數(shù)據(jù)地址空間。這個(gè)LBA范圍只能被細(xì)分為有限數(shù)量的單元。此外,存儲設(shè)備需要物理硬件門來支持額外的VF,因?yàn)閂F是直接暴露于VM的外圍組件互連(PeripheralComponentInterconnect,PCI)空間的硬件功能。將SR-IOV添加到存儲/網(wǎng)絡(luò)設(shè)備會增加其門數(shù)量和芯片大小,并消耗更多功率。[0008]SR-IOV解決了硬件隔離問題,同時(shí)提供了裸機(jī)(bare-metal)性能,因?yàn)榕c超虛擬化(para-virtualized)設(shè)備不同,I/0不必通過管理程序。非易失性存儲器快速(Non-VolatileMemoryExpress,NVMe)存儲設(shè)備是最新采用SR-IOV的。但是對于存儲裝置,可能還有其他機(jī)制為多個(gè)VM提供隔離的訪問。[0009]仍然需要一種方法來提供類似SR-IOV所提供的功能,但沒有SR-IOV強(qiáng)加的硬件要求和限制。5發(fā)明內(nèi)容[0010]本公開的一方面提供一種用于在虛擬化環(huán)境中動態(tài)分配物理存儲設(shè)備資源的存儲設(shè)備,包括:用于數(shù)據(jù)的存儲裝置;以及至少一個(gè)輸入/輸出(I/O)隊(duì)列,用于來自主機(jī)設(shè)備上的至少一個(gè)虛擬機(jī)(VM)的請求,其中所述存儲設(shè)備支持I/O隊(duì)列創(chuàng)建命令,以請求為所述至少一個(gè)VM的VM分配所述至少一個(gè)I/0隊(duì)列的I/0隊(duì)列,所述I/O隊(duì)列創(chuàng)建命令包括要與所述I/O隊(duì)列相關(guān)聯(lián)的邏輯塊地址(LBA)的范圍的LBA范圍屬性,并且,其中所述存儲設(shè)備將LBA的范圍映射到所述用于數(shù)據(jù)的存儲裝置中的物理塊地址(PBA)的范圍。[0011]本公開的另一方面提供一種用于在虛擬化環(huán)境中動態(tài)分配物理存儲設(shè)備資源的現(xiàn)場可編程門陣列(FPGA),包括:至少一個(gè)虛擬輸入/輸出(I/0)隊(duì)列,用于來自主機(jī)設(shè)備上的至少一個(gè)虛擬機(jī)(VM)的請求;以及映射邏輯,用于將所述至少一個(gè)虛擬I/O隊(duì)列的虛擬I/O隊(duì)列映射到存儲設(shè)備上的I/O隊(duì)列,使得所述虛擬I/O隊(duì)列中的從VM接收的I/0請求經(jīng)由所述I/O隊(duì)列被傳遞到所述存儲設(shè)備,并且所述I/O隊(duì)列中的從存儲設(shè)備接收的結(jié)果經(jīng)由所述虛擬I/O隊(duì)列被傳遞到所述VM,其中所述FPGA支持虛擬I/0隊(duì)列創(chuàng)建命令,以請求為所述至少一個(gè)VM的VM分配所述至少一個(gè)虛擬I/0隊(duì)列的虛擬I/O隊(duì)列,所述虛擬I/O隊(duì)列創(chuàng)建命令包括要與所述虛擬I/O隊(duì)列相關(guān)聯(lián)的邏輯塊地址(LBA)的范圍的LBA范圍屬性,并且,其中與所述FPGA分離但連接到所述FPGA的存儲設(shè)備將所述LBA的范圍映射到所述存儲設(shè)備中的物理塊地址(PBA)的范圍。[0012]本公開的又一方面提供一種用于在虛擬化環(huán)境中動態(tài)分配物理存儲設(shè)備資源的包括非暫時(shí)性存儲介質(zhì)的物品,所述非暫時(shí)性存儲介質(zhì)上存儲有指令,當(dāng)所述指令被機(jī)器執(zhí)行時(shí),使得:從主機(jī)設(shè)備上的虛擬機(jī)(VM)接收第一請求,所述第一請求去往存儲設(shè)備;捕獲所述第一請求防止其到達(dá)所述存儲設(shè)備;向現(xiàn)場可編程門陣列(FPGA)發(fā)送第二請求,所述第二請求模擬所述第一請求;從所述FPGA接收所述第二請求的結(jié)果;以及向所述VM發(fā)送所述第二請求的結(jié)果。附圖說明[0013]圖1示出了根據(jù)本發(fā)明構(gòu)思的實(shí)施例的支持隔離的虛擬機(jī)(VM)訪問存儲設(shè)備的設(shè)[0014]圖2示出了圖1的設(shè)備的額外的細(xì)節(jié)。[0015]圖3示出了圖1的VM和圖1的存儲設(shè)備之間的通信路徑,其中圖1的存儲設(shè)備僅暴露一個(gè)物理功能。[0016]圖4示出了圖1的VM和圖1的存儲設(shè)備之間的通信路徑,其中圖1的存儲設(shè)備暴露了多個(gè)物理功能。[0017]圖5示出了圖1的存儲設(shè)備的細(xì)節(jié)。[0018]圖6示出了用于圖1的存儲設(shè)備的擴(kuò)展I/O隊(duì)列創(chuàng)建命令。[0019]圖7示出了被劃分為多個(gè)命名空間的圖1的存儲設(shè)備的物理存儲裝置。[0020]圖8示出了圖1的存儲設(shè)備中的門鈴的存儲器映射,以支持VM隔離。[0021]圖9示出了用于圖3的現(xiàn)場可編程門陣列(FieldProgrammableGateArray,FPGA)的擴(kuò)展虛擬I/O隊(duì)列創(chuàng)建命令。[0022]圖10示出了支持映射到圖1的存儲設(shè)備中的I/0隊(duì)列的虛擬I/O隊(duì)列的圖3的FPGA。6[0023]圖11示出了根據(jù)本發(fā)明構(gòu)思的實(shí)施例的用于圖1的存儲設(shè)備為VM分配I/0隊(duì)列的示例過程的流程圖。[0024]圖12示出了根據(jù)本發(fā)明構(gòu)思的實(shí)施例的用于圖3的FPGA為VM分配虛擬I/0隊(duì)列的示例過程的流程圖。[0025]圖13示出了根據(jù)本發(fā)明構(gòu)思的實(shí)施例的用于圖3的管理程序處理來自圖3的虛擬機(jī)的管控請求的示例過程的流程圖。[0026]圖14示出了根據(jù)本發(fā)明構(gòu)思的實(shí)施例的用于圖1的存儲設(shè)備或圖3的FPGA將門鈴的存儲器地址映射到不同操作系統(tǒng)頁面以支持VM隔離的示例過程的流程圖。具體實(shí)施方式[0027]現(xiàn)在將詳細(xì)參考本發(fā)明構(gòu)思的實(shí)施例,其示例在附圖中示出。在下面的詳細(xì)描述人員可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐本發(fā)明構(gòu)思。在其他情況下,沒有詳細(xì)描述公[0028]應(yīng)當(dāng)理解,盡管術(shù)語第一、第二等可以在本文用于描述各種元件,但是這些元件不應(yīng)受到這些術(shù)語的限制。這些術(shù)語僅用于區(qū)分一個(gè)元件和另一個(gè)元件。例如,在不脫離本發(fā)明構(gòu)思的范圍的情況下,第一模塊可以被稱為第二模塊,類似地,第二模塊可以被稱為第一[0029]在本文對本發(fā)明構(gòu)思的描述中使用的術(shù)語僅出于描述特別實(shí)施例的目的,并不意圖限制本發(fā)明構(gòu)思。如在本發(fā)明構(gòu)思和所附權(quán)利要求的描述中所使用的,單數(shù)形式“一”、術(shù)語“和/或”是指并涵蓋相關(guān)聯(lián)的列出項(xiàng)目中的一個(gè)或多個(gè)的任何和所有可能的組合。還應(yīng)當(dāng)理解,當(dāng)在本說明書中使用時(shí),術(shù)語“包括(comprise)”和/或“包括了”指定所述特征、元件、組件和/或它們的組的存在或添加。附圖的組件和特征不一定按比例繪制。[0030]目前,單根輸入/輸出虛擬化(SR-IOV)用于非易失性存儲器快速(NVMe)存儲設(shè)備的早期采用者已經(jīng)采取了提供每一物理功能(PF)有限數(shù)量的虛擬功能(VF)和相關(guān)聯(lián)的命名空間的路線。邏輯地址空間范圍的分配取決于命名空間分配,而對VM的裸機(jī)直接訪問取決于支持的VF的數(shù)量。這種實(shí)施方式給支持大容量的存儲設(shè)備創(chuàng)造了問題,因?yàn)樗仨氁怨β屎吐阈?die)大小為代價(jià)來支持額外的硬件,以滿足直接支持多個(gè)VM的性能要求。在最低限度上,支持SR-IOV功能需要設(shè)備為每個(gè)VF提供分離的外圍組件互連(PCI)配置空間、I/0條(bar)、用于提交和完成隊(duì)列的I/O隊(duì)列、消息信號中斷(MessageSignaledInterrupt,MSI-X)以及支持的隊(duì)列的門鈴地址。[0031]第一SR-IOV存儲設(shè)備中可用的固定分配方法的不足促使NVMe委員會開發(fā)消除了實(shí)施方式限制的另一個(gè)規(guī)范,諸如將固定資源分配改為動態(tài)資源分配以及管理。許多當(dāng)前開放和主動提議的改變正在試圖解決資源分配問題。然而,它們受到物理設(shè)備限制的約束,諸如支持的VF,這增加了不可避免地出現(xiàn)的規(guī)格復(fù)雜性。[0032]盡管市場上有少數(shù)領(lǐng)先的管理程序,諸如VMWare、Microsoft、CitrixXenServer、KVM、Qemu和OracleVM,7通過這樣做,它們奪得了大多數(shù)市場份額。由于它們的編程環(huán)境的本質(zhì),每個(gè)管理程序環(huán)境都可以被視為自定義實(shí)施方式。因此,支持這種實(shí)施方式的變化可能很重要。[0033]本發(fā)明構(gòu)思的實(shí)施例定義了更簡單的機(jī)制來對SR-IOV存儲設(shè)備進(jìn)行編程,以提供VM隔離和性能。本發(fā)明構(gòu)思的實(shí)施例通過依靠管理程序來映射資源,遵循了更簡單的方法。本發(fā)明構(gòu)思的實(shí)施例可以包括策略用于:[0034]1)通過提供對VM的I/O隊(duì)列(提交和完成隊(duì)列對)的直接應(yīng)用訪問,將性能擴(kuò)展到[0035]2)直接將I/O隊(duì)列(提交和完成隊(duì)列)的能力(capability)映射到VM。[0036]3)將控制器細(xì)節(jié)封裝在管理程序中用于管理路徑。[0037]4)動態(tài)隔離每一分離的VM要求的物理資源。[0038]本發(fā)明構(gòu)思的實(shí)施例可以通過添加新的NVMe存儲設(shè)備支持作為特征來有效地提供SR-IOV類型的功能。[0039]本發(fā)明構(gòu)思的實(shí)施例定義了以下新特征:[0040]1)一種出于性能目的,將NVMeI/0提交隊(duì)列和I/0完成隊(duì)列(一起被稱為I/O隊(duì)列對)直接重新映射到VM的高級管理機(jī)制。[0041]2)一種管理程序中用于實(shí)施虛擬化控制器的機(jī)制,該機(jī)制將硬件I/O隊(duì)列動態(tài)映射到VM,作為虛擬化控制器的集合。[0042]3)一種將邏輯地址空間映射為邏輯單元或命名空間的機(jī)制。[0043]4)一種使用額外的方法映射在存儲設(shè)備中不可用的額外的I/O隊(duì)列的機(jī)制。[0044]5)一種為共享資源提供VM特定隔離的方法。[0045]本發(fā)明構(gòu)思的實(shí)施例提供了優(yōu)于傳統(tǒng)技術(shù)的以下優(yōu)點(diǎn):[0046]1)提供類SR-IOV功能,而無需昂貴的SR-IOV硬件要求。[0047]2)提供超越設(shè)備規(guī)范的VM額外的I/0資源隔離和性能優(yōu)勢。序改變的硬件能力。[0049]4)在存儲設(shè)備和管理程序之間創(chuàng)建服務(wù)質(zhì)量(QualityofService,QoS)通道。[0050]5)簡化存儲虛擬化的硬件要求。[0051]本發(fā)明構(gòu)思的實(shí)施例提供了一種將存儲設(shè)備I/0資源直接重新映射到VM的機(jī)制。本發(fā)明構(gòu)思的實(shí)施例使用用于存儲器和中斷的現(xiàn)有重新映射資源,包括用于x86架構(gòu)的輸入-輸出存儲器管理單元(Input-OutputMemoryManagementUnit,IOMMU)和額外的硬件資源,以映射到存儲設(shè)備通常不支持的大量VM。[0052]為了實(shí)現(xiàn)這些優(yōu)勢,存儲設(shè)備(可能包括固態(tài)驅(qū)動器(SolidStateDrive,SSD))應(yīng)當(dāng):[0053]1)支持?jǐn)U展I/0隊(duì)列創(chuàng)建屬性。[0054]2)支持I/O隊(duì)列級別的簡單邏輯地址重新映射。[0055]3)支持0/S頁面邊界處的門鈴,為了VM安全性。[0056]4)按照NVMe規(guī)范標(biāo)準(zhǔn)通過一個(gè)或多個(gè)字段公布這些擴(kuò)展屬性。[0057]5)可選地提供額外的隊(duì)列優(yōu)先級等級仲裁機(jī)制,而不是默認(rèn)應(yīng)用QoS。[0058]將NVMeI/O隊(duì)列對直接映射到VM8[0059]I/0提交隊(duì)列和I/0完成隊(duì)列可以一起被稱為I/O隊(duì)列對,因?yàn)樗鼈円黄鸸ぷ?,并且?dāng)資源受限時(shí),將自動應(yīng)用1:1映射。大多數(shù)(如果不是全部)內(nèi)置NVMe驅(qū)動程序創(chuàng)建這些隊(duì)列的1:1映射。本發(fā)明構(gòu)思的實(shí)施例把這種用法作為目標(biāo),因?yàn)檫@些是在VM中運(yùn)行的設(shè)備驅(qū)動程序?qū)嵤┓绞健0060]支持本發(fā)明構(gòu)思的實(shí)施例的存儲設(shè)備可以提供用于提交和完成隊(duì)列的擴(kuò)展I/0創(chuàng)建命令。命令可以通過分離的操作碼來應(yīng)用,其可以被標(biāo)記為可選的(optional)或者可以被定義為供應(yīng)商特定(vendor-specific)的命令。擴(kuò)展命令可以支持NVMe規(guī)范定義的基本NVMe隊(duì)列創(chuàng)建命令細(xì)節(jié),諸如隊(duì)列大小、隊(duì)列標(biāo)識符、隊(duì)列優(yōu)先級等級、隊(duì)列緩沖區(qū)是否物理上連續(xù)、中斷向量和中斷使能字段。但是除這些之外,擴(kuò)展命令還可以支持設(shè)備的地址空間內(nèi)的邏輯塊尋址偏移。這些機(jī)制工作如下:初可以被完全虛擬化,以便在訪問其PCI配置和I/0存儲器映射區(qū)域時(shí)采用客戶機(jī)(guest)[0062]2)在I/0存儲器映射空間中,管理程序可以捕獲任何NVMe配置空間改變要虛擬化訪問請求。管理程序可以在0/S頁面級別粒度上暴露門鈴作為I/0存儲器的一部[0063]3)當(dāng)VM創(chuàng)建I/0提交隊(duì)列時(shí),管理程序捕獲請求并使用“擴(kuò)展創(chuàng)建I/0提交隊(duì)列(ExtendedCreateI/0SubmissionQueue)”命令將其映射到存儲設(shè)備的物理I/0提交隊(duì)[0064]a)將隊(duì)列存儲器映射到其(多個(gè))物理頁面,以便存儲設(shè)備可以直接訪問它。這種機(jī)制可以由基于英特爾x86的架構(gòu)上的IOMMU提供。[0065]b)添加隊(duì)列優(yōu)先級(如果支持的話),該隊(duì)列優(yōu)先級將此隊(duì)列相對于其他VM進(jìn)行優(yōu)先級排序。[0066]c)將VM的空間中的先前創(chuàng)建的I/0完成隊(duì)列ID綁定到針對存儲設(shè)備I/O隊(duì)列的此提交隊(duì)列。[0067]d)添加將物理地址空間的一部分映射到VM的邏輯塊地址開始和結(jié)束值。[0068]e)應(yīng)用對于最小或最大I/0操作、或者每秒粒度傳輸?shù)淖钚』蜃畲笞止?jié)的適當(dāng)?shù)目臻g訪問權(quán)限可以在列出命名空間id的陣列中指定。[0070]g)另外,如果存儲設(shè)備提供這種支持,則存儲設(shè)備可以提供命名空間訪問類型的[0071]4)管理程序還可能捕獲I/0完成隊(duì)列創(chuàng)建請求并且改為(instead):[0072]a)將隊(duì)列存儲器映射到其(多個(gè))物理頁面,以便存儲設(shè)備可以直接訪問它。在基[0073]b)通過已經(jīng)就位用于虛擬化的系統(tǒng)架構(gòu)機(jī)制(諸如IOMMU)映射在實(shí)際存儲設(shè)備向[0074]5)取決于管理的VM復(fù)雜性和管理程序?qū)嵤┓绞剑景l(fā)明構(gòu)思的實(shí)施例可以將多個(gè)9斷回到VM客戶機(jī)。該機(jī)制可以解決動態(tài)隊(duì)列分配機(jī)制。[0075]6)在動態(tài)隊(duì)列分配機(jī)制的另一用法中,管理程序可以基于VM服務(wù)級別協(xié)議(ServiceLevelAgreement,SLA)僅暴[0076]一旦建立,可以將硬件I/O隊(duì)列動態(tài)映射到VM的管理程序輔助機(jī)制可以提供與SR-IOV提供的那些類似的必要的隔離和性能優(yōu)勢,但是具有更低的制造、測試和調(diào)試成本。管理程序也可能需要一些改變,但這些改變是獨(dú)自的(self-contained),并且局限于可用的管理程序,從而減少總體影響。如果存儲設(shè)備安裝在不支持虛擬化的系統(tǒng)中,則該存儲設(shè)備應(yīng)作為常規(guī)NVMe存儲設(shè)備來運(yùn)行。[0078]NVMe可以通過使用像小型計(jì)算機(jī)系統(tǒng)接口(SmallComputerSystemsInterface,SCSI)邏輯單元號(LogicalUnitNumber,LUN)一樣工作的命名空間來共享單個(gè)、唯一的邏輯地址空間。給定命名空間ID,邏輯地址塊可以用命名空間在整個(gè)邏輯地址映射中開始的地址來偏移。[0079]在傳統(tǒng)存儲設(shè)備中,物理地址空間可以通過創(chuàng)建命名空間及其坐標(biāo)來被細(xì)分為邏輯單元。在傳統(tǒng)存儲設(shè)備中,這種細(xì)分可能需要額外的命名空間支持來創(chuàng)建多個(gè)命名空間。本發(fā)明構(gòu)思的實(shí)施例通過將創(chuàng)建的I/O隊(duì)列直接附加到邏輯單元空間來繞過這個(gè)要求。例如,擴(kuò)展屬性可以被定義為I/O隊(duì)列的邏輯可尋址空間的一部分,因此默認(rèn)的命名空間映射到它。此修改將對齊每個(gè)I/O隊(duì)列,使VM可以直接私有命名空間,要么請求訪問共享命名空間。I/O隊(duì)列創(chuàng)建中的擴(kuò)展屬性可以指定相對于全局物理地址空間的默認(rèn)命名空間開始和結(jié)束LBA。此機(jī)制解決了硬件命名空間管理要求。任何傳入的I/0請求必須經(jīng)過I/O隊(duì)列。由于I/O隊(duì)列已經(jīng)保持默認(rèn)的命名空間映射偏移,所以它可以直接使用這個(gè)編程的偏移來轉(zhuǎn)換LBA地址。[0080]如果需要訪問多個(gè)命名空間,則擴(kuò)展I/O隊(duì)列創(chuàng)建可能具有一個(gè)額外的定義來支[0081]映射存儲設(shè)備中不可用的額外的I/O隊(duì)列的機(jī)制[0082]這種機(jī)制涉及使用在分離的空間中提供I/0隊(duì)列的額外的現(xiàn)場可編程門陣列(FPGA)邏輯。使用該機(jī)制,本發(fā)明構(gòu)思的實(shí)施例可以支持可以直接映射到VM的明顯更多的功能。FPGA可以以0/S頁面粒度為相關(guān)聯(lián)的I/0隊(duì)列門鈴提供存儲器映射,提供對設(shè)備中不可用的額外的I/O隊(duì)列的支持,提供對所支持的I/O隊(duì)列的完全MSI-X中斷支持,以及提供每一I/0隊(duì)列的邏輯地址空間的映射。在該機(jī)制中,存儲設(shè)備根本不需要支持?jǐn)U展I/O隊(duì)列功能,這可以在額外的可編程硬件中完全實(shí)施。[0084]部分規(guī)范支持:如果可以預(yù)測VM的數(shù)量不大于存儲設(shè)備支持的I/0隊(duì)列的數(shù)量,則部分或全部功能可以在存儲設(shè)備內(nèi)實(shí)施。FPGA然后可以用作對于由VM的I/0請求的“直通”設(shè)備,或者使用虛擬I/O隊(duì)列到存儲設(shè)備I/0隊(duì)列的一對一映射。FPGA仍可以用于減少用于在存儲設(shè)備中實(shí)施功能的硬件的數(shù)量。隊(duì)列,F(xiàn)PGA可以將許多其暴露的I/O隊(duì)列映射到單個(gè)存儲設(shè)備I/O隊(duì)列。[0086]FPGA可以提供邏輯地址空間映射結(jié)構(gòu)和相關(guān)聯(lián)的類命名空間的隔離。FPGA還可以提供必要的MSI-X中斷映射能力,以使該設(shè)備完全正常工作。[0088]當(dāng)多個(gè)VM執(zhí)行訪問單個(gè)存儲設(shè)備的I/0操作時(shí),由于混合器效應(yīng)(blender于SR-IOV,隔離是在PF映射級別提供的,但其優(yōu)勢沒有公布或未知。本發(fā)明構(gòu)思的實(shí)施例可以支持將I/O隊(duì)列資源綁定到VM,該VM不僅在資源級別上提供自然隔離,而且也提供給流中的優(yōu)先級等級仲裁機(jī)制(如NVMe規(guī)范或供應(yīng)商特定命令的一部分中定義的),管理程序可以在創(chuàng)建時(shí)間將這些機(jī)制應(yīng)用于I/O隊(duì)列。管理程序可以基于VM的要求選擇應(yīng)用這些不同的優(yōu)先級等級支持。[0089]基于所提供的存儲設(shè)備功能,本發(fā)明構(gòu)思的實(shí)施例還可以在擴(kuò)展I/O隊(duì)列創(chuàng)建命令中暴露額外的字段,該字段提供應(yīng)用于存儲設(shè)備所需的性能限制或最小服務(wù)。所需的性能限制或最小服務(wù)可以在讀寫I/0計(jì)數(shù)或傳輸?shù)淖止?jié)中量化。這種所需的性能限制或最小服務(wù)也可以是基于設(shè)備支持和由管理程序應(yīng)用于VM的可設(shè)置選項(xiàng)。[0090]本發(fā)明構(gòu)思的實(shí)施例的典型用法可以直接應(yīng)用于大量利用虛擬機(jī)(VM)的企業(yè)市場(enterprisesegment)中的存儲虛擬化。[0091]圖1示出了根據(jù)本發(fā)明構(gòu)思的實(shí)施例的支持隔離的虛擬機(jī)(VM)訪問存儲設(shè)備的設(shè)備。在圖1中,示出了設(shè)備105,其也可以被稱為主機(jī)計(jì)算機(jī)或主機(jī)設(shè)備。設(shè)備105可以包括處理器110.處理器110可以是任何種類的處理器:例如,英特爾至強(qiáng)(Xeon)、賽揚(yáng)(Celeron)、出了設(shè)備105中的單個(gè)處理器110,但是設(shè)備105可以包括任何數(shù)量的處理器,每個(gè)處理器可以是單核或多核處理器,并且可以以任何期望的組合混合。處理器110可以運(yùn)行設(shè)備驅(qū)動程序115,這可以支持對存儲設(shè)備120的訪問:不同的設(shè)備驅(qū)動可以支持對設(shè)備105的其他組件的訪問。[0092]設(shè)備105還可以包括存儲器控制器125,其可以用于管理對主存儲器130的訪問。存儲器130可以是任何種類的存儲器,諸如閃存、動態(tài)隨機(jī)存取存儲器(DynamicRandom隨機(jī)存取存儲器、鐵電隨機(jī)存取存儲器(FerroelectricRandomAccessMemory,FRAM)或諸如磁阻隨機(jī)存取存儲器(MagnetoresistiveRandomAccessMemory,MRAM)等的非易失性隨機(jī)存取存儲器(Non-VolatileRandomAccessMemory,NVRAM)。存儲器130也可以是不同存儲器類型的任何期望的組合。[0093]盡管圖1將設(shè)備105描繪為服務(wù)器(其可以是獨(dú)立式或機(jī)架式服務(wù)器),但是本發(fā)明構(gòu)思的實(shí)施例可以包括任何期望類型的設(shè)備105,而沒有限制。例如,設(shè)備105可以用臺式或膝上型計(jì)算機(jī)或可以受益于本發(fā)明構(gòu)思的實(shí)施例的任何其他設(shè)備來替換。設(shè)備105還可以包括專用便攜式計(jì)算設(shè)備、平板電腦、智能手機(jī)和其他計(jì)算設(shè)備。[0094]圖2示出了圖1的設(shè)備105的額外的細(xì)節(jié)。在圖2中,典型地,設(shè)備105包括一個(gè)或多個(gè)處理器110,處理器110可以包括存儲器控制器125和時(shí)鐘205,時(shí)鐘205可以用于協(xié)調(diào)設(shè)備11105的組件的操作。處理器110還可以耦合到存儲器130,存儲器130可以包括作為示例的隨機(jī)存取存儲器(RandomAccessMemory,RAM)、只讀存儲器(Read-onlyMemory,ROM)或其他狀態(tài)保持介質(zhì)。處理器110還可以耦合到存儲設(shè)備120和網(wǎng)絡(luò)連接器210,網(wǎng)絡(luò)連接器210可以是例如以太網(wǎng)連接器或無線連接器。處理器110還可以連接到總線215,用戶接口220和可以使用輸入/輸出引擎225管理的輸入/輸出接口端口以及其他組件可以被附著到總線215。[0095]圖3示出了圖1的VM和圖1的存儲設(shè)備120之間的通信路徑,其中圖1的存儲設(shè)備120僅暴露一個(gè)物理功能。在圖3中,示出了三個(gè)VM305-1、305-2和305-3,它們可以在圖1的主機(jī)設(shè)備105上實(shí)例化。雖然圖3示出了三個(gè)VM305-1、305-2和305-3,但是本發(fā)明構(gòu)思的實(shí)施例可以包括支持任意數(shù)量的VM的圖1的主機(jī)設(shè)備105。[0096]VM305-1、305-2和305-3可以與管理程序310通信。管理程序310可以創(chuàng)建、管理和運(yùn)行VM305-1、305-2和305-3。管理程序310通常被實(shí)施為在圖1的主機(jī)設(shè)備105的處理器110上運(yùn)行的軟件。[0097]為了實(shí)現(xiàn)與硬件設(shè)備的交互,特別是實(shí)施單根輸入/輸出虛擬化(SR-IOV)的硬件,這樣的硬件設(shè)備可能會暴露各種物理功能。例如,圖3示出了暴露一個(gè)物理功能(PF)320的現(xiàn)場可編程門陣列(FPGA)315。[0098]為了使VM305-1、305-2和305-3能夠與硬件設(shè)備交互,也可以暴露各種虛擬功能(VF)。VM305-1、305-2和305-3可以與VF325-1、325-2和325-3交互,而不是必須與硬件直接交互。VF325-1、325-2和325-3提供PF320的虛擬化版本,使使用不同操作系統(tǒng)(0/S)的VM能夠與底層硬件設(shè)備有效交互(例如,使用本機(jī)0/S驅(qū)動程序)。雖然圖3示出了PF320的三個(gè)VF,但是本發(fā)明構(gòu)思的實(shí)施例可以包括每一PF任意數(shù)量的VF;并且如果FPGA315(或存儲設(shè)備120)暴露多于一個(gè)PF,則每一PF可能有不同數(shù)量的VF。暴露的每個(gè)VF可能需要來自底層設(shè)備的一些硬件支持。例如,為存儲設(shè)備120暴露的每個(gè)VF可能需要額外的端阱(endtrap)和門鈴,這需要額外的硬件實(shí)施方式。[0099]如上所述,PF320可以由FPGA315暴320的底層硬件。FPGA315可以詢問存儲設(shè)備120以確定哪個(gè)(那些)PF由存儲設(shè)備120暴露,然后FPGA315自己暴露可比較的(多個(gè))PF,這些PF可以直接跨FPGA315映射到存儲設(shè)備120的對應(yīng)的PF。[0100]可替代地,PF320可以由存儲設(shè)備120直接暴露,而VF325-1、325-2和325-3可以由FPGA315暴露。使用這種實(shí)施方式操作的本發(fā)明構(gòu)思的實(shí)施例可以避免FPGA315不得不實(shí)施已經(jīng)由存儲設(shè)備120實(shí)施的硬件PF功能,但用數(shù)量可能大于存儲設(shè)備120本身可以提供的VF來補(bǔ)充該硬件實(shí)施方式。[0101]不管是存儲設(shè)備120還是FPGA315實(shí)施PF320,FPGA315可以被插入在一方面的處理器110(和管理程序310)和在另一方面的存儲設(shè)備120之間。管理程序310(因而VM305-1、305-2和305-3)和存儲設(shè)備120之間的任何通信都將經(jīng)過FPGA315,從而允許FPGA315增強(qiáng)存儲設(shè)備120提供的功能(或者當(dāng)存儲設(shè)備120本身不提供SR-IOV類型的實(shí)施方式時(shí),潛在地為存儲設(shè)備120提供SR-IOV類型的支持)。[0102]就實(shí)施方式而言,F(xiàn)PGA315可以是存儲設(shè)備120內(nèi)的硬件(也就是說,存儲設(shè)備120可以在其結(jié)構(gòu)內(nèi)部包括FPGA315),或者FPGA315可以是存儲設(shè)備120外部的額外硬件,但是仍然沿著處理器110和存儲設(shè)備120之間的通信路徑。例如,F(xiàn)PGA315可以被實(shí)施為安裝在圖1的主機(jī)設(shè)備105內(nèi)的電路板,該電路板通過從FPGA315到存儲設(shè)備120的連接110和存儲設(shè)備120之間的某個(gè)地方,以捕捉管理程序310發(fā)送的信息并執(zhí)行F以作為安裝過程的一部分在現(xiàn)場編程:存儲設(shè)備120通常在制造期間被編程。例如,F(xiàn)PGA315可能能夠支持比如存儲設(shè)備的100個(gè)VF,但是在安裝時(shí),客戶可能希望僅暴露比如50個(gè)在制造時(shí)被編程為具有一個(gè)外殼,該外殼提供使用非易失性存儲器快速(NVMe)命令的接315暴露三個(gè)PF320、405和410,但是本發(fā)明構(gòu)思的實(shí)施例可以支持暴露任意數(shù)量的PF,并擴(kuò)展I/O隊(duì)列創(chuàng)建命令的支持(下面參考圖5-圖6討論的),并且如果存儲設(shè)備120包括足夠的I/O隊(duì)列來支持預(yù)期數(shù)量的VM,則FPGA315可以僅提供VF325-1、325-2和325-3,供對擴(kuò)展I/O隊(duì)列創(chuàng)建命令的支持,但是因?yàn)閂M的數(shù)量預(yù)期將超過存儲設(shè)備120的I/O隊(duì)列[0108]圖5示出了圖1的存儲設(shè)備120的細(xì)節(jié)。在圖5中,存儲設(shè)備120可以包括主機(jī)接口505,其管理與圖1的主機(jī)設(shè)備105的通信。存儲設(shè)備120還可以包括存儲裝置510,其存儲由鈴位于內(nèi)部存儲器的不同頁面中(其中頁面的大小可以根據(jù)圖1的存儲器130的頁面大小來鈴,從而避免了多個(gè)VM可能需要訪問同一存儲器頁面以訪問它們的門鈴的可能性(這將違的閃存轉(zhuǎn)換層(FlashTranslationLayer,FT寫標(biāo)頭(head)。圖5也沒有示出可以包括在存儲設(shè)備120中的額外的可選組件,諸如高速緩120可以使用任何期望的連接機(jī)制來連接到主機(jī)設(shè)備105,包括例如PCI或PCIe(使用4、8或[0111]存儲設(shè)備120還可以包括可以用于請求提交和響應(yīng)返回的I/O隊(duì)列(也稱為I/0隊(duì)列對):提交隊(duì)列(submissionqueue,SQ)可以被圖3的VM305-1用來提交I/0請求(諸如讀或?qū)懻埱?,并且完成隊(duì)列(completionqueue,CQ)可以被存儲設(shè)備120用來將結(jié)果返回給本發(fā)明構(gòu)思的實(shí)施例可以支持包括來自多個(gè)提交隊(duì)列[0112]存儲設(shè)備120可以包括支持可以由存儲設(shè)備120提供的I/O隊(duì)列創(chuàng)建命令535的電形式的I/O隊(duì)列創(chuàng)建命令535,但是所示的I/O隊(duì)列創(chuàng)建命令535代表擴(kuò)展的I/O隊(duì)列創(chuàng)建命列優(yōu)先級612(正在建立的提交隊(duì)列的相對優(yōu)先級)和物理連續(xù)標(biāo)志615(指示提交隊(duì)列和完包括邏輯塊地址(LBA)范圍屬性618、服務(wù)質(zhì)量(QoS)屬性621和共享命名空間屬性624.LBA范圍屬性618可以指定與VM305-1相關(guān)聯(lián)的LBA的范圍。使用LBA范圍屬性618,圖3的FPGA315或圖1的存儲設(shè)備120可以分配圖1的存儲設(shè)備120上的物理塊地址(PhysicalBlockAddress,PBA)的一部分供該VM使用,而不被其他VM使用(盡管下面討論了該規(guī)則的例外)。[0114]圖7示出了圖1的存儲設(shè)備120的物理存儲裝置如何劃分為多個(gè)命名空間的示例。在圖7中,示出了圖5的1TB的存儲裝置510,盡管本發(fā)明構(gòu)思的實(shí)施例可以支持具有任何總?cè)萘康拇鎯υO(shè)備。圖5的這個(gè)1TB的存儲裝置510被示為劃分為三個(gè)命名空間705-1、705-2和705-3,但是本發(fā)明構(gòu)思的實(shí)施例可以將圖5的存儲裝置510劃分為任意數(shù)量的命名空間。[0115]每個(gè)命名空間都有LBA1,命名空間705-2包括LBA的范圍710-2,以及命名空間705-3包括LBA的范圍710-3.對應(yīng)于LBA的每個(gè)范圍710-1、710-2和710-3,PBA的范圍715-1、715-2和715-3可以建立在圖5的存給定LBA范圍中的每個(gè)LBA都具有對應(yīng)的PBA。注意的是,LBA和PBA不一定是相符的(coincidental):例如,LBA的范圍710-2從開始LBAO到結(jié)束LBA134,217,727(這可以是例如塊地址,其中每個(gè)塊包括4096字節(jié)的數(shù)據(jù):這個(gè)塊地址對應(yīng)字節(jié)地址549,755,813,887),而PBA的范圍715-2從開始PBA67,108,864(字節(jié)地址274,877,906,944)到結(jié)束PBA201、326、591(字節(jié)地址824,633,720,831)。[0116]將LBA范圍映射到PBA并將這些范圍中的一個(gè)(或兩個(gè))與I/O隊(duì)列相關(guān)聯(lián)的一個(gè)優(yōu)點(diǎn)是,這樣的映射可以避免混合器效應(yīng)?;旌掀餍?yīng)是傳統(tǒng)存儲設(shè)備如何處理I/0請求的結(jié)果。在I/0請求仍在I/O隊(duì)列內(nèi)時(shí),I/0任何這樣的上下文都會丟失:所有I/0請求在那時(shí)看起來都是一樣的。結(jié)果,圖1的存儲設(shè)備120將不能保證特別的VM的QoS要求。但是如果PBA可以經(jīng)由LBA-PBA映射(其本身是可逆的)被聯(lián)結(jié)(tied)回特別的I/0隊(duì)列,則該I/O隊(duì)列的QoS要求仍然可以被圖1的存儲設(shè)備120定位和滿足。[0117]值得注意的是,每個(gè)命名空間705-1、705-2和705-3都有其自己的命名空間標(biāo)識符(ID)。在本發(fā)明構(gòu)思的一些實(shí)施例中,這些命名空間ID可以對應(yīng)于作為圖6的隊(duì)列標(biāo)識符606提供的隊(duì)列標(biāo)識符。[0118]返回圖6,LBA范圍屬性618可以用多種方式表示。例如,LBA范圍屬性618可以包括開始和結(jié)束地址??商娲兀o定LBA開始627和隊(duì)列大小603,有可能推斷LBA結(jié)束630,這將準(zhǔn)許省略LBA結(jié)束630。擴(kuò)展I/O隊(duì)列創(chuàng)建命令535的結(jié)構(gòu)可以被建立以支持LBA范圍屬性618上的任何期望的變化,根據(jù)需要包括和/或省略參數(shù)。[0119]QoS屬性621可以表示任何期望的QoS規(guī)定。例如,正在由I/O隊(duì)列創(chuàng)建命令535建立的隊(duì)列可以與具有服務(wù)級別協(xié)議(SLA)的VM相關(guān)聯(lián),該服務(wù)級別協(xié)議試圖保證VM用戶的特別服務(wù)級別。QoS屬性621可以使用任何期望的形式來表示。圖6所示的一些示例形式包括最小保證帶寬633、最大保證帶寬636、每秒讀取請求的最小數(shù)量639、每秒讀取請求的最大數(shù)量642、每秒讀取字節(jié)的最小數(shù)量645、每秒讀取字節(jié)的最大數(shù)量648、每秒寫入請求的最小數(shù)量651、每秒寫入請求的最大數(shù)量654、每秒寫入字節(jié)的最小數(shù)量657和每秒寫入字節(jié)的最大數(shù)量660。注意的是,傳統(tǒng)SR-IOV解決方案依賴于圖3的管理程序310以管理QoS要求;本發(fā)明構(gòu)思的實(shí)施例可以將這種管理轉(zhuǎn)移到圖3的FPGA315或圖1的存儲設(shè)備120,從而減少圖3的管理程序310上的負(fù)載和主機(jī)CPU負(fù)載,并由此提高整體系統(tǒng)性能。擴(kuò)展I/0隊(duì)列創(chuàng)建命令535的結(jié)構(gòu)可以被建立以支持QoS屬性621上任何期望的變化,根據(jù)需要包括和/或省略參[0120]最后,共享命名空間屬性624可以表示意圖為請求創(chuàng)建I/O隊(duì)列的VM共享對物理存儲裝置的訪問的命名空間的列表。共享命名空間屬性的概念代表VM隔離的概念的例外:如要共享信息的情形,并且對他們來說共享對公共數(shù)據(jù)集的訪問比對VM之間的消息數(shù)據(jù)的訪問更有效,共享命名空間屬性624提供了這種解決方法。共享命名空間屬性624可以以任何期望的方式實(shí)施:一個(gè)示例是I/O隊(duì)列創(chuàng)建命令535包括共享命名空間ID陣列663,該陣列列出了要對數(shù)據(jù)集進(jìn)行共享訪問的VM的命名空間ID。[0121]圖8示出了圖1的存儲設(shè)備120中的門鈴的存儲器映射,以支持VM隔離。在使用門鈴在圖1的主機(jī)設(shè)備105和圖1的存儲設(shè)備120之間通信的傳統(tǒng)存儲設(shè)備中,可以有多個(gè)門鈴:例如,圖5的I/O隊(duì)列520-1、520-2和520-3中的每一個(gè)都有一個(gè)門鈴。為了支持VM305-1、305-2和305-3訪問這些門鈴,圖1的存儲設(shè)備120可以請求將圖1的主機(jī)設(shè)備105的地址空間的一部分分配給存儲設(shè)備120.然后,圖1的主機(jī)設(shè)備105的地址空間中的地址可以映射到存儲設(shè)備105的存儲器地址。然后,圖3的管理程序310可以向圖3的VM305-1、305-2和305-3提供門鈴的地址,使得圖3的VM305-1、305-2和305-3能夠通過使用圖1的主機(jī)設(shè)備105的地址空間中的地址來訪問門鈴。[0122]但是在圖1的存儲設(shè)備120的傳統(tǒng)實(shí)施方式中,這些門鈴可以駐留在存儲器的連續(xù)部段中:圖8說明了這一點(diǎn)。在圖8中,示出了存儲器805,其表示圖1的存儲設(shè)備120或圖3的FPGA315內(nèi)的存儲器。圖5的I/0隊(duì)列520-1、520-2和520-3的門鈴的存儲器地址810-1、810-2和810-3被示出占據(jù)存儲器的連續(xù)部段,并且全部位于存儲器805的單個(gè)頁面內(nèi)。雖然圖8示出了三個(gè)門鈴占據(jù)存儲器地址810-1、810-2和810-3,但是本發(fā)明構(gòu)思的實(shí)施例可以包括任何數(shù)量的門鈴。在圖1的主機(jī)設(shè)備105作為單個(gè)設(shè)備操作(沒有虛擬化)的情形下,這種布置工作良好。但是,在圖1的主機(jī)設(shè)備105支持需要隔離的多個(gè)虛擬機(jī)的情況下,使所有門鈴都駐留在存儲器805的同一頁面中意味著VM必須共享對存儲器的同一頁面的訪問,這違反[0123]為了解決這個(gè)困難,圖1的存儲設(shè)備120或圖3的FPGA315,取決于哪個(gè)設(shè)備提供門鈴,可以在圖1的存儲器130的不同頁面中定位門鈴存儲器地址,如存儲器815中所示。圖1的存儲設(shè)備120或圖3的FPGA315如何在不同頁面中定位門鈴存儲器地址的示例在2015年9月22日提交的美國專利申請序列號14/862,145中示出,該申請現(xiàn)在處于待決狀態(tài),該申請已經(jīng)作為美國專利公開號2016/0306580公開,通過引用合并于此。通過使用門鈴跨度值(stridevalue),門鈴存儲器地址可以被移位,使得每個(gè)門鈴位于圖1的存儲設(shè)備120或圖3的FPGA315的不同頁面中(在此上下文中,術(shù)語“不同頁面設(shè)備105的地址空間中的對應(yīng)的門鈴地址基于0/S存儲器中頁面的大小而位于不同頁面中)。然后,因?yàn)殚T鈴位于圖1的存儲設(shè)備120或圖3的FPGA315中的不同頁面中,所以圖1的主機(jī)設(shè)備105的地址空間中的對應(yīng)的地址也位于0/S存儲器的不同頁面中。因此,例如,存儲器地址810-1可以映射到存儲器地址820-1,存儲器地址810-2可以映射到存儲器地址820-2,存儲器地址810-3可以映射到存儲器地址820-3,等等。由于頁面825-1、825-2、825-3和825-4可以代表存儲器的不同頁面,在這種映射之后,每個(gè)門鈴可以駐留在存儲器815的不同頁面中。結(jié)果,VM不共享對圖1的存儲器130的單個(gè)頁面的訪問來訪問門鈴,從而支持VM隔[0124]在圖5-圖7中,描述集中在提供圖5的擴(kuò)展I/O隊(duì)列創(chuàng)建命令535的圖1的存儲設(shè)備120和實(shí)現(xiàn)VM隔離的圖1的存儲設(shè)備120上。雖然圖1的存儲設(shè)備120可以包括支持VM隔離的必要硬件,但并非每個(gè)存儲設(shè)備都必須包括該硬件。但是通過在系統(tǒng)中包括圖3的FPGA315,即使當(dāng)圖1的存儲設(shè)備120不包括SR-IOV所需的硬件時(shí),本發(fā)明構(gòu)思的實(shí)施例也可以支持VM隔離和對圖1的存儲設(shè)備120的SR-IOV類型的訪問。此外,即使當(dāng)圖1的存儲設(shè)備120本機(jī)支持SR-IOV時(shí),在系統(tǒng)中包括圖3的FPGA315也可以增強(qiáng)圖1的存儲設(shè)備120的功能。[0125]首先,F(xiàn)PGA315可以包括支持VM隔離的必要硬件。參考回圖3,由于將被發(fā)送到圖1的存儲設(shè)備120的每個(gè)請求都可以經(jīng)過圖3的FPGA315,所以FPGA315可以攔截打算由圖1的存儲設(shè)備120接收的請求。例如,如果圖1的存儲設(shè)備120不支持圖5的擴(kuò)展I/O隊(duì)列創(chuàng)建命令535,則圖3的FPGA315可以攔截任何這樣的請求,并且自己處置I/O隊(duì)列創(chuàng)建。圖3的FP315可以向圖1的存儲設(shè)備120發(fā)送傳統(tǒng)I/O隊(duì)列創(chuàng)建命令,同時(shí)自己管理VM隔離,從而提供QoS保證,并在適當(dāng)時(shí)共享命名空間。為此,圖3的FPGA315可以包括類似于圖1的存儲設(shè)備120中可能以其他方式包括的硬件。圖3的FPGA315可以確定I/O隊(duì)列中的特別的I/0請求是否在與該I/O隊(duì)列相關(guān)聯(lián)的LBA710的范圍內(nèi)(或共享命名空間的一部分)。圖3的FPGA315可以組織和排序要發(fā)送到圖1的存儲設(shè)備120的I/0請求,以便提供QoS保證。[0126]為了支持I/O隊(duì)列創(chuàng)建和VM隔離,圖3的FPGA315可以包括虛擬I/0隊(duì)列創(chuàng)建命令903,如圖9所示。虛擬I/O隊(duì)列創(chuàng)建命令903非常類似于圖6的I/O隊(duì)列創(chuàng)建命令535,并且包括類似的參數(shù)和屬性。主要不同在于,鑒于圖6的I/0隊(duì)列創(chuàng)建命令535意圖由圖1的存儲設(shè)備120處理(盡管如上所述,圖3的FPGA315可以攔截圖6的I/O隊(duì)列創(chuàng)建命令535,并代之以內(nèi)部處理),而虛擬I/0隊(duì)列創(chuàng)建命令903指向圖3的FPGA315,而不是意圖由圖1的存儲設(shè)備[0127]因?yàn)樘摂MI/O隊(duì)列創(chuàng)建命令903意圖實(shí)現(xiàn)類似于I/O隊(duì)列創(chuàng)建命令535的結(jié)果,所以虛擬I/O隊(duì)列創(chuàng)建命令903可以包括與圖9的I/O隊(duì)列創(chuàng)建命令535的屬性/參數(shù)類似的屬性/參數(shù)。因此,虛擬I/O隊(duì)列創(chuàng)建命令可以包括作為傳統(tǒng)I/O隊(duì)列創(chuàng)建命令的一部分的參數(shù),諸如隊(duì)列大小906(應(yīng)為正在建立的隊(duì)列分配多少空間)、隊(duì)列標(biāo)識符909(正在建立的提交隊(duì)列的標(biāo)識符)、完成隊(duì)列標(biāo)識符912(完成隊(duì)列的標(biāo)識符)、隊(duì)列優(yōu)先級915(正在建立的提交隊(duì)列的相對優(yōu)先級)和物理連續(xù)標(biāo)志918(指示提交隊(duì)列和完成隊(duì)列是否在物理上連續(xù))。虛擬I/O隊(duì)列創(chuàng)建命令903還可以包括擴(kuò)展屬性,諸如LBA范圍屬性921、QoS屬性924和共享命名空間屬性927。[0128]就像圖5的I/0隊(duì)列創(chuàng)建命令535一樣,LBA范圍屬性921可以用多種方式表示。例如,LBA范圍屬性921可以包括LBA開始930和LBA結(jié)束933,它們提供了在圖7的LBA范圍710-可能推斷LBA結(jié)束933,這將準(zhǔn)許省略LBA結(jié)束933。擴(kuò)展虛擬I/O隊(duì)列創(chuàng)建命令903的結(jié)構(gòu)可以被建立以支持LBA范圍屬性921上的任何期望的變化,根據(jù)需要包括和/或省略參數(shù)。QoS屬性924可以使用任何期望的形式來表示。圖9所示的一些示例形式包括最小保證帶寬擴(kuò)展虛擬I/O隊(duì)列創(chuàng)建命令903的結(jié)構(gòu)可以被建立以支持QoS屬性924上的任何期望的變化,期望的方式實(shí)施:一個(gè)示例是虛擬I/O隊(duì)列創(chuàng)建命令903包括共享命令903,并將其作為圖5的I/O隊(duì)列創(chuàng)建命令535發(fā)送到圖1的存儲設(shè)備120,而不是在圖3的FPGA315中處理虛擬I/O隊(duì)列創(chuàng)建命令903以創(chuàng)建虛擬I[0132]但是圖3的FPGA315可以做的不僅僅是卸載(offload)支持SR-IOV類型的操作的硬件(準(zhǔn)許圖3的FPGA315與本身不包括SR-IOV類型的硬件的存儲設(shè)備一起使用)。圖3的VM需要訪問其自己在圖1的存儲設(shè)備120上的VF和I/O隊(duì)列。但是圖1的存儲設(shè)備120支持的VF和I/0隊(duì)列的數(shù)量可以表示在任何時(shí)間點(diǎn)可以訪問圖1的存儲設(shè)備120的VM的數(shù)量的上界。這個(gè)上界可能遠(yuǎn)低于圖3的管理程序310(以及圖1的處理器110)可以支持的VM的數(shù)量,列的數(shù)量可能遠(yuǎn)遠(yuǎn)高于由圖1的存儲設(shè)備120直接提供的I/O隊(duì)列(以及PF/VF)的數(shù)量。圖10[0134]在圖10中,假設(shè)I/O隊(duì)列520-1、520-2和520[0135]當(dāng)圖3的管理程序310發(fā)出由FPGA315提供的虛擬I/O隊(duì)列創(chuàng)建命令903時(shí),F(xiàn)PGA315可以建立新的虛擬I/0隊(duì)列。圖10示出了五個(gè)虛擬I/O隊(duì)列1005-1、1005-2、1005-3、的數(shù)量界定)。每個(gè)虛擬I/0隊(duì)列都包括自己的提交隊(duì)列和完成隊(duì)列。因此,虛擬I/0隊(duì)列4和1010-5,以及分別包括完成隊(duì)列1015-1、1015-2、[0136]每個(gè)虛擬I/O隊(duì)列然后可以與圖1的存儲設(shè)備120的(硬件)I/O隊(duì)列相關(guān)聯(lián)。FPGA315可以使用映射邏輯1020,其可以使用任何期望的方法將虛擬I/O隊(duì)列1005-1至1005-5組織成組,并將它們映射到(硬件)I/O隊(duì)列520-1、520-2和520-3。例如,在圖10中,映射邏輯1020可以選擇虛擬I/O隊(duì)列1005-1和1005-2以形成與I/O隊(duì)列520-1相關(guān)聯(lián)的組1025-1,選擇虛擬I/O隊(duì)列1005-3(自身)以形成與I/O隊(duì)列520-2相關(guān)聯(lián)的組1025-2,以及選擇虛擬I/0隊(duì)列1005-4和1005-5以形成與I/O隊(duì)列520-3相關(guān)聯(lián)的組1025-3。因此,F(xiàn)PGA315從圖3的VM305-1、305-2和305-3接收的任何I/0請求可以被“放置”在適當(dāng)?shù)奶摂M提交隊(duì)列中,然后被傳遞到圖1的存儲設(shè)備120的正確(硬件)提交隊(duì)列。類似地,從(硬件)完成隊(duì)列接收的響應(yīng)[0137]映射邏輯1020可以使用任何期望的方法將虛擬I/O隊(duì)列1005-1至1005-5組織成組,其中每個(gè)組與特別的(硬件)I/0隊(duì)列相關(guān)聯(lián)。例如,映射邏輯1020可以將虛擬I/O隊(duì)列隨機(jī)分配給組?;蛘?,映射邏輯1020可以以循環(huán)(round-robin)方式將虛擬I/O隊(duì)列分配給組:第一虛擬I/O隊(duì)列分配給第一組,第二虛擬I/O隊(duì)列分配給第二組,依此類推,直到所有組都可以基于圖3的VM305-1、305-2和305-3的預(yù)期I/0負(fù)載將虛擬I/O隊(duì)列分配給組,以嘗試平衡組間的I/0負(fù)載。或者,映射邏輯1020可以基于為圖3的VM305-1、305-2和305-3指定的相對優(yōu)先級將虛擬I/O隊(duì)列分配給組(注意的是,圖6的隊(duì)列優(yōu)先級612是傳統(tǒng)NVMe規(guī)范定義的I/O隊(duì)列創(chuàng)建命令的一部分,以及圖9的隊(duì)列優(yōu)先級915是圖9的虛擬I/O隊(duì)列創(chuàng)建命令903的一部分)?;蛘撸成溥壿?020可以基于圖9的QoS屬性924將虛擬I/O隊(duì)列分配給組,以試圖滿足VM305-1、305-2和305-3的QoS要求。本發(fā)明構(gòu)思的實(shí)施例還可以采用其他方法來確定將哪些虛擬I/O隊(duì)列分配給哪些組。[0138]由于FPGA315知道哪些LBA與每個(gè)虛擬I/O隊(duì)列相關(guān)聯(lián)(經(jīng)由圖9的LBA范圍屬性921和/或圖9的共享命名空間屬性927),所以FPGA315可以通過拒絕不適合該虛擬I/O隊(duì)列的I/0請求來強(qiáng)制VM隔離。類似地,因?yàn)镕PGA315知道VM的QoS要求(經(jīng)由圖9的QoS屬性924),所以FPGA315可以以滿足每個(gè)VM的QoS要求的方式將I/0請求轉(zhuǎn)發(fā)到I/0隊(duì)列520-1、520-2和520-3.因此,例如,如果VM已經(jīng)建立了每秒至少10個(gè)I/0請求的QoS要求(假設(shè)可能I/0請求正在等待處理(pending)),則FPGA315可以在轉(zhuǎn)發(fā)來自其他虛擬I/O隊(duì)列的I/0請求之前優(yōu)先處理來自對應(yīng)的虛擬I/O隊(duì)列的I/0請求。(這個(gè)示例有些隨意,因?yàn)樗凳緵]有其他VM具有QoS要求:在多個(gè)VM具有QoS要求的情況下,F(xiàn)PGA315可以以滿足所有VMQoS要[0139]圖11示出了根據(jù)本發(fā)明構(gòu)思的實(shí)施例的圖1的存儲設(shè)備120為圖3的VM305分配圖5的I/O隊(duì)列520的示例過程的流程圖。在圖11中,在塊1105處,圖1的存儲設(shè)備120可以從圖3的管理程序310接收圖5的I/O隊(duì)列創(chuàng)建命令535。可替代地,在塊1110處,圖1的存儲設(shè)備120可以從圖3的FPGA315接收圖5的I/O隊(duì)列創(chuàng)建命令535。在任一情況下,圖5的I/O隊(duì)列創(chuàng)建命令535可以包括圖7的LBA的范圍710。不管圖5的I/O隊(duì)列創(chuàng)建命令535的源如何,在塊1115處,圖1的存儲設(shè)備120可以建立圖5的I/O隊(duì)列520。在塊1120處,圖1的存儲設(shè)備120可以選擇足夠大以支持接收到的圖7的LBA的范圍710的圖7的PBA的范圍715。在塊1125處,圖1的存儲設(shè)備120可以將圖7的LBA的范圍710映射到圖7的PBA的范圍715。這樣,當(dāng)圖1的存儲設(shè)備120接收到I/0請求時(shí),可以僅訪問對應(yīng)于圖3的VM305的圖7的PBA的范圍715,從而將每個(gè)VM與其他VM隔離。以類似的方式,由于圖7的LBA的范圍710和圖7的PBA的范圍715之間的映當(dāng)?shù)耐瓿申?duì)列來通知圖3的VM305I/0請求被完成,如圖11的塊1130中所建議的(其中I/0請求的成功可以返回到圖3的VM305)。[0140]注意的是,塊1105和1110建議使用圖5的擴(kuò)展I/O隊(duì)列創(chuàng)建命令535,而不管圖5的I/O隊(duì)列創(chuàng)建命令535的源如何。雖然本發(fā)明構(gòu)思的實(shí)施例包括這樣的可能性,但是本發(fā)明構(gòu)思的其他實(shí)施例可以包括圖1的存儲設(shè)備120,其不支持圖5的擴(kuò)展I/O隊(duì)列創(chuàng)建命令535。在本發(fā)明構(gòu)思的這些實(shí)施例中,圖3的FPGA315可以支持利用圖1的存儲設(shè)備120模擬SR-IOV的所有功能,并且圖1的存儲設(shè)備120在沒有I/0請求的任何上下文的情況下處理I/0請為傳統(tǒng)存儲設(shè)備操作,而不實(shí)施本發(fā)明構(gòu)思的任何功能。[0141]圖12示出了根據(jù)本發(fā)明構(gòu)思的實(shí)施例的圖3的FPGA315為圖3的VM305分配圖10的虛擬I/O隊(duì)列1005的示例過程的流程圖。在圖12中,在塊1205處,圖3的FPGA315可以從圖3的管理程序310接收圖10的虛擬I/O隊(duì)列創(chuàng)建命令903。在塊1210處,圖3的FPGA315可以為圖3的VM305建立圖10的虛擬I/O隊(duì)列1005。在塊1215處,圖3的FPGA315可以向圖1的存儲設(shè)備120發(fā)送圖5的I/O隊(duì)列創(chuàng)建命令535.注意的是,如果圖1的存儲設(shè)備120支持,則發(fā)送到圖1的存儲設(shè)備120的圖5的I/O隊(duì)列創(chuàng)建命令535可以是該命令的擴(kuò)展版本,或者如果不支持,則可以是傳統(tǒng)I/O隊(duì)列創(chuàng)建命令。在塊1220處,圖3的FPGA315可以從圖1的存儲設(shè)備120接收圖5的I/O隊(duì)列創(chuàng)建命令535的結(jié)果。[0142]在塊1225處,圖10的映射邏輯1020可以將圖10的虛擬I/O隊(duì)列1005映射到由圖1的存儲設(shè)備120建立的圖5的I/O隊(duì)列520。在塊1230處,圖3的FPGA315可以將圖7的LBA的范圍710與圖10的虛擬I/O隊(duì)列1005相關(guān)聯(lián)。最后,在塊1235處,圖3的FPGA315可以向圖3的管理程序310返回成功指示符。的存儲設(shè)備120可能不接收圖5的擴(kuò)展I/0隊(duì)列創(chuàng)建命令535(在圖3的FPGA315實(shí)施本發(fā)明構(gòu)思的所有功能并且圖1的存儲設(shè)備120是傳統(tǒng)存儲設(shè)備的本發(fā)明構(gòu)思的實(shí)施例中),但是圖3的FPGA315卻不是這樣。從圖3的管理程序310發(fā)送到圖1的存儲設(shè)備120的任何命令,或者從圖3的VM305發(fā)送到圖1的存儲設(shè)備120的任何I/0請求,都經(jīng)過圖3的FPGA315.由于這樣的命令將包括I/O隊(duì)列創(chuàng)建命令(或?qū)嶋H的或虛擬的),所以可以期望圖3的FPGA315接收擴(kuò)展的I/O隊(duì)列創(chuàng)建命令。如果圖1的存儲設(shè)備120可以實(shí)施圖5的I/O隊(duì)列創(chuàng)建命令535,則圖3的FPGA315根本不需要接收圖10的虛擬I/O隊(duì)列創(chuàng)建命令903(盡管本發(fā)明構(gòu)思的實(shí)施例可以包括圖3的管理程序310向圖3的FPGA315發(fā)送圖10的虛擬I/0隊(duì)列創(chuàng)建命令903,將其留給圖3的FPGA315來自己執(zhí)行命令或者向圖1的存儲設(shè)備120發(fā)出圖5的I/O隊(duì)列創(chuàng)建命令535)。并且如果圖3的FPGA315執(zhí)行隊(duì)列到VM分配和上下文管理,則圖3的FPGA315將希望接收圖9的虛擬I/O隊(duì)列創(chuàng)建命令903。[0144]第二,請注意,塊1215和1220假設(shè)圖5的I/O隊(duì)列520尚未在存儲設(shè)備120上建立。如果在執(zhí)行期間,圖5的I/O隊(duì)列520已經(jīng)在圖1的存儲設(shè)備120上建立(例如,如果圖3的FPGA315正在將圖10的多個(gè)虛擬I/O隊(duì)列1005映射到圖5的存儲設(shè)備120上的圖5的單獨(dú)I/O隊(duì)列520),則塊1215和1220可以被省略,如虛線1240所示。[0145]第三,圖3的FPGA315可能不需要存儲圖10的虛擬I/O隊(duì)列1005的上下文信息。例如,如果圖1的存儲設(shè)備120將圖7的LBA的范圍710映射到圖7的PBA的范圍715,并且存儲關(guān)于圖5的I/0隊(duì)列520的圖3的VM305的上下文信息,則塊1230可以被省略,如虛線1245所示。[0146]圖13示出了根據(jù)本發(fā)明構(gòu)思的實(shí)施例的圖3的管理程序310處理來自圖3的VM305-1、305-2和305-3的管控請求的示例過程的流程圖。在圖13中,在塊1305處,圖3的管理程序310可以從圖3的VM305接收管控請求。在塊1310處,圖3的管理程序310可以捕獲該請求。然后,在塊1315處,圖3的管理程序310可以向圖3的FPGA315發(fā)送不同的(如果類似的話)請求:該第二請求可以模擬原始請求。在塊1320處,圖3的管理程序310可以從圖3的FPGA315接收結(jié)果。注意的是,圖3的FPGA315可能已經(jīng)在內(nèi)部處理了第二請315可能已經(jīng)將其自己的請求轉(zhuǎn)發(fā)到圖1的存儲設(shè)備120:圖3的管理程序310不關(guān)心圖3的FPGA315如何處理第二請求。最后,在塊1325處,圖3的管理程序310可以將結(jié)果返回到圖3[0147]圖14示出了根據(jù)本發(fā)明構(gòu)思的實(shí)施例的用于圖1的存儲設(shè)備120或圖3的FPGA315將門鈴的圖8的存儲器地址810映射到圖8的不同操作系統(tǒng)頁面825以支持VM隔離的示例過程的流程圖。注意的是,無論示例過程是由圖1的存儲設(shè)備120還是圖3的FPGA315來實(shí)施,示例過程都是相同的。出于描述性的目的,圖3的FPGA315將被描述為執(zhí)行示例過程,但是本發(fā)明構(gòu)思的實(shí)施例擴(kuò)展到也執(zhí)行示例過程的圖1的存儲設(shè)備120。[0148]在圖14中,在塊1405處,圖3的FPGA315可以識別用于管理圖3的FPGA315和圖3的VM305之間的通信的門鈴。在塊1410處,圖3的FPGA315可以基于圖1的主機(jī)設(shè)備105中的圖1的存儲器130的頁面大小,在不同的存儲器頁面上分布圖8的存儲器地址820。例如,圖3的FPGA315可以使用門鈴跨度值來在不同頁面中定位圖8的門鈴存儲器地址820。在塊1415處,圖3的FPGA315可以向圖1的主機(jī)設(shè)備105請求地址空間。在塊1420處,F(xiàn)PGA315可圖8的存儲器地址820映射到所請求的地址空間中的存儲器地址。以這種方式,可以保持VM隔離,因?yàn)闆]有兩個(gè)VM305可以訪問它們在公共存儲器頁面上的門鈴。在塊1425處,圖3的FPGA315可以向圖3的VM305提供圖8的新的存儲器地址820。[0149]在塊1430處,圖3的FPGA315可以從圖3的VM305接收請求以訪問在映射的存儲器地址處的門鈴。在塊1435處,圖3的FPGA315可以將映射反轉(zhuǎn),恢復(fù)圖8的原始存儲器地址820。在塊1440處,圖3的FPGA315可以將請求發(fā)送到圖8的原始存儲器地址820。[0150]在圖11-圖14中,示出了本發(fā)明構(gòu)思的一些實(shí)施例。但是本領(lǐng)域技術(shù)人員將認(rèn)識到,通過改變塊的順序、省略塊或通過包括附圖中未示出的塊,本發(fā)明構(gòu)思的其他實(shí)施例也是可能的。流程圖的所有這些變化被認(rèn)為是本發(fā)明構(gòu)思的實(shí)施例,無論是否明確描述。[0151]本發(fā)明構(gòu)思的實(shí)施例提供了現(xiàn)有技術(shù)之上的幾個(gè)技術(shù)優(yōu)勢。首先,通過去除圖1的存儲設(shè)備120中的硬件的要求以支持VM隔離并使用圖3的FPGA315,理論上任何存儲設(shè)備都可以用于需要SR-IOV類型的功能的系統(tǒng)中,因?yàn)閳D3的FPGA315可以強(qiáng)制VM隔離。第二,由于圖3的FPGA315可以在安裝時(shí)編程,所以要由系統(tǒng)提供的特定期望功能可以在安裝時(shí)建立,而不是在存儲設(shè)備120的制造點(diǎn)固定(這可能不會為所有安裝提供最佳解決方案)。第三,圖3的FPGA315可以提供比圖1的存儲設(shè)備120更多的VF,使得能夠在具有更多數(shù)量的VM映射到不同的0/S存儲器頁面,進(jìn)一步增強(qiáng)VM隔離。以及第六,因?yàn)镮/0請求的上下文可以追溯到特別的I/O隊(duì)列,即使在從該I/0隊(duì)列中移除之后,圖1的存儲設(shè)備120仍然可以支持VM[0152]下面的討論意圖提供對其中可以實(shí)施本發(fā)明構(gòu)思的某些方面的一個(gè)或多個(gè)合適的機(jī)器的簡要、一般描述。一個(gè)或多個(gè)機(jī)器可以至少部分地由來自傳統(tǒng)輸入設(shè)備(諸如鍵盤、鼠標(biāo)等)的輸入、以及通過從另一個(gè)機(jī)器接收到的指令、與虛擬現(xiàn)實(shí)(VirtualReality,地涵蓋單個(gè)機(jī)器、虛擬機(jī)或通信耦合的機(jī)器、虛擬機(jī)或一起操作的設(shè)備的系統(tǒng)。示例性機(jī)器[0153]一個(gè)或多個(gè)機(jī)器可以包括嵌入式控制器,諸如可編程或非可編程邏輯設(shè)備或陣能卡等。一個(gè)或多個(gè)機(jī)器可以利用到一個(gè)或多個(gè)遠(yuǎn)程機(jī)器的一個(gè)或多個(gè)連接,諸如通過網(wǎng)絡(luò)接口、調(diào)制解調(diào)器或其他通信耦合。機(jī)器可以通過物理和/或邏輯網(wǎng)絡(luò)互連,諸如內(nèi)部網(wǎng)、互聯(lián)網(wǎng)、局域網(wǎng)、廣域網(wǎng)等。本領(lǐng)域技術(shù)人員將理解,網(wǎng)絡(luò)通[0154]本發(fā)明構(gòu)思的實(shí)施例可以通過參考或結(jié)合相關(guān)聯(lián)的數(shù)據(jù)來描述,相關(guān)聯(lián)的數(shù)據(jù)包定義抽象數(shù)據(jù)類型或低級別硬件上下文。相關(guān)聯(lián)的數(shù)據(jù)可以存儲在例如易失性和/或非易據(jù)可以以分組、串行數(shù)據(jù)、并行數(shù)據(jù)、傳播信號等的形式在包括物理和/或邏輯網(wǎng)絡(luò)的傳輸環(huán)境上傳遞。并且可以以壓縮或加密格式使用。相關(guān)聯(lián)的數(shù)據(jù)可以在分布式環(huán)境中使用,并且在本地和/或遠(yuǎn)程存儲以供機(jī)器訪問。[0155]本發(fā)明構(gòu)思的實(shí)施例可以包括包括由一個(gè)或多個(gè)處理器可執(zhí)行的指令的有形的、非暫時(shí)性的機(jī)器可讀介質(zhì),該指令包括用于執(zhí)行如本文所述的本發(fā)明構(gòu)思的元素的指令。[0156]上述方法的各種操作可以通過能夠執(zhí)行這些操作的任何合適的裝置來執(zhí)行,諸如各種(多個(gè))硬件和/或軟件組件、電路和/或(多個(gè))模塊。該軟件可以包括用于實(shí)施邏輯功能的可執(zhí)行指令的有序列表,并且可以體現(xiàn)在任何“處理器可讀介質(zhì)”中,以供指令執(zhí)行系統(tǒng)、裝置或設(shè)備(諸如單核或多核處理器或包含處理器的系統(tǒng))使用或與指令執(zhí)行系統(tǒng)、裝置或設(shè)備結(jié)合使用。[0157]結(jié)合本文公開的實(shí)施例描述的方法或算法和功能的塊或步驟可以直接體現(xiàn)在硬件中、由處理器執(zhí)行的軟件模塊中、或者兩者的組合中。如果以軟件實(shí)施,則這些功能可以作為一個(gè)或多個(gè)指令或代碼存儲在有形的、非暫時(shí)性的計(jì)算機(jī)可讀介質(zhì)上或在其上傳輸。軟件模塊可以駐留在隨機(jī)存取存儲器(RandomAccessMemory,RAM)、閃存、只讀存儲器本領(lǐng)域已知的任何其他形式的存儲介質(zhì)中。[0158]已經(jīng)參考示出的實(shí)施例描述和示出了本發(fā)明構(gòu)思的原理,應(yīng)當(dāng)認(rèn)識到,示出的實(shí)施例可以在不脫離這些原理的情況下在布置和細(xì)節(jié)上進(jìn)行修改,并且可以以任何期望的方即使在本文使用諸如“根據(jù)本發(fā)明構(gòu)思的實(shí)施例”等表達(dá)方式,這些短語也意味著一般參考實(shí)施例可能
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026福建三明市尤溪縣總醫(yī)院醫(yī)學(xué)人才校園(福建中醫(yī)藥大學(xué))專場公開招聘7人的通告考試備考題庫附答案
- 2026福建龍巖市第一醫(yī)院醫(yī)療類引進(jìn)生招聘16人參考題庫附答案
- 2026西藏自治區(qū)定向選調(diào)生招錄(70人)考試備考題庫附答案
- 公共交通乘客信息管理制度
- 2026黑龍江哈爾濱啟航勞務(wù)派遣有限公司派遣到哈工大計(jì)算學(xué)部社會計(jì)算與交互機(jī)器人研究中心招聘1人參考題庫附答案
- 北京市公安局輔警崗位招聘300人備考題庫附答案
- 景德鎮(zhèn)市公安局2025年下半年招聘警務(wù)輔助人員體能測評考試備考題庫附答案
- 特飛所2026屆校園招聘考試備考題庫附答案
- 鄰水縣2025年下半年公開考調(diào)公務(wù)員(21人)參考題庫附答案
- 2026陜西省面向中國政法大學(xué)招錄選調(diào)生考試備考題庫附答案
- 2025核電行業(yè)市場深度調(diào)研及發(fā)展趨勢與商業(yè)化前景分析報(bào)告
- 急驚風(fēng)中醫(yī)護(hù)理查房
- 營地合作分成協(xié)議書
- GB/T 70.2-2025緊固件內(nèi)六角螺釘?shù)?部分:降低承載能力內(nèi)六角平圓頭螺釘
- 基于視頻圖像的大型戶外場景三維重建算法:挑戰(zhàn)、創(chuàng)新與實(shí)踐
- 物流管理畢業(yè)論文范文-物流管理畢業(yè)論文【可編輯全文】
- 2025年四川省高職單招模擬試題語數(shù)外全科及答案
- 2025年江蘇事業(yè)單位教師招聘體育學(xué)科專業(yè)知識考試試卷含答案
- 網(wǎng)絡(luò)銷售人員培訓(xùn)
- 設(shè)備租賃績效考核與激勵方案設(shè)計(jì)實(shí)施方法規(guī)定
- 合肥市軌道交通集團(tuán)有限公司招聘筆試題庫及答案2025
評論
0/150
提交評論