亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種BurrowsWheeler變換硬件處理裝置的制造方法

文檔序號(hào):9287723閱讀:528來(lái)源:國(guó)知局
一種Burrows Wheeler變換硬件處理裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)壓縮技術(shù)領(lǐng)域,尤其涉及一種Burrows Wheeler變換(BurrowsWheeler Transform,簡(jiǎn)稱(chēng)BWT)硬件處理裝置。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)應(yīng)用的爆發(fā)式增長(zhǎng)以及信息數(shù)字化程度的提高,越來(lái)越多的信息需要被存儲(chǔ)和傳輸,使用一種實(shí)時(shí)無(wú)損壓縮方法可以有效的降低數(shù)據(jù)存儲(chǔ)所需的空間以及數(shù)據(jù)傳輸所需的帶寬。目前被廣泛應(yīng)用的實(shí)時(shí)無(wú)損壓縮算法有LZMA,LZ77, GZIP, BZIP等,其中壓縮率最高的是BZIP壓縮算法。但是BZIP算法中需要進(jìn)行的Burrows Wheeler變換并不利于硬件實(shí)現(xiàn)。Burrows Wheeler變換是Mike Burrows依據(jù)David Wheeler提出的思想,也可稱(chēng)作塊排序壓縮。當(dāng)一個(gè)字符串用該算法轉(zhuǎn)換時(shí),BWT算法只改變這個(gè)字符串中字符的順序而并不改變其字符。如果原字符串有幾個(gè)出現(xiàn)多次的子串,那么轉(zhuǎn)換過(guò)的字符串上就會(huì)有一些連續(xù)重復(fù)的字符,這對(duì)壓縮是很有用的。該方法能使得基于處理字符串中連續(xù)重復(fù)字符的技術(shù)(如MTF變換和游程編碼)的編碼更容易被壓縮。更加重要的是Burrows-Wheeler變換的另一個(gè)特性,即在不儲(chǔ)存額外數(shù)據(jù)的前提下該變換是完全可逆的。換句話說(shuō),Burrows-Wheeler變換是一個(gè)“免費(fèi)”的提高文本壓縮效率的算法,它以犧牲額外的計(jì)算為代價(jià),換來(lái)的是更高效率的存儲(chǔ)壓縮。
[0003]目前使用計(jì)算機(jī)軟件實(shí)現(xiàn)的BWT算法并不能滿足實(shí)時(shí)壓縮和傳輸?shù)男枰⑶以撍惴〞?huì)大大消耗處理器的計(jì)算資源,導(dǎo)致計(jì)算機(jī)系統(tǒng)運(yùn)行效率底下,能源效率低。
[0004]此外,Burrows Wheeler變換也被用于大規(guī)模基因序列分析。當(dāng)代基因測(cè)序機(jī)每天可產(chǎn)生10億數(shù)量級(jí)的基因序列片段,對(duì)這些片段的排序被用來(lái)分析個(gè)體或群體生物的特性。而通用計(jì)算機(jī)很難在短時(shí)間內(nèi)對(duì)測(cè)序機(jī)輸出的大量數(shù)據(jù)進(jìn)行分析和處理。并且,處理這些數(shù)據(jù)會(huì)占用大量的物理內(nèi)存,導(dǎo)致大規(guī)?;蛐蛄蟹治龅某杀敬蟠筇岣?。
[0005]綜上可知,亟需一種BWT硬件實(shí)現(xiàn)裝置,從而在提升BWT變換速度和效率的同時(shí),降低對(duì)計(jì)算機(jī)處理器的占用率,提高能效。

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

[0006]本發(fā)明所要解決的技術(shù)問(wèn)題在于克服現(xiàn)有技術(shù)所存在不足,提供一種BurrowsWheeler變換硬件處理裝置,可在提升BWT變換速度和效率的同時(shí),降低對(duì)計(jì)算機(jī)處理器的占用率,提尚能效。
[0007]本發(fā)明具體采用以下技術(shù)方案解決上述技術(shù)問(wèn)題:
[0008]—種Burrows Wheeler變換硬件處理裝置,采用可編程邏輯器件實(shí)現(xiàn),該裝置包括:
[0009]數(shù)據(jù)接收模塊,用于接收待排序字符串;
[0010]數(shù)據(jù)存儲(chǔ)模塊,用于存儲(chǔ)待排序字符串及其序號(hào);
[0011]數(shù)據(jù)統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)出待排序字符串中相同字符的數(shù)量,以及每組相同字符中序號(hào)最小的字符的序號(hào);
[0012]BffT處理模塊,利用數(shù)據(jù)統(tǒng)計(jì)模塊統(tǒng)計(jì)出的信息,對(duì)存儲(chǔ)在數(shù)據(jù)存儲(chǔ)模塊中的待排序字符串進(jìn)行BWT排序;
[0013]數(shù)據(jù)輸出模塊,暫存BWT排序完成的字符串及其主序號(hào)。
[0014]優(yōu)選地,所述數(shù)據(jù)存儲(chǔ)模塊包括兩個(gè)隨機(jī)訪問(wèn)存儲(chǔ)器RAM:數(shù)據(jù)RAM和序號(hào)RAM,以及存儲(chǔ)控制器;數(shù)據(jù)RAM長(zhǎng)度等于待排序字符串的分塊長(zhǎng)度N,寬度等于字符編碼位寬,用于存放待排序字符串字符編碼值;序號(hào)RAM長(zhǎng)度等于待排序字符串的字符長(zhǎng)度,寬度為1g2N,用于存儲(chǔ)當(dāng)前正在被讀入的字符在字符串中的序號(hào)值;存儲(chǔ)控制器用于協(xié)調(diào)存儲(chǔ)字符值與序號(hào)的過(guò)程。
[0015]優(yōu)選地,所述數(shù)據(jù)統(tǒng)計(jì)模塊包括:
[0016]累積計(jì)數(shù)子模塊,用于統(tǒng)計(jì)輸入的字符串中,有多少種不同的字符值,并將字符串中的字符按照字符值的不同分組,然后統(tǒng)計(jì)每個(gè)組之中相同字符的個(gè)數(shù);
[0017]首指針統(tǒng)計(jì)子模塊,用于統(tǒng)計(jì)輸入的字符串中,每組相同字符中字符的序號(hào)最小值;
[0018]計(jì)數(shù)存儲(chǔ)器,用于存儲(chǔ)待排序字符串中,每組相同字符的數(shù)量;
[0019]首指針存儲(chǔ)器,用于存儲(chǔ)待排序字符串中,每組相同字符中序號(hào)值最小的字符序號(hào),當(dāng)其接收到來(lái)自首指針統(tǒng)計(jì)子模塊的更新首指針請(qǐng)求后,將來(lái)自首指針統(tǒng)計(jì)子模塊的字符序號(hào)轉(zhuǎn)換為用于構(gòu)建鏈表的首指針,該首指針值一直保持到下一次更新首指針請(qǐng)求或統(tǒng)計(jì)過(guò)程結(jié)束。
[0020]優(yōu)選地,所述BWT處理模塊包括:
[0021]鏈表生成子模塊,用于將每組中相同的字符的序號(hào)按照Burrows Wheeler變換中循環(huán)字符串排序規(guī)則進(jìn)行進(jìn)一步排序,并按照鏈表數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲(chǔ);
[0022]基地址生成子模塊,產(chǎn)生用于將每組字符存入排序存儲(chǔ)子模塊中所需的基地址;排序存儲(chǔ)子模塊,用于存儲(chǔ)排序后的字符串;
[0023]主序號(hào)生成子模塊,記錄整個(gè)BWT變換模塊工作過(guò)程中,主元素在RAM中所處的位置,并將這個(gè)位置信息轉(zhuǎn)化成用于BWT反變換的主序號(hào)。
[0024]進(jìn)一步地,所述鏈表生成子模塊包括:
[0025]搜索與插入子模塊,用于搜索每組相同字符的后續(xù)字符,找到第一個(gè)不同的后續(xù)字符,并作字符編碼值的比較,然后將字符及其序號(hào)存儲(chǔ)在相應(yīng)的鏈表存儲(chǔ)單元內(nèi);
[0026]偏移地址計(jì)算子模塊,用于將當(dāng)前字符組內(nèi)的值相同而序號(hào)不同的字符序號(hào)關(guān)系轉(zhuǎn)換成存儲(chǔ)器偏移地址。
[0027]相比現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:
[0028]本發(fā)明采用可編程邏輯器件(FPGA)實(shí)現(xiàn)BWT算法,通過(guò)采用基于專(zhuān)用硬件單元的并行排序算法,有效的提高了現(xiàn)有BWT算法的處理效率,大幅降低了對(duì)計(jì)算機(jī)運(yùn)算和存儲(chǔ)資源的占用。
[0029]本發(fā)明裝置可制作成獨(dú)立芯片結(jié)構(gòu),便于集成在BZIP壓縮或超大規(guī)?;蛐蛄蟹治龅刃枰玫紹WT算法的系統(tǒng)中。
【附圖說(shuō)明】
[0030]圖1為本發(fā)明Burrows Wheeler變換硬件處理裝置的結(jié)構(gòu)原理框圖;
[0031]圖2為【具體實(shí)施方式】中數(shù)據(jù)存儲(chǔ)模塊的結(jié)構(gòu)原理框圖;
[0032]圖3為【具體實(shí)施方式】中數(shù)據(jù)統(tǒng)計(jì)模塊的結(jié)構(gòu)原理框圖;
[0033]圖4為【具體實(shí)施方式】中BWT處理模塊的結(jié)構(gòu)原理框圖;
[0034]圖5為【具體實(shí)施方式】中鏈表生成子模塊的結(jié)構(gòu)原理框圖;
[0035]圖6為本發(fā)明Burrows Wheeler變換硬件處理裝置的工作流程圖;
[0036]圖7為本發(fā)明Burrows Wheeler變換硬件處理裝置一個(gè)具體處理實(shí)例的原理示意圖。
【具體實(shí)施方式】
[0037]下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明:
[0038]圖1顯示了本發(fā)明Burrows Wheeler變換硬件處理裝置的結(jié)構(gòu)原理。如圖1所示,本發(fā)明Burrows Wheeler變換硬件處理裝置包括:數(shù)據(jù)接收模塊、數(shù)據(jù)存儲(chǔ)模塊、數(shù)據(jù)統(tǒng)計(jì)模塊、BffT處理模塊、數(shù)據(jù)輸出模塊。
[0039]其中,數(shù)據(jù)接收模塊將接收到的32位二進(jìn)制數(shù)據(jù)根據(jù)小印第安序切割成4個(gè)字節(jié),以字節(jié)為單位對(duì)字符的先后順序進(jìn)行編號(hào),并將數(shù)據(jù)傳輸給數(shù)據(jù)統(tǒng)計(jì)模塊以及數(shù)據(jù)存儲(chǔ)豐吳塊。
[0040]數(shù)據(jù)存儲(chǔ)模塊,用于存儲(chǔ)待排序字符串及其序號(hào),來(lái)自數(shù)據(jù)接收模塊的數(shù)據(jù)按照其序號(hào)存儲(chǔ)緩存RAM之中,當(dāng)緩存RAM中存滿待排序字符或接收到來(lái)自外界的字符串結(jié)束信號(hào)后,將對(duì)后級(jí)的BWT處理模塊發(fā)出啟動(dòng)信號(hào)。
[0041]數(shù)據(jù)統(tǒng)計(jì)模塊,在接收來(lái)自數(shù)據(jù)接收模塊的待排序字符串的過(guò)程中,實(shí)時(shí)統(tǒng)計(jì)字符串中的字符值的分布情況,并按不同字符分組統(tǒng)計(jì)每組中重復(fù)字符的數(shù)量,同時(shí),將每組字符中最小的序號(hào)記錄下來(lái);然后將統(tǒng)計(jì)的每組重復(fù)字符的數(shù)量和字符中最小的序號(hào)提供給后續(xù)的BWT處理模塊。
[0042]BWT處理模塊,用于從數(shù)據(jù)存儲(chǔ)模塊讀取字符數(shù)據(jù)及其序號(hào),并利用來(lái)自數(shù)據(jù)統(tǒng)計(jì)模塊的統(tǒng)計(jì)數(shù)據(jù)建立每組相同字符內(nèi)部的排序鏈表,在掃描原始字符串的過(guò)程中逐漸完成對(duì)組內(nèi)相同字符的后續(xù)字符的比較和插入排序,并將排序完成的字符串和主序號(hào)傳輸給數(shù)據(jù)輸出模塊。
[0043]數(shù)據(jù)輸出模塊,用于接收來(lái)自BWT處理模塊的輸出字符串和主序號(hào),并通知后續(xù)的其它設(shè)備BWT處理已完成,可以從數(shù)據(jù)輸出模塊中取走排序完成的字符串和主序號(hào)。
[0044]圖2顯示了本【具體實(shí)施方式】中數(shù)據(jù)存儲(chǔ)模塊的結(jié)構(gòu)原理。如圖2所示,數(shù)據(jù)存儲(chǔ)模塊包括兩個(gè)隨機(jī)訪問(wèn)存儲(chǔ)器(RAM):數(shù)據(jù)隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、序號(hào)隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)以及存儲(chǔ)控制器。
[0045]其中,存儲(chǔ)控制器,協(xié)調(diào)兩個(gè)存儲(chǔ)器協(xié)同工作,使接收來(lái)自上一級(jí)模塊的字符串?dāng)?shù)據(jù)的過(guò)程中,同時(shí)將原始字符串中字符的值與序號(hào)順序存儲(chǔ)在數(shù)據(jù)RAM和序號(hào)RAM之中。
[0046]數(shù)據(jù)RAM,用于順序存儲(chǔ)待排序字符串,數(shù)據(jù)RAM的寬度為字符位寬W,長(zhǎng)度為待排序字符串分塊長(zhǎng)度N,數(shù)據(jù)RAM也可以存儲(chǔ)長(zhǎng)度低于N的字符串。
[0047]序號(hào)RAM,用于順序存儲(chǔ)待排序字符串的每個(gè)字符的序號(hào),序號(hào)RAM的寬度為字符位寬1g2N,長(zhǎng)度為待排序字符串分塊長(zhǎng)度N,序號(hào)RAM也可以存儲(chǔ)長(zhǎng)度低于N的字符串字符序號(hào)。
[0048]圖3顯示了本【具體實(shí)施方式】中數(shù)據(jù)統(tǒng)計(jì)模塊的結(jié)構(gòu)原理。如圖3所示,該數(shù)據(jù)統(tǒng)計(jì)模塊包括:累積計(jì)數(shù)子模塊、首指針統(tǒng)計(jì)子模塊、計(jì)數(shù)存儲(chǔ)器、首指針存儲(chǔ)器。
[0049]其中,累積計(jì)數(shù)子模塊,用于統(tǒng)計(jì)輸入的包含不多于N個(gè)字符的字符串中,有多少種不同的字符值,并將字符串中的字符按照字符值的不同分組,然后統(tǒng)計(jì)每個(gè)組之中相同字符的個(gè)數(shù)。
[0050]首指針統(tǒng)計(jì)子模塊,用于統(tǒng)計(jì)輸入的包含不多于N個(gè)字符的字符串中,每組相同字符中,字符的序號(hào)最小值,提供給后續(xù)模塊計(jì)算鏈表的起始地址。
[0051 ] 計(jì)數(shù)存儲(chǔ)器,用于存儲(chǔ)待排序字符串中,每組相同字符的數(shù)量,在統(tǒng)計(jì)相同字符個(gè)數(shù)的過(guò)程中,每個(gè)字符組寄存器在接收到來(lái)自累積計(jì)數(shù)器子模塊的自增信號(hào)后,值作自增并一直保持到下一次自增信號(hào)到來(lái)或統(tǒng)計(jì)過(guò)程
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1