1.一種鍵值存儲方法,其特征在于,所述方法包括:
在主機(jī)檢測到鍵值存儲請求之后,所述主機(jī)將所述鍵值存儲請求攜帶的第一指令碼、以及地址信息寫入?yún)f(xié)議定義的字段組成第一存儲請求指令序列,其中,所述第一指令碼為根據(jù)所述協(xié)議的預(yù)留擴(kuò)展字段定義的指令碼;
所述主機(jī)與所述存儲控制器進(jìn)行交互,以使得所述存儲控制器獲取所述第一存儲請求指令序列。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述主機(jī)將所述鍵值存儲請求攜帶的第一指令碼、以及地址信息寫入?yún)f(xié)議定義的字段組成第一存儲請求指令序列,包括:
所述主機(jī)按照協(xié)議定義的字段為第一存儲請求指令序列分配內(nèi)存;
所述主機(jī)將所述鍵值存儲請求攜帶的第一指令碼、以及地址信息寫入所述內(nèi)存;
所述主機(jī)與所述存儲控制器進(jìn)行交互,以使得所述存儲控制器獲取所述第一存儲請求指令序列,包括:
所述主機(jī)通知所述存儲控制器從所述內(nèi)存中讀取所述第一存儲請求指令序列。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述鍵值存儲請求包括:寫數(shù)據(jù)請求、或者獲取數(shù)據(jù)請求、或者刪除數(shù)據(jù)請求、或者廢棄數(shù)據(jù)請求;
其中,所述寫數(shù)據(jù)請求攜帶的地址信息包括鍵和值存放的地址信息;
所述獲取數(shù)據(jù)請求攜帶的地址信息包括鍵存放的地址信息;
所述刪除數(shù)據(jù)請求攜帶的地址信息包括鍵存放的地址信息;
所述廢棄數(shù)據(jù)請求攜帶的地址信息包括鍵存放的地址信息。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,若所述鍵值存儲請求為獲取數(shù)據(jù)請求,則在主機(jī)檢測到鍵值存儲請求之后,在所述主機(jī)將所述鍵值存儲請求攜帶的第一指令碼、以及地址信息寫入?yún)f(xié)議定義的字段組成第一存儲請求指令序列之前,還包括:
所述主機(jī)獲取所述獲取數(shù)據(jù)請求所請求的值的長度;
所述主機(jī)根據(jù)所述值的長度為所述值分配內(nèi)存,以使得在所述主機(jī)與所述存儲控制器進(jìn)行交互,以使得所述存儲控制器獲取所述第一存儲請求指令序列之后,所述存儲控制器讀數(shù)據(jù)到所述主機(jī)為所述值分配的內(nèi)存。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述主機(jī)獲取所述獲取數(shù)據(jù)請求所請求的值的長度,包括:
所述主機(jī)將獲取鍵對應(yīng)的值的長度的指令碼、以及所述鍵存放的地址信息寫入所述協(xié)議定義的字段組成第二存儲請求指令序列,其中,所述獲取鍵對應(yīng)的值的長度的指令碼為根據(jù)所述協(xié)議的預(yù)留擴(kuò)展字段定義的指令碼;
所述主機(jī)與所述存儲控制器進(jìn)行交互,以使得所述存儲控制器獲取所述第二存儲請求指令序列;
所述主機(jī)接收所述存儲控制器發(fā)送的所述值的長度。
6.根據(jù)權(quán)利要求1-5任一項(xiàng)所述的方法,其特征在于,所述鍵值存儲請求為包含多個單次鍵值存儲請求的聚合鍵值存儲請求;其中,
所述鍵值存儲請求攜帶的地址信息通過聚散表的地址信息進(jìn)行索引,所述聚散表中包含所述多個單次鍵值存儲請求中每個單次鍵值存儲請求攜帶的地址信息。
7.根據(jù)權(quán)利要求1-6任一項(xiàng)所述的方法,其特征在于,所述方法還包括:
在所述主機(jī)檢測到非鍵值存儲請求之后,所述主機(jī)將所述非鍵值存儲請求攜帶的第二指令碼、以及數(shù)據(jù)內(nèi)存指針寫入所述協(xié)議定義的字段組成第三存儲請求指令序列,其中,所述第二指令碼為所述協(xié)議的標(biāo)準(zhǔn)指令碼;
所述主機(jī)與所述存儲控制器進(jìn)行交互,以使得所述存儲控制器獲取所述第三存儲請求指令序列。
8.根據(jù)權(quán)利要求1-7任一項(xiàng)所述的方法,其特征在于,所述協(xié)議為非易失性存儲標(biāo)準(zhǔn)NVMe協(xié)議;
其中,所述NVMe協(xié)議定義0-63字節(jié)為存儲請求指令序列的字段。
9.一種鍵值存儲方法,其特征在于,所述方法包括:
存儲控制器獲取第一存儲請求指令序列,所述第一存儲請求指令序列由所述主機(jī)將鍵值存儲請求攜帶的第一指令碼、以及地址信息寫入?yún)f(xié)議定義的字段組成,其中,所述第一指令碼為根據(jù)所述協(xié)議的預(yù)留擴(kuò)展字段定義的指令碼;
所述存儲控制器從所述第一存儲請求指令序列中分離出所述第一指令碼和所述地址信息;
所述存儲控制器根據(jù)所述第一指令碼和所述地址信息,對存儲設(shè)備進(jìn)行所述第一指令碼對應(yīng)的操作。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述存儲控制器獲取第一存儲請求指令序列,包括:
所述存儲控制器從主機(jī)按照協(xié)議定義的字段為所述第一存儲請求指令序列分配的內(nèi)存中讀取第一存儲請求指令序列。
11.根據(jù)權(quán)利要求9或10所述的方法,其特征在于,所述鍵值存儲請求包括:寫數(shù)據(jù)請求、或者獲取數(shù)據(jù)請求、或者刪除數(shù)據(jù)請求、或者廢棄數(shù)據(jù)請求;
其中,所述寫數(shù)據(jù)請求攜帶的地址信息包括鍵和值存放的地址;
所述獲取數(shù)據(jù)請求攜帶的地址信息包括鍵存放的地址信息;
所述刪除數(shù)據(jù)請求攜帶的地址信息包括鍵存放的地址信息;
所述廢棄數(shù)據(jù)請求攜帶的地址信息包括鍵存放的地址信息。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,若所述鍵值存儲請求為獲取數(shù)據(jù)請求,則在所述存儲控制器獲取第一存儲請求指令序列之前,還包括:
所述存儲控制器獲取所述獲取數(shù)據(jù)請求所請求的值的長度;
所述存儲控制器向所述主機(jī)發(fā)送所述值的長度,以使得所述主機(jī)根據(jù)所述值的長度為所述值分配內(nèi)存;
所述存儲控制器根據(jù)所述第一指令碼和所述地址信息,對存儲設(shè)備進(jìn)行所述第一指令碼對應(yīng)的操作,包括:
所述存儲控制器根據(jù)所述第一指令碼和所述地址信息,讀數(shù)據(jù)到所述主機(jī)為所述值分配的內(nèi)存。
13.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述存儲控制器獲取所述獲取數(shù)據(jù)請求所請求的值的長度,包括:
所述存儲控制器獲取第二存儲請求指令序列,所述第二存儲請求指令序列由所述主機(jī)將獲取鍵對應(yīng)的值的長度的指令碼、以及所述鍵存放的地址信息寫入所述協(xié)議定義的字段組成,其中,所述獲取鍵對應(yīng)的值的長度的指令碼為根據(jù)所述協(xié)議的預(yù)留擴(kuò)展字段定義的指令碼;
所述存儲控制器從所述第二存儲請求指令序列中分離出所述獲取鍵對應(yīng)的值的長度的指令碼、以及所述鍵存放的地址信息;
所述存儲控制器根據(jù)所述獲取鍵對應(yīng)的值的長度的指令碼、以及所述鍵存放的地址信息,從所述存儲設(shè)備中獲取所述值的長度。
14.根據(jù)權(quán)利要求9-13任一項(xiàng)所述的方法,其特征在于,所述鍵值存儲請求為包含多個單次鍵值存儲請求的聚合鍵值存儲請求;其中,
所述鍵值存儲請求攜帶的地址信息通過聚散表的地址信息進(jìn)行索引,所述聚散表中包含所述多個單次鍵值存儲請求中每個單次鍵值存儲請求攜帶的地址信息。
15.根據(jù)權(quán)利要求9-14任一項(xiàng)所述的方法,其特征在于,所述方法還包括:
所述存儲控制器獲取第三存儲請求指令序列,所述第三存儲請求指令序列由所述主機(jī)將非鍵值存儲請求攜帶的第二指令碼、以及數(shù)據(jù)內(nèi)存指針寫入所述協(xié)議定義的字段組成,其中,所述第二指令碼為所述協(xié)議的標(biāo)準(zhǔn)指令碼;
所述存儲控制器從所述第三存儲請求指令序列中分離出所述第二指令碼和所述數(shù)據(jù)內(nèi)存指針;
所述存儲控制器根據(jù)所述第二指令碼和所述數(shù)據(jù)內(nèi)存指針,對所述存儲設(shè)備進(jìn)行所述第二指令碼對應(yīng)的操作。
16.根據(jù)權(quán)利要求9-15任一項(xiàng)所述的方法,其特征在于,所述協(xié)議包括非易失性存儲標(biāo)準(zhǔn)NVMe協(xié)議;
其中,所述NVMe協(xié)議定義0-63字節(jié)為存儲請求指令序列的字段。
17.一種主機(jī),其特征在于,所述主機(jī)包括:處理模塊和通信模塊;
所述處理模塊,用于在檢測到鍵值存儲請求之后,將所述鍵值存儲請求攜帶的第一指令碼、以及地址信息寫入?yún)f(xié)議定義的字段組成第一存儲請求指令序列,其中,所述第一指令碼為根據(jù)所述協(xié)議的預(yù)留擴(kuò)展字段定義的指令碼;
所述通信模塊,用于與所述存儲控制器進(jìn)行交互,以使得所述存儲控制器獲取所述第一存儲請求指令序列。
18.根據(jù)權(quán)利要求17所述的主機(jī),其特征在于,所述處理模塊具體用于:
按照協(xié)議定義的字段為第一存儲請求指令序列分配內(nèi)存;
將所述鍵值存儲請求攜帶的第一指令碼、以及地址信息寫入所述內(nèi)存;
所述通信模塊具體用于:
通知所述存儲控制器從所述內(nèi)存中讀取所述第一存儲請求指令序列。
19.根據(jù)權(quán)利要求17或18所述的主機(jī),其特征在于,所述鍵值存儲請求包括:寫數(shù)據(jù)請求、或者獲取數(shù)據(jù)請求、或者刪除數(shù)據(jù)請求、或者廢棄數(shù)據(jù)請求;
其中,所述寫數(shù)據(jù)請求攜帶的地址信息包括鍵和值存放的地址信息;
所述獲取數(shù)據(jù)請求攜帶的地址信息包括鍵存放的地址信息;
所述刪除數(shù)據(jù)請求攜帶的地址信息包括鍵存放的地址信息;
所述廢棄數(shù)據(jù)請求攜帶的地址信息包括鍵存放的地址信息。
20.根據(jù)權(quán)利要求19所述的主機(jī),其特征在于,若所述鍵值存儲請求為獲取數(shù)據(jù)請求,則
所述處理模塊,還用于在檢測到鍵值存儲請求之后,將所述鍵值存儲請求攜帶的第一指令碼、以及地址信息寫入?yún)f(xié)議定義的字段組成第一存儲請求指令序列之前,獲取所述獲取數(shù)據(jù)請求所請求的值的長度;
根據(jù)所述值的長度為所述值分配內(nèi)存,以使得在所述通信模塊與所述存儲控制器進(jìn)行交互,以使得所述存儲控制器獲取所述第一存儲請求指令序列之后,所述存儲控制器讀數(shù)據(jù)到所述處理模塊為所述值分配的內(nèi)存。
21.根據(jù)權(quán)利要求20所述的主機(jī),其特征在于,所述處理模塊具體用于:
將獲取鍵對應(yīng)的值的長度的指令碼、以及所述鍵存放的地址信息寫入所述協(xié)議定義的字段組成第二存儲請求指令序列,其中,所述獲取鍵對應(yīng)的值的長度的指令碼為根據(jù)所述協(xié)議的預(yù)留擴(kuò)展字段定義的指令碼;
通過所述通信模塊與所述存儲控制器進(jìn)行交互,以使得所述存儲控制器獲取所述第二存儲請求指令序列;
通過所述通信模塊接收所述存儲控制器發(fā)送的所述值的長度。
22.根據(jù)權(quán)利要求17-21任一項(xiàng)所述的主機(jī),其特征在于,所述鍵值存儲請求為包含多個單次鍵值存儲請求的聚合鍵值存儲請求;其中,
所述鍵值存儲請求攜帶的地址信息通過聚散表的地址信息進(jìn)行索引,所述聚散表中包含所述多個單次鍵值存儲請求中每個單次鍵值存儲請求攜帶的地址信息。
23.根據(jù)權(quán)利要求17-22任一項(xiàng)所述的主機(jī),其特征在于,
所述處理模塊,還用于在檢測到非鍵值存儲請求之后,將所述非鍵值存儲請求攜帶的第二指令碼、以及數(shù)據(jù)內(nèi)存指針寫入所述協(xié)議定義的字段組成第三存儲請求指令序列,其中,所述第二指令碼為所述協(xié)議的標(biāo)準(zhǔn)指令碼;
所述通信模塊,還用于與所述存儲控制器進(jìn)行交互,以使得所述存儲控制器獲取所述第三存儲請求指令序列。
24.根據(jù)權(quán)利要求17-23任一項(xiàng)所述的主機(jī),其特征在于,所述協(xié)議包括非易失性存儲標(biāo)準(zhǔn)NVMe協(xié)議;
其中,所述NVMe協(xié)議定義0-63字節(jié)為存儲請求指令序列的字段。
25.一種存儲控制器,其特征在于,所述存儲控制器包括:前端通信模塊、后端通信模塊、處理模塊和控制模塊;
所述前端通信模塊,用于從主機(jī)獲取第一存儲請求指令序列,所述第一存儲請求指令序列由所述主機(jī)將鍵值存儲請求攜帶的第一指令碼、以及地址信息寫入?yún)f(xié)議定義的字段組成,其中,所述第一指令碼為根據(jù)所述協(xié)議的預(yù)留擴(kuò)展字段定義的指令碼;
所述處理模塊,用于從所述第一存儲請求指令序列中分離出所述第一指令碼和所述地址信息;
所述控制模塊,用于根據(jù)所述第一指令碼和所述地址信息,通過所述后端通信模塊對存儲設(shè)備進(jìn)行所述第一指令碼對應(yīng)的操作。
26.根據(jù)權(quán)利要求25所述的存儲控制器,其特征在于,所述前端通信模塊具體用于:
從所述主機(jī)按照協(xié)議定義的字段為所述第一存儲請求指令序列分配的內(nèi)存中讀取所述第一存儲請求指令序列。
27.根據(jù)權(quán)利要求25或26所述的存儲控制器,其特征在于,所述鍵值存儲請求包括:寫數(shù)據(jù)請求、或者獲取數(shù)據(jù)請求、或者刪除數(shù)據(jù)請求、或者廢棄數(shù)據(jù)請求;
其中,所述寫數(shù)據(jù)請求攜帶的地址信息包括鍵和值存放的地址;
所述獲取數(shù)據(jù)請求攜帶的地址信息包括鍵存放的地址信息;
所述刪除數(shù)據(jù)請求攜帶的地址信息包括鍵存放的地址信息;
所述廢棄數(shù)據(jù)請求攜帶的地址信息包括鍵存放的地址信息。
28.根據(jù)權(quán)利要求27所述的存儲控制器,其特征在于,若所述鍵值存儲請求為獲取數(shù)據(jù)請求,則
所述處理模塊,還用于在所述前端通信模塊獲取第一存儲請求指令序列之前,獲取所述獲取數(shù)據(jù)請求所請求的值的長度;
所述通信模塊,還用于向所述主機(jī)發(fā)送所述值的長度,以使得所述主機(jī)根據(jù)所述值的長度為所述值分配內(nèi)存;
所述控制模塊具體用于:
根據(jù)所述第一指令碼和所述地址信息,讀數(shù)據(jù)到所述主機(jī)為所述值分配的內(nèi)存。
29.根據(jù)權(quán)利要求28所述的存儲控制器,其特征在于,所述處理模塊具體用于:
通過所述前端通信模塊獲取第二存儲請求指令序列,所述第二存儲請求指令序列由所述主機(jī)將獲取鍵對應(yīng)的值的長度的指令碼、以及所述鍵存放的地址信息寫入所述協(xié)議定義的字段組成,其中,所述獲取鍵對應(yīng)的值的長度的指令碼為根據(jù)所述協(xié)議的預(yù)留擴(kuò)展字段定義的指令碼;
從所述第二存儲請求指令序列中分離出所述獲取鍵對應(yīng)的值的長度的指令碼、以及所述鍵存放的地址信息;
根據(jù)所述獲取鍵對應(yīng)的值的長度的指令碼、以及所述鍵存放的地址信息,通過所述控制模塊和所述后端通信模塊從所述存儲設(shè)備中獲取所述值的長度。
30.根據(jù)權(quán)利要求25-29任一項(xiàng)所述的存儲控制器,其特征在于,所述鍵值存儲請求為包含多個單次鍵值存儲請求的聚合鍵值存儲請求;其中,
所述鍵值存儲請求攜帶的地址信息通過聚散表的地址信息進(jìn)行索引,所述聚散表中包含所述多個單次鍵值存儲請求中每個單次鍵值存儲請求攜帶的地址信息。
31.根據(jù)權(quán)利要求25-30任一項(xiàng)所述的存儲控制器,其特征在于,
所述前端通信模塊,還用于從所述主機(jī)獲取第三存儲請求指令序列,所述第三存儲請求指令序列由所述主機(jī)將非鍵值存儲請求攜帶的第二指令碼、以及數(shù)據(jù)內(nèi)存指針寫入所述協(xié)議定義的字段組成,其中,所述第二指令碼為所述協(xié)議的標(biāo)準(zhǔn)指令碼;
所述處理模塊,還用于從所述第三存儲請求指令序列中分離出所述第二指令碼和所述數(shù)據(jù)內(nèi)存指針;
所述控制模塊,還用于根據(jù)所述第二指令碼和所述數(shù)據(jù)內(nèi)存指針,通過所述后端通信模塊對所述存儲設(shè)備進(jìn)行所述第二指令碼對應(yīng)的操作。
32.根據(jù)權(quán)利要求25-31任一項(xiàng)所述的存儲控制器,其特征在于,
所述協(xié)議包括非易失性存儲標(biāo)準(zhǔn)NVMe協(xié)議;
其中,所述NVMe協(xié)議定義0-63字節(jié)為存儲請求指令序列的字段。
33.一種鍵值存儲系統(tǒng),其特征在于,所述鍵值存儲系統(tǒng)包括存儲設(shè)備、如權(quán)利要求17-24任一項(xiàng)所述的主機(jī)、以及如權(quán)利要求25-32任一項(xiàng)所述的存儲控制器。