亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種加速基于xor的raid-6編解碼過程的方程并行計(jì)算方法

文檔序號(hào):8528116閱讀:434來源:國知局
一種加速基于xor的raid-6編解碼過程的方程并行計(jì)算方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于磁盤陣列存儲(chǔ)技術(shù)領(lǐng)域,更具體地,涉及一種加速基于X0R的RAID-6 編解碼過程的方法。
【背景技術(shù)】
[0002] 磁盤陣列(Redundant Array of Independent Disks, RAID)是一種把多個(gè)磁盤組 合起來,把數(shù)據(jù)分散存儲(chǔ)在不同的磁盤中的技術(shù)。與單個(gè)磁盤相比,RAID可以達(dá)到提高讀 寫速度或者增加容錯(cuò)能力的目的。RAID被分為多個(gè)級(jí)別,其中RAID-6具有冗任意兩個(gè)磁盤 失效的能力。
[0003] RAID-6使用糾刪碼對(duì)數(shù)據(jù)進(jìn)行保護(hù),依照糾刪碼在編解碼過程需要使用的運(yùn)算操 作可以把糾刪碼區(qū)分為兩大類:RS碼以及基于X0R的編碼。RS碼是基于伽羅華域(也稱有 限域)運(yùn)算的編碼,在其編解碼過程需要使用到伽羅華域乘法運(yùn)算。基于X0R的編碼在校 驗(yàn)塊的計(jì)算和失效塊的恢復(fù)中都只需要使用異或運(yùn)算。
[0004] 目前在RAID-6系統(tǒng)中使用的基于X0R編碼的編解碼過程通常是被串行執(zhí)行的,而 現(xiàn)在處理器發(fā)展趨向于提高多核心并行處理能力,串行執(zhí)行的編解碼過程無法從這種發(fā)展 中獲得性能的提升。

【發(fā)明內(nèi)容】

[0005] 針對(duì)現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供一種加速基于X0R的RAID-6編 解碼過程的方程并行計(jì)算方法,該方法能夠應(yīng)用于多種基于X0R的RAID-6編碼的編解碼過 程中,并且以部分并行的方式縮短編解碼過程所花費(fèi)的時(shí)間。
[0006] 本發(fā)明是一個(gè)利用基于X0R的RAID-6編碼潛在并行能力以提高編解碼性能的方 法。該方法把RAID-6編碼的校驗(yàn)規(guī)則用校驗(yàn)方程組表示,并且把校驗(yàn)方程組中每個(gè)校驗(yàn)方 程的計(jì)算分為兩個(gè)階段,第一階段(預(yù)計(jì)算階段)使用方程包含的"存活塊"計(jì)算中間值, 第二階段(遞歸求解階段)把第一階段計(jì)算的中間值與被恢復(fù)的"丟失塊"一起完成該方 程的求解。該方法把每個(gè)方程指派給一個(gè)線程,所有線程的預(yù)計(jì)算階段可以被并行執(zhí)行。
[0007] 本發(fā)明提供了一種加速基于X0R的RAID-6編解碼過程的方程并行計(jì)算方法,包 括:
[0008] 步驟1將基于X0R的RAID-6編碼的校驗(yàn)規(guī)則用校驗(yàn)方程組表示,方程組中第 j個(gè)方程記為Ej,方程總數(shù)記為k ;校驗(yàn)方程組中的每一個(gè)方程使用一個(gè)數(shù)組EV」= {pp,Pu,…,Pll}表示,數(shù)組中每個(gè)元素代表該方程所涉及的一個(gè)數(shù)據(jù)塊的序號(hào);將所有 EVjB錄到數(shù)據(jù)結(jié)構(gòu)EVS中;
[0009] 步驟2把需要進(jìn)行編解碼的條帶的所有數(shù)據(jù)塊從磁盤陣列讀取到內(nèi)存中,這個(gè)條 帶的磁盤數(shù)和行數(shù)分別記為n和r,第i個(gè)數(shù)據(jù)塊記為&,所有數(shù)據(jù)塊存入到數(shù)據(jù)結(jié)構(gòu)BlkS 中,其中所述〇<i〈(n*r);
[0010] 步驟3條帶中的每一個(gè)數(shù)據(jù)塊都是"可用"的或者"不可用"的,這稱為數(shù)據(jù)塊的 狀態(tài);其中"可用"表示數(shù)據(jù)塊記錄的數(shù)據(jù)是完整的,而"不可用"表示數(shù)據(jù)塊記錄的數(shù)據(jù)不 完整或者為空;使用一個(gè)數(shù)組BST記錄條帶中所有數(shù)據(jù)塊的狀態(tài),BST稱為數(shù)據(jù)塊狀態(tài)表; BST中的第i個(gè)元素對(duì)應(yīng)條帶第i個(gè)數(shù)據(jù)塊的狀態(tài),元素"1"代表對(duì)應(yīng)的數(shù)據(jù)塊"可用",而 "0"代表對(duì)應(yīng)的數(shù)據(jù)塊"不可用";
[0011] 步驟4把EVS、BlkS以及BST輸入到E0PC的主線程COM中;
[0012] 步驟5E0PC主線程COM為EVS中記錄的每個(gè)校驗(yàn)方程創(chuàng)建一個(gè)E0PC的計(jì)算線程 CAM ;
[0013] 步驟6每個(gè)計(jì)算線程CAM完成其對(duì)應(yīng)校驗(yàn)方程的求解。
[0014] 具體地,所述步驟6包括多個(gè)CAM線程求解對(duì)應(yīng)校驗(yàn)方程的過程,其中的每個(gè) CAM^l < j < k)線程求解的過程可分解為以下多個(gè)子步驟:
[0015] 步驟(6-1)線程CAM』通過"檢查"BST確認(rèn)其方程向量EVS[j]中包含的"丟失塊" 以及"存活塊",并且把"丟失塊"的序號(hào)記錄到"丟失塊記錄表" 中,如果"丟失塊"數(shù) 量等于〇,執(zhí)行步驟(6-9),否則執(zhí)行步驟(6-2);
[0016] 步驟(6-2) "預(yù)計(jì)算階段":線程CAMd+算其對(duì)應(yīng)校驗(yàn)方程中所有"存活塊"的異 或和,并且暫存到一個(gè)臨時(shí)數(shù)據(jù)塊四」中,完成后執(zhí)行步驟(6-3);
[0017] 步驟(6-3)線程CAM』通過"檢查" BST確認(rèn)其"丟失塊記錄表" 5/niss中當(dāng)前所包 含的"不可用塊"數(shù)量,并且把當(dāng)前"不可用塊"的序號(hào)記錄到其"不可用塊記錄表 中;如果"不可用塊"數(shù)量等于〇,則執(zhí)行步驟(6-9);如果"不可用塊"數(shù)量等于1,這個(gè)"不 可用塊"稱為CAM」的目標(biāo)數(shù)據(jù)塊,則執(zhí)行步驟(6-5);如果"不可用塊"數(shù)量大于1,則執(zhí)行 步驟(6-4);
[0018] 步驟(6-4)線程CAM/斤對(duì)應(yīng)的方程包含有多于1個(gè)未知量,無法進(jìn)行求解,該線 程插入到條件變量cond的等待隊(duì)列,并且開始睡眠;如果線程CAMj皮喚醒,則繼續(xù)執(zhí)行步 驟(6-3);
[0019] 步驟(6-5) "遞歸求解階段":線程CAM』把被記錄于其"丟失塊記錄表"谷^&中 而不被記錄于其"不可用塊記錄表" 中的數(shù)據(jù)塊,與臨時(shí)數(shù)據(jù)塊四」求異或和,結(jié)果 依然存入臨時(shí)數(shù)據(jù)塊IB」中,繼續(xù)執(zhí)行步驟(6-6);
[0020] 步驟(6-6)線程CAM』檢查其目標(biāo)數(shù)據(jù)塊在BST中目前被記錄的狀態(tài),如果該數(shù)據(jù) 塊被標(biāo)記為"1",則執(zhí)行步驟(6-9),否則執(zhí)行步驟(6-7);
[0021] 步驟(6-7)線程CAM」把臨時(shí)數(shù)據(jù)塊四」存入到其目標(biāo)數(shù)據(jù)塊中,并且"更新"該數(shù) 據(jù)塊在BST中記錄的狀態(tài),繼續(xù)執(zhí)行步驟(6-8);
[0022] 步驟(6-8)線程CAM,巴條件變量cond等待隊(duì)列中的所有線程喚醒,繼續(xù)執(zhí)行步 驟(6-9);
[0023] 步驟(6-9)線程CAM』結(jié)束運(yùn)行。
[0024] 總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下優(yōu)點(diǎn):
[0025] 使用本發(fā)明實(shí)現(xiàn)的編解碼過程可以利用編碼的潛在并行能力,使得大部分計(jì)算可 以同時(shí)使用多個(gè)線程處理,充分發(fā)揮多核處理器的并行處理能力,縮短計(jì)算過程所花費(fèi)的 時(shí)間,從而提尚編解碼的性能。
【附圖說明】
[0026] 圖1為本發(fā)明使用的條帶的示意圖;
[0027] 圖2為本發(fā)明使用的三種數(shù)據(jù)結(jié)構(gòu)的示意圖;
[0028] 圖3為本發(fā)明實(shí)施編解碼過程步驟的示意圖;
[0029] 圖4為本發(fā)明單個(gè)線程的流程圖。
【具體實(shí)施方式】
[0030] 為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì) 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要 彼此之間未構(gòu)成沖突就可以相互組合。
[0031] 本發(fā)明實(shí)施例中將會(huì)用到一些定義,其中的名詞解釋如下:
[0032] 條帶(stripe):是本發(fā)明中應(yīng)用RAID-6編碼進(jìn)行數(shù)據(jù)保護(hù)的基本單元。一個(gè)磁 盤陣列被邏輯地劃分為多個(gè)條帶,每個(gè)條帶橫跨多個(gè)磁盤,在這些磁盤里占用相同的容量。 條帶內(nèi)使用RAID-6編碼對(duì)數(shù)據(jù)進(jìn)行保護(hù)。圖1是一個(gè)條帶的示意圖。
[0033] 行(row):是本發(fā)明中一個(gè)對(duì)條帶進(jìn)行劃分的方法。每個(gè)條帶被邏輯地劃分為多 行,每一行都橫跨條帶中的所有磁盤,并且每一行的容量都相等。
[0034] 數(shù)據(jù)塊(data block):是本發(fā)明中進(jìn)行編解碼的數(shù)據(jù)的基本單位。把條帶中每個(gè) 磁盤看做一列,那么整個(gè)條帶被行和列劃分為多個(gè)數(shù)據(jù)塊。本發(fā)明在編解碼過程中進(jìn)行計(jì) 算的基本單位是一個(gè)數(shù)據(jù)塊。依照數(shù)據(jù)塊所存放的數(shù)據(jù)可以把數(shù)據(jù)塊分為兩類,存放原始 數(shù)據(jù)的稱為原始?jí)K,而存放校驗(yàn)數(shù)據(jù)的稱為校驗(yàn)塊。在本發(fā)明中,數(shù)據(jù)塊有兩種狀態(tài),分別 是"可用"和"不可用",其中"可用"表示數(shù)據(jù)塊記錄的數(shù)據(jù)是完整的,而"不可用"表示數(shù) 據(jù)塊記錄的數(shù)據(jù)不完整或者為空。每個(gè)數(shù)據(jù)塊被按順序編號(hào),圖1表示了數(shù)據(jù)塊編號(hào)的方 法。除此以外,當(dāng)條帶遭遇到磁盤失效或者扇區(qū)故障時(shí),變?yōu)?不可用"的塊特別地稱為"丟 失塊",而依然"可用"的塊特別地稱為"存活塊"。
[0035] 編碼過程(encoding):是在條帶中利用原始數(shù)據(jù)塊生成校驗(yàn)數(shù)據(jù)塊的過程。
[0036] 解碼過程(decoding):是在條帶中部分?jǐn)?shù)據(jù)塊失效后用存活數(shù)據(jù)塊重構(gòu)丟失數(shù) 據(jù)塊的過程。
[0037] 編解碼(coding):是指編碼過程和解碼過程。
[0038] 校驗(yàn)規(guī)則(coding rule):是RAID-6編碼設(shè)定的校驗(yàn)塊與原始?jí)K之間的關(guān)系,它 確定了從原始?jí)K計(jì)算校驗(yàn)塊的方法。
[0039] 校驗(yàn)方程(parity check):是由RAID-6編碼的校驗(yàn)規(guī)則確定的方程,這些方程都 是形如多個(gè)數(shù)據(jù)塊異或和等于零的方程。方程中包含的"不可用"數(shù)據(jù)塊是方程的未知量, 相反,"可用"數(shù)據(jù)塊是方程的已知量。只包含有一個(gè)未知量的校驗(yàn)方程稱為是可獨(dú)立求解 的。本發(fā)明把校驗(yàn)方程的求解過程分解為兩個(gè)階段,分別是"預(yù)計(jì)算階段"與"遞歸求解階 段"。在每個(gè)校驗(yàn)方程的"預(yù)計(jì)算階段",求出校驗(yàn)方程中的"存活塊"的異或和并存入到一 個(gè)臨時(shí)塊中。而在"遞歸求解階段"使用臨時(shí)塊完成對(duì)方程組的聯(lián)合求解。
[0040] z-turn :是一個(gè)存在于部分RAID-6編碼中的性質(zhì)。對(duì)于具有z_turn性質(zhì)的編碼, 只要失效情況在該編碼的容錯(cuò)能力范圍內(nèi),那么在這個(gè)編碼的校驗(yàn)方程組中,至少有一個(gè) 校驗(yàn)方程是可獨(dú)立求解的。
[0041]方程導(dǎo)向的并行編解碼方法(Equation-Oriented Parallel Coding,E0PC):是本 發(fā)明方法的名稱,本方法可以被應(yīng)用以實(shí)現(xiàn)具有z-turn性質(zhì)的RAID-6編碼的編解碼過程。
[0042] 一、E0PC 的設(shè)計(jì)
[0043] E0PC的設(shè)計(jì)包含有兩個(gè)關(guān)鍵的數(shù)據(jù)結(jié)構(gòu),分別是EV (Equation Vector)和 BST (Block Status Table)。其中每個(gè)EV都是一個(gè)數(shù)組并對(duì)應(yīng)一個(gè)校驗(yàn)方程,數(shù)組中的元 素是該校
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1