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

數(shù)據(jù)讀取方法及裝置與流程

文檔序號(hào):12887107閱讀:212來(lái)源:國(guó)知局
數(shù)據(jù)讀取方法及裝置與流程

本申請(qǐng)涉及數(shù)據(jù)讀取技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)讀取方法及裝置。



背景技術(shù):

固態(tài)硬盤(pán)(英文:solidstatedrives,縮寫(xiě):ssd)通常指用固態(tài)電子存儲(chǔ)芯片陣列制成的硬盤(pán),由控制單元和存儲(chǔ)單元組成。如圖1所示,主機(jī)邏輯地址與物理地址映射關(guān)系表(英文:flashtransportlayer,縮寫(xiě):ftl)是一種被固態(tài)硬盤(pán)主控用于記錄主機(jī)邏輯地址到flash物理地址的映射關(guān)系的表格,通過(guò)該映射關(guān)系,可以找到對(duì)應(yīng)邏輯地址大小的數(shù)據(jù)塊在flash上的物理地址。

現(xiàn)有ssd主控的ftl設(shè)計(jì),每個(gè)ftl記錄所描述的數(shù)據(jù)塊映射粒度通常為4k固定大小。也就是說(shuō),每個(gè)ftl表項(xiàng)記錄了一個(gè)4k數(shù)據(jù)塊對(duì)應(yīng)的flash物理地址信息。當(dāng)主機(jī)發(fā)起數(shù)據(jù)讀命令時(shí),ftl需要查詢(xún)?cè)摂?shù)據(jù)橫跨的所有4k數(shù)據(jù)塊在flash上的物理地址信息,再根據(jù)物理地址信息去讀取數(shù)據(jù)。

當(dāng)主機(jī)發(fā)起大io的數(shù)據(jù)讀命令時(shí),這種固定大小映射粒度的ftl設(shè)計(jì),會(huì)導(dǎo)致多次查表來(lái)獲取每4k數(shù)據(jù)塊所對(duì)應(yīng)的flash物理位置。以512k的大io數(shù)據(jù)為例,一次io讀操作將導(dǎo)致查表128次,存在反復(fù)訪問(wèn)ftl數(shù)據(jù)的情況,降低ssd的性能;此外,如果這些表數(shù)據(jù)存放在外部ram或者flash上,ssd的性能損失將更為明顯。



技術(shù)實(shí)現(xiàn)要素:

本申請(qǐng)?zhí)峁┮环N數(shù)據(jù)讀取方法及裝置,以解決現(xiàn)有的數(shù)據(jù)讀取方法需要反復(fù)訪問(wèn)ftl數(shù)據(jù),影響ssd性能的問(wèn)題。

第一方面,本申請(qǐng)實(shí)施例提供一種數(shù)據(jù)讀取方法,包括如下步驟:

步驟s1、計(jì)算目標(biāo)數(shù)據(jù)的起始邏輯地址,以及所述目標(biāo)數(shù)據(jù)橫跨的邏輯地址總長(zhǎng)度;

步驟s2、查詢(xún)ftl,所述ftl表項(xiàng)記錄起始邏輯地址對(duì)應(yīng)的起始物理地址,同時(shí)記錄起始邏輯地址橫跨的連續(xù)物理塊個(gè)數(shù),獲取所述起始邏輯地址對(duì)應(yīng)的起始物理地址,以及以所述起始物理地址作為起點(diǎn),所述起始物理地址和所述起始物理地址之后的連續(xù)物理塊的總長(zhǎng)度;

步驟s3、判斷所述連續(xù)物理塊的總長(zhǎng)度是否大于或等于所述邏輯地址總長(zhǎng)度;

步驟s4、如果所述連續(xù)物理塊的總長(zhǎng)度大于或等于所述邏輯地址總長(zhǎng)度,以所述起始物理地址作為起點(diǎn),根據(jù)所述邏輯地址總長(zhǎng)度,向后讀取相應(yīng)長(zhǎng)度的物理地址,完成對(duì)所述目標(biāo)數(shù)據(jù)的讀取。

可選的,判斷所述連續(xù)物理塊的總長(zhǎng)度是否大于或等于所述邏輯地址總長(zhǎng)度之后,包括:

步驟s5、如果所述連續(xù)物理塊的總長(zhǎng)度小于所述邏輯地址總長(zhǎng)度,以所述起始物理地址作為起點(diǎn),根據(jù)所述連續(xù)物理塊的總長(zhǎng)度,向后讀取相應(yīng)長(zhǎng)度的物理地址;

步驟s6、根據(jù)所述起始邏輯地址,以及所述連續(xù)物理塊的總長(zhǎng)度,計(jì)算所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址,以及,計(jì)算以所述當(dāng)前邏輯地址作為起點(diǎn),所述目標(biāo)數(shù)據(jù)橫跨的剩余邏輯地址長(zhǎng)度;

步驟s7、以所述當(dāng)前邏輯地址作為起始邏輯地址,以所述剩余邏輯地址長(zhǎng)度作為所述邏輯地址總長(zhǎng)度,重復(fù)執(zhí)行所述步驟s2至所述步驟s6的步驟。

可選的,根據(jù)所述起始邏輯地址,以及所述連續(xù)物理塊的總長(zhǎng)度,計(jì)算所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址的步驟中,根據(jù):

lau當(dāng)前=lau起始+m,

計(jì)算所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址,其中,lau當(dāng)前為所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址,lau起始為所述起始邏輯地址,m為所述連續(xù)物理塊的總長(zhǎng)度。

可選的,計(jì)算以所述當(dāng)前邏輯地址作為起點(diǎn),所述目標(biāo)數(shù)據(jù)橫跨的剩余邏輯地址長(zhǎng)度的步驟中,根據(jù):

n=l-m,

計(jì)算所述剩余邏輯地址長(zhǎng)度,其中,n為所述剩余邏輯地址長(zhǎng)度,l為所述目標(biāo)數(shù)據(jù)橫跨的邏輯地址總長(zhǎng)度,m為所述連續(xù)物理塊的總長(zhǎng)度。

所述起始邏輯地址對(duì)應(yīng)的起始物理地址,以及以所述起始物理地址作為起點(diǎn),所述起始物理地址和所述起始物理地址之后的連續(xù)物理塊的總長(zhǎng)度,是由所述目標(biāo)數(shù)據(jù)寫(xiě)入時(shí),根據(jù)寫(xiě)入的目標(biāo)數(shù)據(jù)的邏輯地址和邏輯地址總長(zhǎng)度計(jì)算并記錄到所述ftl。

第二方面,本申請(qǐng)實(shí)施例提供一種數(shù)據(jù)讀取裝置,包括:

第一計(jì)算單元,用于計(jì)算目標(biāo)數(shù)據(jù)的起始邏輯地址,以及所述目標(biāo)數(shù)據(jù)橫跨的邏輯地址總長(zhǎng)度;

獲取單元,查詢(xún)ftl,所述ftl表項(xiàng)記錄起始邏輯地址對(duì)應(yīng)的起始物理地址,同時(shí)記錄起始邏輯地址橫跨的連續(xù)物理塊個(gè)數(shù),獲取所述起始邏輯地址對(duì)應(yīng)的起始物理地址,以及以所述起始物理地址作為起點(diǎn),所述起始物理地址和所述起始物理地址之后的連續(xù)物理塊的總長(zhǎng)度;

判斷單元,用于判斷所述連續(xù)物理塊的總長(zhǎng)度是否大于或等于所述邏輯地址總長(zhǎng)度;

第一讀取單元,用于如果所述連續(xù)物理塊的總長(zhǎng)度大于或等于所述邏輯地址總長(zhǎng)度,以所述起始物理地址作為起點(diǎn),根據(jù)所述邏輯地址總長(zhǎng)度,向后讀取相應(yīng)長(zhǎng)度的物理地址,完成對(duì)所述目標(biāo)數(shù)據(jù)的讀取。

可選的,所述裝置還包括:

第二讀取單元,用于如果所述連續(xù)物理塊的總長(zhǎng)度小于所述邏輯地址總長(zhǎng)度,以所述起始物理地址作為起點(diǎn),根據(jù)所述連續(xù)物理塊的總長(zhǎng)度,向后讀取相應(yīng)長(zhǎng)度的物理地址;

第二計(jì)算單元,用于根據(jù)所述起始邏輯地址,以及所述連續(xù)物理塊的總長(zhǎng)度,計(jì)算所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址,以及,計(jì)算以所述當(dāng)前邏輯地址作為起點(diǎn),所述目標(biāo)數(shù)據(jù)橫跨的剩余邏輯地址長(zhǎng)度;

循環(huán)單元,用于以所述當(dāng)前邏輯地址作為起始邏輯地址,以所述剩余邏輯地址長(zhǎng)度作為所述邏輯地址總長(zhǎng)度,重復(fù)執(zhí)行所述步驟二至所述步驟六的步驟。

可選的,所述第二計(jì)算單元用于:

根據(jù)

lau當(dāng)前=lau起始+m,

計(jì)算所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址,其中,lau當(dāng)前為所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址,lau起始為所述起始邏輯地址,所述m為所述連續(xù)物理塊的總長(zhǎng)度。

可選的,所述第二計(jì)算單元用于:

根據(jù)

n=l-m,

計(jì)算所述剩余邏輯地址長(zhǎng)度,其中,n為所述剩余邏輯地址長(zhǎng)度,l為所述目標(biāo)數(shù)據(jù)橫跨的邏輯地址總長(zhǎng)度,m為所述連續(xù)物理塊的總長(zhǎng)度。

所述獲取單元獲取的起始邏輯地址對(duì)應(yīng)的起始物理地址,以及以所述起始物理地址作為起點(diǎn),所述起始物理地址和所述起始物理地址之后的連續(xù)物理塊的總長(zhǎng)度,是由所述目標(biāo)數(shù)據(jù)寫(xiě)入時(shí),根據(jù)寫(xiě)入的目標(biāo)數(shù)據(jù)的邏輯地址和邏輯地址總長(zhǎng)度計(jì)算并記錄到所述ftl。

由以上技術(shù)方案可知,本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)讀取方法及裝置,通過(guò)在ftl表項(xiàng)中記錄連續(xù)邏輯地址對(duì)應(yīng)的連續(xù)物理塊個(gè)數(shù),在讀取數(shù)據(jù)時(shí),計(jì)算目標(biāo)數(shù)據(jù)的起始邏輯地址,以及所述目標(biāo)數(shù)據(jù)橫跨的邏輯地址總長(zhǎng)度;根據(jù)預(yù)設(shè)的邏輯地址與物理地址的映射關(guān)系,獲取所述起始邏輯地址對(duì)應(yīng)的起始物理地址,以及以所述起始物理地址作為起點(diǎn),所述起始物理地址以及所述起始物理地址之后的連續(xù)物理塊的總長(zhǎng)度;判斷所述連續(xù)物理塊的總長(zhǎng)度是否大于或等于所述邏輯地址總長(zhǎng)度;如果所述連續(xù)物理塊的總長(zhǎng)度大于或等于所述邏輯地址總長(zhǎng)度,以所述起始物理地址作為起點(diǎn),根據(jù)所述邏輯地址總長(zhǎng)度,向后讀取相應(yīng)長(zhǎng)度的物理地址,完成對(duì)所述目標(biāo)數(shù)據(jù)的讀取,如果所述連續(xù)物理塊的總長(zhǎng)度小于所述邏輯地址總長(zhǎng)度,以起始物理地址作為起點(diǎn),根據(jù)記錄的物理地址總長(zhǎng)度,將io拆分為對(duì)應(yīng)物理塊長(zhǎng)度和剩余邏輯地址大小,讀取物理塊長(zhǎng)度大小的數(shù)據(jù),然后對(duì)io剩余邏輯地址大小繼續(xù)匹配物理地址,只要記錄的連續(xù)塊地址大于單位映射粒度,就能減少訪問(wèn)ftl的次數(shù),節(jié)省查詢(xún)時(shí)間,提升ssd性能。

附圖說(shuō)明

為了更清楚地說(shuō)明本申請(qǐng)的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,對(duì)于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為現(xiàn)有ftl表項(xiàng)設(shè)計(jì)的示意圖。

圖2為本申請(qǐng)實(shí)施例ftl表項(xiàng)設(shè)計(jì)的示意圖。

圖3為本申請(qǐng)實(shí)施例ftl表項(xiàng)映射的示意圖。

圖4為本申請(qǐng)實(shí)施例提供的ftl表項(xiàng)更新的流程圖。

圖5為本申請(qǐng)?zhí)峁┑囊环N數(shù)據(jù)讀取方法的第一實(shí)施例的流程圖。

圖6為本申請(qǐng)?zhí)峁┑囊环N數(shù)據(jù)讀取方法的第二實(shí)施例的流程圖。

圖7為本申請(qǐng)?zhí)峁┑囊环N數(shù)據(jù)讀取裝置的第一實(shí)施例的示意圖。

圖8為本申請(qǐng)?zhí)峁┑囊环N數(shù)據(jù)讀取裝置的第二實(shí)施例的示意圖。

具體實(shí)施方式

如圖2至圖3所示,本申請(qǐng)實(shí)施例的ftl表項(xiàng)設(shè)計(jì)中,每一個(gè)表項(xiàng)除記錄邏輯地址對(duì)應(yīng)的物理地址以外,還記錄后面連續(xù)邏輯地址對(duì)應(yīng)的連續(xù)物理塊個(gè)數(shù),在查表時(shí)可以有效節(jié)省長(zhǎng)度大于映射粒度的io的表項(xiàng)查詢(xún)時(shí)間。

如圖4所示,ftl表項(xiàng)更新流程發(fā)生在主機(jī)數(shù)據(jù)寫(xiě)入時(shí),當(dāng)ftl處理來(lái)自前端的寫(xiě)io命令時(shí),ftl為當(dāng)前io分配對(duì)應(yīng)大小的連續(xù)物理空間,同時(shí)將對(duì)應(yīng)的物理地址更新到對(duì)應(yīng)邏輯地址的ftl表項(xiàng)。本發(fā)明除更新物理地址以外,同時(shí)記錄每一個(gè)表項(xiàng)對(duì)應(yīng)的物理地址后面連續(xù)邏輯地址對(duì)應(yīng)的連續(xù)物理塊個(gè)數(shù)。

以數(shù)據(jù)采集業(yè)務(wù)為例,數(shù)據(jù)的存儲(chǔ)和讀取都是大io形式,大多數(shù)情況下都達(dá)到了512k的io大小?,F(xiàn)有方案在4k映射粒度下,io讀流程需要查詢(xún)ftl表128次。采用本申請(qǐng)實(shí)施例ftl表項(xiàng)設(shè)計(jì)后,如果寫(xiě)io與讀io大小一致,ftl表項(xiàng)里面記錄的連續(xù)邏輯地址對(duì)應(yīng)的連續(xù)物理塊個(gè)數(shù)將達(dá)到128個(gè),可以1次查表就得到整個(gè)io所需要的物理地址信息,極大縮減查表時(shí)間,提升系統(tǒng)性能。

具體地,本申請(qǐng)實(shí)施例的ftl表項(xiàng)的更新流程包括以下步驟:

步驟s101,計(jì)算目標(biāo)數(shù)據(jù)的邏輯地址,以及橫跨的邏輯地址長(zhǎng)度。

步驟s102,為目標(biāo)數(shù)據(jù)分配對(duì)應(yīng)長(zhǎng)度的物理地址。

步驟s103,將數(shù)據(jù)寫(xiě)入對(duì)應(yīng)的物理地址。

步驟s104,按順序依次更新邏輯地址的ftl表項(xiàng)對(duì)應(yīng)的物理地址,以及更新對(duì)應(yīng)物理地址后續(xù)的連續(xù)塊個(gè)數(shù),完成ftl表項(xiàng)的更新。

請(qǐng)參閱圖5,本申請(qǐng)?zhí)峁┑囊环N數(shù)據(jù)讀取方法的第一實(shí)施例,包括如下步驟:

步驟s1、計(jì)算目標(biāo)數(shù)據(jù)的起始邏輯地址,以及所述目標(biāo)數(shù)據(jù)橫跨的邏輯地址總長(zhǎng)度。

其中,目標(biāo)數(shù)據(jù)即主機(jī)下發(fā)io讀命令時(shí),待讀取的數(shù)據(jù)。該目標(biāo)數(shù)據(jù)可以是如512k的io大小的數(shù)據(jù)。在有地址變換功能的計(jì)算機(jī)中,訪問(wèn)指令給出的地址叫邏輯地址(logicaladdress),也叫相對(duì)地址,要經(jīng)過(guò)尋址方式的計(jì)算或變換才能得到內(nèi)存儲(chǔ)器中的物理地址。

步驟s2、查詢(xún)ftl,所述ftl表項(xiàng)記錄起始邏輯地址對(duì)應(yīng)的起始物理地址,同時(shí)記錄起始邏輯地址橫跨的連續(xù)物理塊個(gè)數(shù),獲取所述起始邏輯地址對(duì)應(yīng)的起始物理地址,以及以所述起始物理地址作為起點(diǎn),所述起始物理地址和所述起始物理地址之后的連續(xù)物理塊的總長(zhǎng)度。

在存儲(chǔ)器里以字節(jié)為單位存儲(chǔ)信息,為正確地存放或取得信息,每一個(gè)字節(jié)單元給予一個(gè)唯一的存儲(chǔ)器地址,稱(chēng)為物理地址(physicaladdress),又叫實(shí)際地址或絕對(duì)地址。

其中,所述起始邏輯地址對(duì)應(yīng)的起始物理地址,以及以所述起始物理地址作為起點(diǎn),所述起始物理地址和所述起始物理地址之后的連續(xù)物理塊的總長(zhǎng)度,是由所述目標(biāo)數(shù)據(jù)寫(xiě)入時(shí),根據(jù)寫(xiě)入的目標(biāo)數(shù)據(jù)的邏輯地址和邏輯地址總長(zhǎng)度計(jì)算并記錄到所述ftl。

步驟s3、判斷所述連續(xù)物理塊的總長(zhǎng)度是否大于或等于所述邏輯地址總長(zhǎng)度。

步驟s4、如果所述連續(xù)物理塊的總長(zhǎng)度大于或等于所述邏輯地址總長(zhǎng)度,以所述起始物理地址作為起點(diǎn),根據(jù)所述邏輯地址總長(zhǎng)度,向后讀取相應(yīng)長(zhǎng)度的物理地址,完成對(duì)所述目標(biāo)數(shù)據(jù)的讀取。

請(qǐng)參閱圖6,本申請(qǐng)?zhí)峁┑囊环N數(shù)據(jù)讀取方法的第二實(shí)施例,在第一實(shí)施例的基礎(chǔ)上,判斷所述連續(xù)物理塊的總長(zhǎng)度是否大于或等于所述邏輯地址總長(zhǎng)度之后,包括:

步驟s5、如果所述連續(xù)物理塊的總長(zhǎng)度小于所述邏輯地址總長(zhǎng)度,以所述起始物理地址作為起點(diǎn),根據(jù)所述連續(xù)物理塊的總長(zhǎng)度,向后讀取相應(yīng)長(zhǎng)度的物理地址。

步驟s6、根據(jù)所述起始邏輯地址,以及所述連續(xù)物理塊的總長(zhǎng)度,計(jì)算所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址,以及,計(jì)算以所述當(dāng)前邏輯地址作為起點(diǎn),所述目標(biāo)數(shù)據(jù)橫跨的剩余邏輯地址長(zhǎng)度。

步驟s7、以所述當(dāng)前邏輯地址作為起始邏輯地址,以所述剩余邏輯地址長(zhǎng)度作為所述邏輯地址總長(zhǎng)度,重復(fù)執(zhí)行所述步驟s2至所步驟s6的步驟。

根據(jù)所述起始邏輯地址,以及所述連續(xù)物理塊的總長(zhǎng)度,計(jì)算所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址的步驟中,根據(jù):

lau當(dāng)前=lau起始+m,

計(jì)算所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址,其中,lau當(dāng)前為所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址,lau起始為所述起始邏輯地址,m為所述連續(xù)物理塊的總長(zhǎng)度。

計(jì)算以所述當(dāng)前邏輯地址作為起點(diǎn),所述目標(biāo)數(shù)據(jù)橫跨的剩余邏輯地址長(zhǎng)度的步驟中,根據(jù):

n=l-m,

計(jì)算所述剩余邏輯地址長(zhǎng)度,其中,n為所述剩余邏輯地址長(zhǎng)度,l為所述目標(biāo)數(shù)據(jù)橫跨的邏輯地址總長(zhǎng)度,m為所述連續(xù)物理塊的總長(zhǎng)度。

由以上技術(shù)方案可知,本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)讀取方法,通過(guò)在ftl表項(xiàng)中記錄連續(xù)邏輯地址對(duì)應(yīng)的連續(xù)物理塊個(gè)數(shù),在讀取數(shù)據(jù)時(shí),計(jì)算目標(biāo)數(shù)據(jù)的起始邏輯地址,以及所述目標(biāo)數(shù)據(jù)橫跨的邏輯地址總長(zhǎng)度;根據(jù)預(yù)設(shè)的邏輯地址與物理地址的映射關(guān)系,獲取所述起始邏輯地址對(duì)應(yīng)的起始物理地址,以及以所述起始物理地址作為起點(diǎn),所述起始物理地址以及所述起始物理地址之后的連續(xù)物理塊的總長(zhǎng)度;判斷所述連續(xù)物理塊的總長(zhǎng)度是否大于或等于所述邏輯地址總長(zhǎng)度;如果所述連續(xù)物理塊的總長(zhǎng)度大于或等于所述邏輯地址總長(zhǎng)度,以所述起始物理地址作為起點(diǎn),根據(jù)所述邏輯地址總長(zhǎng)度,向后讀取相應(yīng)長(zhǎng)度的物理地址,完成對(duì)所述目標(biāo)數(shù)據(jù)的讀取,如果所述連續(xù)物理塊的總長(zhǎng)度小于所述邏輯地址總長(zhǎng)度,以起始物理地址作為起點(diǎn),根據(jù)記錄的物理地址總長(zhǎng)度,將io拆分為對(duì)應(yīng)物理塊長(zhǎng)度和剩余邏輯地址大小,讀取物理塊長(zhǎng)度大小的數(shù)據(jù),然后對(duì)io剩余邏輯地址大小繼續(xù)匹配物理地址,只要記錄的連續(xù)塊地址大于單位映射粒度,就能減少訪問(wèn)ftl的次數(shù),節(jié)省查詢(xún)時(shí)間,提升ssd性能。

請(qǐng)參閱圖7,本申請(qǐng)?zhí)峁┑囊环N數(shù)據(jù)讀取裝置的第一實(shí)施例,包括:

第一計(jì)算單元1,用于計(jì)算目標(biāo)數(shù)據(jù)的起始邏輯地址,以及所述目標(biāo)數(shù)據(jù)橫跨的邏輯地址總長(zhǎng)度;

獲取單元2,查詢(xún)ftl,所述ftl表項(xiàng)記錄起始邏輯地址對(duì)應(yīng)的起始物理地址,同時(shí)記錄起始邏輯地址橫跨的連續(xù)物理塊個(gè)數(shù),獲取所述起始邏輯地址對(duì)應(yīng)的起始物理地址,以及以所述起始物理地址作為起點(diǎn),所述起始物理地址和所述起始物理地址之后的連續(xù)物理塊的總長(zhǎng)度;

其中,所述獲取單元獲取的起始邏輯地址對(duì)應(yīng)的起始物理地址,以及以所述起始物理地址作為起點(diǎn),所述起始物理地址和所述起始物理地址之后的連續(xù)物理塊的總長(zhǎng)度,是由所述目標(biāo)數(shù)據(jù)寫(xiě)入時(shí),根據(jù)寫(xiě)入的目標(biāo)數(shù)據(jù)的邏輯地址和邏輯地址總長(zhǎng)度計(jì)算并記錄到所述ftl。

判斷單元3,用于判斷所述連續(xù)物理塊的總長(zhǎng)度是否大于或等于所述邏輯地址總長(zhǎng)度;

第一讀取單元4,用于如果所述連續(xù)物理塊的總長(zhǎng)度大于或等于所述邏輯地址總長(zhǎng)度,以所述起始物理地址作為起點(diǎn),根據(jù)所述邏輯地址總長(zhǎng)度,向后讀取相應(yīng)長(zhǎng)度的物理地址,完成對(duì)所述目標(biāo)數(shù)據(jù)的讀取。

請(qǐng)參閱圖8,本申請(qǐng)?zhí)峁┑囊环N數(shù)據(jù)讀取裝置的第二實(shí)施例,在第一實(shí)施例的基礎(chǔ)上,所述裝置還包括:

第二讀取單元5,用于如果所述連續(xù)物理塊的總長(zhǎng)度小于所述邏輯地址總長(zhǎng)度,以所述起始物理地址作為起點(diǎn),根據(jù)所述連續(xù)物理塊的總長(zhǎng)度,向后讀取相應(yīng)長(zhǎng)度的物理地址;

第二計(jì)算單元6,用于根據(jù)所述起始邏輯地址,以及所述連續(xù)物理塊的總長(zhǎng)度,計(jì)算所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址,以及,計(jì)算以所述當(dāng)前邏輯地址作為起點(diǎn),所述目標(biāo)數(shù)據(jù)橫跨的剩余邏輯地址長(zhǎng)度;

循環(huán)單元7,用于以所述當(dāng)前邏輯地址作為起始邏輯地址,以所述剩余邏輯地址長(zhǎng)度作為所述邏輯地址總長(zhǎng)度,重復(fù)執(zhí)行所述步驟二至所述步驟六的步驟。

所述第二計(jì)算單元用于:

根據(jù)

lau當(dāng)前=lau起始+m,

計(jì)算所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址,其中,lau當(dāng)前為所述目標(biāo)數(shù)據(jù)的當(dāng)前邏輯地址,lau起始為所述起始邏輯地址,m為所述連續(xù)物理塊的總長(zhǎng)度。

所述第二計(jì)算單元用于:

根據(jù)

n=l-m,

計(jì)算所述剩余邏輯地址長(zhǎng)度,其中,n為所述剩余邏輯地址長(zhǎng)度,l為所述目標(biāo)數(shù)據(jù)橫跨的邏輯地址總長(zhǎng)度,m為所述連續(xù)物理塊的總長(zhǎng)度。

由以上技術(shù)方案可知,本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)讀取裝置,通過(guò)在ftl表項(xiàng)中記錄連續(xù)邏輯地址對(duì)應(yīng)的連續(xù)物理塊個(gè)數(shù),在讀取數(shù)據(jù)時(shí),可用于計(jì)算目標(biāo)數(shù)據(jù)的起始邏輯地址,以及所述目標(biāo)數(shù)據(jù)橫跨的邏輯地址總長(zhǎng)度;根據(jù)預(yù)設(shè)的邏輯地址與物理地址的映射關(guān)系,獲取所述起始邏輯地址對(duì)應(yīng)的起始物理地址,以及以所述起始物理地址作為起點(diǎn),所述起始物理地址以及所述起始物理地址之后的連續(xù)物理塊的總長(zhǎng)度;判斷所述連續(xù)物理塊的總長(zhǎng)度是否大于或等于所述邏輯地址總長(zhǎng)度;如果所述連續(xù)物理塊的總長(zhǎng)度大于或等于所述邏輯地址總長(zhǎng)度,以所述起始物理地址作為起點(diǎn),根據(jù)所述邏輯地址總長(zhǎng)度,向后讀取相應(yīng)長(zhǎng)度的物理地址,完成對(duì)所述目標(biāo)數(shù)據(jù)的讀取,如果所述連續(xù)物理塊的總長(zhǎng)度小于所述邏輯地址總長(zhǎng)度,以起始物理地址作為起點(diǎn),根據(jù)記錄的物理地址總長(zhǎng)度,將io拆分為對(duì)應(yīng)物理塊長(zhǎng)度和剩余邏輯地址大小,讀取物理塊長(zhǎng)度大小的數(shù)據(jù),然后對(duì)io剩余邏輯地址大小繼續(xù)匹配物理地址,只要記錄的連續(xù)塊地址大于單位映射粒度,就能減少訪問(wèn)ftl的次數(shù),節(jié)省查詢(xún)時(shí)間,提升ssd性能。

具體實(shí)現(xiàn)中,本申請(qǐng)還提供一種計(jì)算機(jī)存儲(chǔ)介質(zhì),其中,該計(jì)算機(jī)存儲(chǔ)介質(zhì)可存儲(chǔ)有程序,該程序執(zhí)行時(shí)可包括本發(fā)明提供的數(shù)據(jù)讀取方法的各實(shí)施例中的部分或全部步驟。所述的存儲(chǔ)介質(zhì)可為磁碟、光盤(pán)、只讀存儲(chǔ)記憶體(英文:read-onlymemory,簡(jiǎn)稱(chēng):rom)或隨機(jī)存儲(chǔ)記憶體(英文:randomaccessmemory,簡(jiǎn)稱(chēng):ram)等。

本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明實(shí)施例中的技術(shù)可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明實(shí)施例中的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如rom/ram、磁碟、光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的。

本說(shuō)明書(shū)中各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。尤其,對(duì)于數(shù)據(jù)讀取裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)實(shí)施例中的說(shuō)明即可。

以上所述的本申請(qǐng)實(shí)施方式并不構(gòu)成對(duì)本申請(qǐng)保護(hù)范圍的限定。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1