本公開(kāi)一般涉及數(shù)據(jù)存儲(chǔ)管理系統(tǒng),并且更具體地,涉及一種用于在數(shù)據(jù)存儲(chǔ)管理系統(tǒng)中復(fù)制命令運(yùn)行的方法。
背景技術(shù):
1、本背景技術(shù)部分旨在僅提供背景,并且本部分中任何概念的公開(kāi)不構(gòu)成承認(rèn)所述概念是現(xiàn)有技術(shù)
2、隨著計(jì)算需求的不斷增長(zhǎng),數(shù)據(jù)存儲(chǔ)管理的復(fù)雜性也在不斷增加。計(jì)算需求可以通過(guò)由主機(jī)發(fā)布并插入數(shù)據(jù)存儲(chǔ)管理系統(tǒng)中用于運(yùn)行的命令(例如,讀取命令、寫(xiě)入命令或復(fù)制命令)的增加來(lái)證明。復(fù)制命令可以由多對(duì)復(fù)制-讀取和復(fù)制-寫(xiě)入子命令組成,并且應(yīng)該保持復(fù)制-寫(xiě)入子命令的原子性,使得所有子命令都被運(yùn)行并且在運(yùn)行期間不可分割。然而,需要一種保持復(fù)制命令原子性而不需要附加緩沖空間、延遲非復(fù)制命令或加重?cái)?shù)據(jù)存儲(chǔ)設(shè)備內(nèi)資源分配負(fù)擔(dān)的方法。
技術(shù)實(shí)現(xiàn)思路
1、根據(jù)實(shí)施例,提供了一種方法,其中存儲(chǔ)設(shè)備的控制器生成復(fù)制命令的復(fù)制-讀取子命令和復(fù)制-寫(xiě)入子命令??刂破鬟\(yùn)行阻塞無(wú)操作(nop)命令,該阻塞無(wú)操作(nop)命令跨第一存儲(chǔ)地址空間中的復(fù)制-寫(xiě)入子命令的第一存儲(chǔ)地址范圍。控制器生成從第一存儲(chǔ)地址范圍的復(fù)制-寫(xiě)入子命令到第二存儲(chǔ)地址空間中的對(duì)應(yīng)第二存儲(chǔ)地址范圍的映射的復(fù)制-寫(xiě)入子命令的映射,第二存儲(chǔ)地址空間高于第一存儲(chǔ)地址空間的最大存儲(chǔ)地址??刂破鬟\(yùn)行復(fù)制-讀取子命令和映射的復(fù)制-寫(xiě)入子命令。映射的復(fù)制-寫(xiě)入子命令復(fù)制數(shù)據(jù)用于在第一存儲(chǔ)地址范圍運(yùn)行。
2、根據(jù)該實(shí)施例,可以在存儲(chǔ)設(shè)備處從主機(jī)設(shè)備接收復(fù)制命令??刂破骺梢陨刹⒉迦胱枞鹡op命令用于在存儲(chǔ)設(shè)備處運(yùn)行?;谧枞鹡op命令的運(yùn)行,控制器可以插入復(fù)制-讀取子命令和復(fù)制-寫(xiě)入子命令用于在存儲(chǔ)設(shè)備處運(yùn)行。控制器可以插入非復(fù)制命令用于在存儲(chǔ)設(shè)備上運(yùn)行?;趶?fù)制-讀取子命令、復(fù)制-寫(xiě)入子命令和非復(fù)制命令的插入,控制器可以基于復(fù)制-讀取子命令、復(fù)制-寫(xiě)入子命令、非復(fù)制命令和阻塞nop命令的存儲(chǔ)地址執(zhí)行第一重疊檢查。
3、根據(jù)該實(shí)施例,基于第一重疊檢查,控制器可以確定復(fù)制-寫(xiě)入子命令和阻塞nop命令之間的存儲(chǔ)地址重疊。復(fù)制-寫(xiě)入子命令到映射的復(fù)制-寫(xiě)入子命令的映射基于存儲(chǔ)地址重疊。基于第一重疊檢查,控制器可以確定非復(fù)制命令和阻塞nop命令之間的存儲(chǔ)地址重疊,其阻塞非復(fù)制命令在存儲(chǔ)設(shè)備處運(yùn)行。基于生成復(fù)制-寫(xiě)入子命令到映射的復(fù)制-寫(xiě)入子命令的映射,控制器可以基于映射的復(fù)制-寫(xiě)入子命令執(zhí)行第二重疊檢查?;谕瓿蛇\(yùn)行,控制器可以從第一存儲(chǔ)地址范圍將復(fù)制-寫(xiě)入子命令和復(fù)制-讀取子命令一起清除??刂破骺梢曰趶?fù)制-寫(xiě)入子命令的清除來(lái)從第一存儲(chǔ)地址范圍中清除阻塞nop命令。控制器可以基于非復(fù)制命令執(zhí)行第三重疊檢查。控制器可以在第一存儲(chǔ)地址范圍內(nèi)運(yùn)行非復(fù)制命令。
4、根據(jù)該實(shí)施例,基于第一重疊檢查,控制器可以確定非復(fù)制命令和阻塞nop命令之間的部分存儲(chǔ)地址重疊??刂破骺梢詫⒆枞鹡op命令擴(kuò)展到第一存儲(chǔ)地址范圍之外,導(dǎo)致擴(kuò)展的阻塞nop命令具有與非復(fù)制命令的完全存儲(chǔ)地址重疊和與復(fù)制-讀取子命令的至少部分存儲(chǔ)地址重疊??刂破骺梢陨删哂信c擴(kuò)展阻塞nop命令的存儲(chǔ)地址重疊的復(fù)制-讀取子命令的至少一部分到高于存儲(chǔ)設(shè)備的最大地址的存儲(chǔ)地址的映射??梢允褂脧?fù)制-讀取子命令的至少一部分來(lái)運(yùn)行復(fù)制-讀取子命令。
5、根據(jù)該實(shí)施例,基于第一重疊檢查,控制器可以確定復(fù)制-讀取子命令和阻塞nop命令之間的至少部分存儲(chǔ)地址重疊。控制器可以生成具有與阻塞nop命令的存儲(chǔ)地址重疊的復(fù)制-讀取子命令的至少一部分到高于存儲(chǔ)設(shè)備的最大地址的存儲(chǔ)地址的映射。可以使用復(fù)制-讀取子命令的至少一部分來(lái)運(yùn)行復(fù)制-讀取子命令。
6、根據(jù)實(shí)施例,提供了一種包括存儲(chǔ)介質(zhì)和控制器的存儲(chǔ)設(shè)備??刂破鞅慌渲脼樯蓮?fù)制命令的復(fù)制-讀取子命令和復(fù)制-寫(xiě)入子命令,并運(yùn)行跨第一存儲(chǔ)地址空間中的復(fù)制-寫(xiě)入子命令的第一存儲(chǔ)地址范圍的阻塞nop命令。控制器還被配置為生成從第一存儲(chǔ)地址范圍的復(fù)制-寫(xiě)入子命令到第二存儲(chǔ)地址空間中的對(duì)應(yīng)第二存儲(chǔ)地址范圍的映射的復(fù)制-寫(xiě)入子命令的映射,第二存儲(chǔ)地址空間高于第一存儲(chǔ)地址空間的最大存儲(chǔ)地址,以及運(yùn)行復(fù)制-讀取子命令和映射的復(fù)制-寫(xiě)入子命令。映射的復(fù)制-寫(xiě)入子命令復(fù)制數(shù)據(jù)用于在第一存儲(chǔ)地址范圍運(yùn)行。
7、根據(jù)該實(shí)施例,控制器還可以被配置為從主機(jī)設(shè)備接收復(fù)制命令,生成阻塞nop命令并插入阻塞nop命令用于運(yùn)行,基于阻塞nop命令的運(yùn)行插入復(fù)制-讀取子命令和復(fù)制-寫(xiě)入子命令用于運(yùn)行,并插入非復(fù)制命令用于運(yùn)行??刂破骺梢赃M(jìn)一步被配置為基于復(fù)制-讀取子命令、復(fù)制-寫(xiě)入子命令和非復(fù)制命令的插入,基于復(fù)制-讀取子命令、復(fù)制-寫(xiě)入子命令、非復(fù)制命令和阻塞nop命令的存儲(chǔ)地址執(zhí)行第一重疊檢查。
8、根據(jù)該實(shí)施例,控制器可以進(jìn)一步被配置為基于第一重疊檢查來(lái)確定復(fù)制-寫(xiě)入子命令和阻塞nop命令之間的存儲(chǔ)地址重疊。復(fù)制-寫(xiě)入子命令到映射的復(fù)制-寫(xiě)入子命令的映射基于存儲(chǔ)地址重疊??刂破鬟€可以被配置為基于第一重疊檢查來(lái)確定非復(fù)制命令和阻塞nop命令之間的存儲(chǔ)地址重疊,其阻塞非復(fù)制命令在存儲(chǔ)設(shè)備處運(yùn)行??刂破骺梢赃M(jìn)一步被配置為基于生成復(fù)制-寫(xiě)入子命令到映射的復(fù)制-寫(xiě)入子命令的映射,基于映射的復(fù)制-寫(xiě)入子命令執(zhí)行第二重疊檢查??刂破鬟€可以被配置為基于完成運(yùn)行從第一存儲(chǔ)地址范圍將復(fù)制-寫(xiě)入子命令和復(fù)制-讀取子命令一起清除,基于清除復(fù)制-寫(xiě)入子命令從第一存儲(chǔ)地址范圍清除阻塞nop命令,基于非復(fù)制命令執(zhí)行第三重疊檢查,以及在第一存儲(chǔ)地址范圍內(nèi)運(yùn)行非復(fù)制命令。
9、根據(jù)該實(shí)施例,控制器可以進(jìn)一步被配置為基于第一重疊檢查來(lái)確定非復(fù)制命令和阻塞nop命令之間的部分存儲(chǔ)地址重疊,并且將阻塞nop命令擴(kuò)展到第一存儲(chǔ)地址范圍之外,導(dǎo)致擴(kuò)展的阻塞nop命令具有與非復(fù)制命令的完全存儲(chǔ)地址重疊和具有與復(fù)制-讀取子命令的至少部分存儲(chǔ)地址重疊??刂破鬟€可以被配置為生成具有與擴(kuò)展阻塞nop命令的存儲(chǔ)地址重疊的復(fù)制-讀取子命令的至少一部分到高于存儲(chǔ)設(shè)備的最大地址的存儲(chǔ)地址的映射??梢允褂脧?fù)制-讀取子命令的至少一部分來(lái)運(yùn)行復(fù)制-讀取子命令。
10、根據(jù)該實(shí)施例,控制器可以進(jìn)一步被配置為基于第一重疊檢查來(lái)確定復(fù)制-讀取子命令和阻塞nop命令之間的至少部分存儲(chǔ)地址重疊??刂破鬟€可以被配置為生成具有與阻塞nop命令的存儲(chǔ)地址重疊的復(fù)制-讀取子命令的至少一部分到高于存儲(chǔ)設(shè)備的最大地址的存儲(chǔ)地址的映射??梢允褂脧?fù)制-讀取子命令的至少一部分來(lái)運(yùn)行復(fù)制-讀取子命令。
11、根據(jù)實(shí)施例,提供了一種存儲(chǔ)設(shè)備,其包括:復(fù)制命令處理器,被配置為生成復(fù)制命令的復(fù)制-讀取子命令和復(fù)制-寫(xiě)入子命令;命令運(yùn)行模塊,被配置為運(yùn)行跨第一存儲(chǔ)地址空間中的復(fù)制-寫(xiě)入子命令的第一存儲(chǔ)地址范圍的阻塞nop命令;以及重疊檢查模塊,被配置為基于復(fù)制-讀取子命令、復(fù)制-寫(xiě)入子命令和阻塞nop命令來(lái)確定存儲(chǔ)地址重疊。該存儲(chǔ)設(shè)備還包括影子處理器,該影子處理器被配置為基于確定復(fù)制-寫(xiě)入子命令和阻塞nop命令之間的存儲(chǔ)地址重疊,生成從第一存儲(chǔ)地址范圍的復(fù)制-寫(xiě)入子命令到第二存儲(chǔ)地址空間中的對(duì)應(yīng)第二存儲(chǔ)地址范圍的映射的復(fù)制-寫(xiě)入子命令的映射,第二存儲(chǔ)地址空間高于第一存儲(chǔ)地址空間的最大存儲(chǔ)地址。命令運(yùn)行模塊還被配置為運(yùn)行復(fù)制-讀取子命令和映射的復(fù)制-寫(xiě)入子命令。映射的復(fù)制-寫(xiě)入子命令復(fù)制數(shù)據(jù)用于在第一存儲(chǔ)地址范圍運(yùn)行。
12、根據(jù)該實(shí)施例,重疊檢查模塊還可以被配置為基于完成原子運(yùn)行從第一存儲(chǔ)地址范圍將復(fù)制-寫(xiě)入子命令和復(fù)制-讀取子命令一起清除,基于清除復(fù)制-寫(xiě)入子命令從第一存儲(chǔ)地址范圍清除阻塞nop命令。命令運(yùn)行模塊還可以被配置為在第一存儲(chǔ)地址范圍內(nèi)運(yùn)行非復(fù)制命令。重疊檢查模塊可以基于非復(fù)制命令執(zhí)行重疊檢查。
13、根據(jù)該實(shí)施例,重疊檢查模塊還可以被配置為確定非復(fù)制命令和阻塞nop命令之間的部分存儲(chǔ)地址重疊。影子處理器還可以被配置為將阻塞nop命令擴(kuò)展到第一存儲(chǔ)地址范圍之外,導(dǎo)致擴(kuò)展的阻塞nop命令具有與非復(fù)制命令的完全存儲(chǔ)地址重疊和具有與復(fù)制-讀取子命令的至少部分存儲(chǔ)地址重疊。影子處理器還可以被配置為生成具有與擴(kuò)展的阻塞nop命令的存儲(chǔ)地址重疊的復(fù)制-讀取子命令的至少一部分到高于存儲(chǔ)設(shè)備的最大地址的存儲(chǔ)地址的映射。命令運(yùn)行模塊可以使用復(fù)制-讀取子命令的至少一部分來(lái)運(yùn)行復(fù)制-讀取子命令。
14、根據(jù)該實(shí)施例,重疊檢查模塊還可以被配置為確定復(fù)制-讀取子命令和阻塞nop命令之間的至少部分存儲(chǔ)地址重疊。影子處理器還可以被配置為生成具有與阻塞nop命令的存儲(chǔ)地址重疊的復(fù)制-讀取子命令的至少一部分到高于存儲(chǔ)設(shè)備的最大地址的存儲(chǔ)地址的映射。命令運(yùn)行模塊可以使用復(fù)制-讀取子命令的至少一部分來(lái)運(yùn)行復(fù)制-讀取子命令。