數(shù)據(jù)儲(chǔ)存系統(tǒng)及其特定指令執(zhí)行方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明有關(guān)于一種數(shù)據(jù)儲(chǔ)存系統(tǒng)及其特定指令執(zhí)行方法,可應(yīng)用于非揮發(fā)性內(nèi)存、固態(tài)硬盤、隨身碟或磁盤陣列等數(shù)據(jù)儲(chǔ)存裝置。
【背景技術(shù)】
[0002]按,非揮發(fā)性內(nèi)存(non-volatile memory)由于具備有無(wú)機(jī)械結(jié)構(gòu)、體積小、低噪音、抗震動(dòng)、省電及讀寫速度快等特性,因此被普遍使用于各種數(shù)據(jù)儲(chǔ)存裝置,例如固態(tài)硬盤(Solid State Disk ;SSD)、隨身碟(Flash Drive)或磁盤陣列(Redundant Array ofIndependent Drives ;RAID)。
[0003]非揮發(fā)性內(nèi)存的產(chǎn)品特性使然,于一實(shí)體區(qū)塊(Physical Block)中包括有復(fù)數(shù)個(gè)實(shí)體頁(yè)面(Physical Page),在一主機(jī)系統(tǒng)(例如計(jì)算機(jī)主機(jī))通知欲將一數(shù)據(jù)寫入(write)內(nèi)存時(shí),是以實(shí)體頁(yè)面或更小的扇區(qū)(sector)為單位依序?qū)懭?。而已?chǔ)存有數(shù)據(jù)的實(shí)體頁(yè)面則必須先經(jīng)過一抹除(Erase)程序后,才可以再度被寫入其他數(shù)據(jù),而抹除程序的最小單位為一實(shí)體區(qū)塊。又,非揮發(fā)性內(nèi)存對(duì)于數(shù)據(jù)的寫入或抹除都有其使用數(shù)量限制,如果寫入或抹除的次數(shù)超過一上限值,則此內(nèi)存不僅會(huì)降低其運(yùn)行速度,甚至?xí)斐烧麄€(gè)內(nèi)存毀損。
[0004]請(qǐng)參閱圖1,具有實(shí)體儲(chǔ)存內(nèi)存15的數(shù)據(jù)儲(chǔ)存系統(tǒng)10中包括有一內(nèi)存管理器19,可用以將主機(jī)系統(tǒng)20所能溝通或存取的邏輯扇區(qū)地址(Logical Sector Address ;LSA) 11轉(zhuǎn)換為邏輯區(qū)塊及邏輯頁(yè)面,并且將邏輯區(qū)塊及邏輯頁(yè)面對(duì)應(yīng)指向至實(shí)體儲(chǔ)存內(nèi)存15的實(shí)體區(qū)塊及實(shí)體頁(yè)面,實(shí)體頁(yè)面具有一實(shí)體儲(chǔ)存地址(Physical Address) 13。而邏輯扇區(qū)地址11與實(shí)體儲(chǔ)存地址13的映像關(guān)系將被記載于一邏輯-實(shí)體地址對(duì)應(yīng)表17。
[0005]當(dāng)主機(jī)系統(tǒng)20需要將已儲(chǔ)存數(shù)據(jù)從一(第一個(gè))邏輯扇區(qū)地址L_1搬移至另一(第二個(gè))邏輯扇區(qū)地址L_4時(shí),主機(jī)系統(tǒng)20必須傳送一正常指令291,例如一搬移(move)指令,至內(nèi)存管理器19,而主機(jī)系統(tǒng)20及/或內(nèi)存管理器19則會(huì)進(jìn)行:(a).將第一個(gè)邏輯扇區(qū)地址1^_1所對(duì)應(yīng)指向的已儲(chǔ)存數(shù)據(jù)D_A(存放于實(shí)體儲(chǔ)存內(nèi)存(BI,PO))讀取(read)復(fù)制至一內(nèi)存緩沖區(qū)25 ; (b).將內(nèi)存緩沖區(qū)25內(nèi)暫存的已儲(chǔ)存數(shù)據(jù)D_A寫入(write)第二個(gè)邏輯扇區(qū)地址L_4所指向的另一實(shí)體儲(chǔ)存內(nèi)存(B0,P2)中;及(c).將邏輯扇區(qū)地址L_1的已儲(chǔ)存數(shù)據(jù)(D_A)予以刪除(delete)或設(shè)為無(wú)效(Invalid)。
[0006]同樣的數(shù)據(jù)搬移指令,于具有同位檢查(parity)功能的磁盤陣列系統(tǒng),例如RAID4、RAID5或RAID6,其程序則相對(duì)復(fù)雜。主機(jī)系統(tǒng)20欲將一已儲(chǔ)存數(shù)據(jù)從一邏輯扇區(qū)地址L_A中搬移(move)至另一個(gè)邏輯扇區(qū)地址L_B時(shí),主機(jī)系統(tǒng)20及/或內(nèi)存管理器19會(huì)控制并進(jìn)行:(a).將邏輯扇區(qū)地址L_A所指向的已儲(chǔ)存數(shù)據(jù)D_A (儲(chǔ)存于實(shí)體儲(chǔ)存地址)讀取至內(nèi)存緩沖區(qū)25 ; (b).將邏輯扇區(qū)地址L_A相對(duì)應(yīng)的磁盤陣列數(shù)據(jù)條(Data Stripe)S_A的同位檢查區(qū)塊數(shù)據(jù)P_A讀取至內(nèi)存緩沖區(qū)25 ;(c).將邏輯扇區(qū)地址L_B所指向的已儲(chǔ)存數(shù)據(jù)D_B (儲(chǔ)存于實(shí)體儲(chǔ)存地址)讀取至內(nèi)存緩沖區(qū)25 ; (d).將邏輯扇區(qū)地址L_B相對(duì)應(yīng)的磁盤陣列數(shù)據(jù)條S_B的同位檢查區(qū)塊數(shù)據(jù)P_B讀取至內(nèi)存緩沖區(qū)25 ; (e).通過儲(chǔ)存數(shù)據(jù)D_A、同位檢查區(qū)塊數(shù)據(jù)P_A及一空白數(shù)據(jù),計(jì)算出(例如XOR運(yùn)算)邏輯扇區(qū)地址L_A的新同位檢查區(qū)塊數(shù)據(jù)P_A2 ; (f).通過儲(chǔ)存數(shù)據(jù)D_B、同位檢查區(qū)塊數(shù)據(jù)P_B及儲(chǔ)存數(shù)據(jù)D_A,計(jì)算出(例如XOR運(yùn)算)邏輯扇區(qū)地址L_B的新同位檢查區(qū)塊數(shù)據(jù)P_B2 ; (g).將暫存于內(nèi)存緩沖區(qū)25的已儲(chǔ)存數(shù)據(jù)D_A寫入邏輯扇區(qū)地址L_B中;(h).將暫存于內(nèi)存緩沖區(qū)25的新同位檢查數(shù)據(jù)P_B2寫入磁盤陣列數(shù)據(jù)條S_B的同位檢查區(qū)塊中;(i).將邏輯扇區(qū)地址L_A內(nèi)的儲(chǔ)存數(shù)據(jù)D_A予以刪除或設(shè)為無(wú)效;及(j).將暫存于內(nèi)存緩沖區(qū)25的新同位檢查數(shù)據(jù)P_A2寫入磁盤陣列數(shù)據(jù)條S_A的同位檢查區(qū)塊中。
[0007]常用數(shù)據(jù)儲(chǔ)存系統(tǒng)10雖然可以執(zhí)行讀取、寫入、刪除及/或搬移等指令,但每一個(gè)指令動(dòng)作皆必須個(gè)別下達(dá),如果數(shù)據(jù)搬移動(dòng)作中,用戶想要檢視所搬移的儲(chǔ)存數(shù)據(jù)內(nèi)容,就必須個(gè)別下達(dá)讀取及搬移兩個(gè)指令動(dòng)作。又,常用搬移指令后,其數(shù)據(jù)儲(chǔ)存系統(tǒng)10必須進(jìn)行多次的讀取或?qū)懭雱?dòng)作,對(duì)數(shù)據(jù)儲(chǔ)存系統(tǒng)10的使用壽命或使用效率而言都存在有可改善的空間。
【發(fā)明內(nèi)容】
[0008]本發(fā)明即提供一種數(shù)據(jù)儲(chǔ)存系統(tǒng)及其特定指令執(zhí)行方法,其特定指令可同時(shí)執(zhí)行數(shù)據(jù)讀取及搬移動(dòng)作,以此不僅有效減少實(shí)體儲(chǔ)存內(nèi)存的寫入次數(shù)(Write Reduct1n)、降低輸出入延遲(10 Latency),也可延長(zhǎng)數(shù)據(jù)儲(chǔ)存系統(tǒng)的使用壽命及使用效律。
[0009]本發(fā)明即提供一種數(shù)據(jù)儲(chǔ)存系統(tǒng)及其特定指令執(zhí)行方法,其特定指令適用于具有同位檢查功能磁盤陣列中,以此不僅可有效降低指令的下達(dá)次數(shù)及數(shù)據(jù)寫入次數(shù),又可提升磁盤陣列更新數(shù)據(jù)同位檢查的效率。
[0010]為達(dá)成上述目的,本發(fā)明采用以下技術(shù)方案:
[0011]一種數(shù)據(jù)儲(chǔ)存系統(tǒng),包括:一個(gè)或多個(gè)實(shí)體儲(chǔ)存內(nèi)存,每一個(gè)實(shí)體儲(chǔ)存內(nèi)存可區(qū)分成多個(gè)實(shí)體儲(chǔ)存單元,而每一實(shí)體儲(chǔ)存單元具有一實(shí)體儲(chǔ)存地址,部分實(shí)體儲(chǔ)存單元內(nèi)儲(chǔ)存有一已儲(chǔ)存數(shù)據(jù);多個(gè)邏輯扇區(qū)地址,部分邏輯扇區(qū)地址通過一邏輯-實(shí)體地址對(duì)照表指向相對(duì)應(yīng)的其中一實(shí)體儲(chǔ)存地址;及一內(nèi)存管理器,電性連接一主機(jī)系統(tǒng)、該實(shí)體儲(chǔ)存內(nèi)存及該邏輯扇區(qū)地址,可接收來自于主機(jī)系統(tǒng)的一正常指令、一特定指令、或一正常指令及一特定指令,該特定指令包括有其中一第一個(gè)邏輯扇區(qū)地址、一欲讀取數(shù)據(jù)長(zhǎng)度及一第二扇區(qū)邏輯地址;其中,該內(nèi)存管理器可根據(jù)該特定指令而將對(duì)應(yīng)于該第一個(gè)邏輯扇區(qū)地址及該欲讀取數(shù)據(jù)長(zhǎng)度所指向的一第一個(gè)實(shí)體儲(chǔ)存地址內(nèi)的該已儲(chǔ)存數(shù)據(jù)讀取復(fù)制于一內(nèi)存緩沖區(qū),并將原指向于該第一個(gè)邏輯扇區(qū)地址的該實(shí)體儲(chǔ)存地址搬移指向至該第二個(gè)邏輯扇區(qū)地址。
[0012]又,為達(dá)上述目的,本發(fā)明提供一種特定指令執(zhí)行方法,適用于一數(shù)據(jù)儲(chǔ)存系統(tǒng),該數(shù)據(jù)儲(chǔ)存系統(tǒng)包括有至少一實(shí)體儲(chǔ)存內(nèi)存、多個(gè)邏輯扇區(qū)地址及一內(nèi)存管理器,該實(shí)體儲(chǔ)存內(nèi)存分成有多個(gè)實(shí)體儲(chǔ)存單元,而每一個(gè)實(shí)體儲(chǔ)存單元具有一實(shí)體儲(chǔ)存地址,部分實(shí)體儲(chǔ)存單元內(nèi)則儲(chǔ)存有一已儲(chǔ)存數(shù)據(jù),部分邏輯扇區(qū)地址可通過一邏輯-實(shí)體地址對(duì)照表而指向相對(duì)應(yīng)的一實(shí)體儲(chǔ)存地址,而該內(nèi)存管理器可分別電性連接該實(shí)體儲(chǔ)存內(nèi)存及該邏輯扇區(qū)地址區(qū),該特定指令執(zhí)行方法包括:內(nèi)存管理器接收一指令,判斷該指令是一正常指令或一特定指令;若為該特定指令,則解讀該特定指令內(nèi)的一第一個(gè)邏輯扇區(qū)地址、一欲讀取數(shù)據(jù)長(zhǎng)度及一第二個(gè)邏輯扇區(qū)地址,將該第一個(gè)邏輯扇區(qū)地址所指向該實(shí)體儲(chǔ)存地址內(nèi)的已儲(chǔ)存數(shù)據(jù)讀取復(fù)制于一內(nèi)存緩沖區(qū);及將原指向于該第一個(gè)邏輯扇區(qū)地址的實(shí)體儲(chǔ)存地址搬移指向至該第二個(gè)邏輯扇區(qū)地址。
[0013]又,為達(dá)上述目的,本發(fā)明提供一種特定指令執(zhí)行方法,適用于一磁盤陣列系統(tǒng),該磁盤陣列系統(tǒng)為一日志模式或一寫時(shí)復(fù)制模式,該磁盤陣列系統(tǒng)包括有至少一實(shí)體儲(chǔ)存內(nèi)存、多個(gè)邏