两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種減小ssd讀寫io時延的方法與系統(tǒng)的制作方法

文檔序號:8942782閱讀:2405來源:國知局
一種減小ssd讀寫io時延的方法與系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種減小SSD讀寫IO時延的方法與系統(tǒng)。
【背景技術(shù)】
[0002] 現(xiàn)有SSD主控通過FTL映射表項記錄主機邏輯地址與Flash物理地址之間的映射 關(guān)系。隨著SSD提供的存儲空間增大,映射表項的個數(shù)也逐漸增多。以2T的SSD容量來看, 假設(shè)映射粒度為4K Byte,每個映射表項占用6個Byte,那么FTL映射表項占用的空間大小 為(2T/4K)*6Byte = 3G Byte 大小。
[0003] 由于CPU訪問RAM的性能遠遠高于訪問Flash介質(zhì)的性能,考慮性能原因,SSD主 控通常通過緩存映射表項的方式來保證IO性能。但對于如此大的FTL映射表項數(shù)據(jù),當(dāng)前 的SSD主控?zé)o法提供如此大的RAM空間來緩存整張FTL映射表?,F(xiàn)有做法是通過采用多級 映射表,RAM緩存部分映射表項數(shù)據(jù)的方式來保證IO性能(如圖1所示,其中:FTL二級映 射表:用于存放FTL映射表項的系統(tǒng)數(shù)據(jù)塊??紤]SSD主控芯片RAM空間大小的問題,F(xiàn)TL 二級映射表通常被分為多塊,RAM空間只緩存了部分二級映射表;FTL-級映射表:用于記 錄二級映射表在緩存中的狀態(tài)信息(是否緩存在RAM中),以及二級映射表在Flash上的物 理位置。通常FTL -級映射表整張緩存在RAM中。)。
[0004] 當(dāng)主機(Host)讀IO訪問的邏輯地址對應(yīng)的FTL映射表項不在RAM緩存中時,需 要先將映射表項從Flash介質(zhì)上讀取出來,獲取映射關(guān)系后再找到對應(yīng)的物理位置讀取數(shù) 據(jù)。如果遇到RAM緩存空間不夠,還需要先下刷原有的映射表項到Flash介質(zhì)上,再釋放 RAM緩存空間。
[0005] 如圖2,目前SSD的性能中,IO時延基本都是微秒級。在SSD內(nèi)部的IO路徑上, SSD主控向Flash接口下發(fā)讀命令,到數(shù)據(jù)讀到RAM中所花費的時間,大概占整個IO時延的 20%左右。如果主機下發(fā)的讀IO對應(yīng)的映射表項未在緩存RAM中,需要額外加載一次映射 表項,那么相應(yīng)的讀IO時延也要增加20%左右。所以,在隨機IO占多數(shù)的應(yīng)用場景里面, 這部分時延普遍偏大。當(dāng)主機下發(fā)的邏輯讀IO請求經(jīng)過SSD主控,無法在RAM緩存中命中 對應(yīng)的FTL映射表項時,主控芯片需要從Flash介質(zhì)上先讀取FTL映射表項,再根據(jù)FTL映 射表項得到數(shù)據(jù)存放的物理位置,讀取對應(yīng)的數(shù)據(jù)。相對能夠在緩存中命中FTL映射表項 的讀10,上述IO過程中增加了一次從Flash介質(zhì)讀取FTL映射表項的操作,極大的增加了 IO時延。
[0006] 本發(fā)明用到的名詞解釋如下:
[0007] SSD :Solid State Drive,固態(tài)硬盤,一種利用Nand Flash介質(zhì)存儲用戶數(shù)據(jù)的存 儲裝置。
[0008] Vendor命令:根據(jù)ATA協(xié)議規(guī)定的格式,廠商自定義的用于主機和硬盤之間,交互 數(shù)據(jù)和信息的廠商自定義命令。
[0009] SSD主控:用于管理存放在Nand flash介質(zhì)上的系統(tǒng)數(shù)據(jù)和用戶數(shù)據(jù)的SOC芯片。 SSD主控通過相關(guān)算法與措施,能夠極大的提升整個SSD的壽命和可靠性以及性能,是SSD 系統(tǒng)中最關(guān)鍵最重要的模塊。
[0010] LBA :Logical Block Address,主機側(cè)用于訪問SSD存儲空間的線性邏輯地址。
[0011] PBA :Physical Blcok Address,SSD 主控訪問 flash 介質(zhì)的物理地址。
[0012] FTL映射表項:FTL(Flash translation layer)映射表項記錄了主機邏輯地址到 Flash介質(zhì)物理地址的映射關(guān)系。主機下發(fā)的讀IO請求,為邏輯地址,通過查找對應(yīng)的映射 表項,計算出數(shù)據(jù)在flash介質(zhì)上存放的物理地址,然后讀出數(shù)據(jù)。
[0013] HIF :Host Interface,主機接口,用于SSD主控與主機之間的數(shù)據(jù)交互。
[0014] FIF :Flash Interface,Nand Flash 顆粒接口,用于 SSD 主控與 Flash 顆粒之間的 數(shù)據(jù)交互。

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

[0015] 本發(fā)明所要解決的技術(shù)問題是,針對現(xiàn)有技術(shù)不足,提供一種減小SSD讀寫IO時 延的方法與系統(tǒng)。
[0016] 為解決上述技術(shù)問題,本發(fā)明所采用的技術(shù)方案是:一種減小SSD讀寫IO時延的 方法,包括以下步驟:
[0017] 1)主機側(cè)加載SSD驅(qū)動時,SSD驅(qū)動初始化時在內(nèi)存中分配足夠的內(nèi)存空間,通過 vendor命令,讀取SSD的整張FTL映射表數(shù)據(jù)到主機內(nèi)存,并將所有FTL映射表項均標記為 干凈表項;
[0018] 2)主機側(cè)業(yè)務(wù)下發(fā)讀IO時,讀IO命令經(jīng)過SSD驅(qū)動,SSD驅(qū)動查找讀IO邏輯地 址對應(yīng)的FTL映射表項,根據(jù)FTL映射表項記錄的物理地址,下發(fā)讀物理地址的特殊IO命 令到SSD主控;SSD主控收到讀IO命令后,檢查讀IO命令中的相關(guān)標記,若發(fā)現(xiàn)是讀物理地 址的特殊10,直接讀取對應(yīng)Flash物理地址的數(shù)據(jù),并返回給主機;主機側(cè)下發(fā)寫IO命令 時,寫IO命令經(jīng)過SSD驅(qū)動,將對應(yīng)的FTL映射表項標記為臟;SSD主控收到寫IO命令后, 將數(shù)據(jù)寫入Flash,同時更新FTL映射表項,并返回寫入結(jié)果給主機;當(dāng)寫IO命令返回給主 機后,主機向SSD主控下發(fā)所述vendor命令,讀取對應(yīng)邏輯地址的FTL映射表項,讀取成功 后,利用讀取出來的表項數(shù)據(jù)更新主機內(nèi)存中記錄的FTL映射表項,同時將FTL映射表項重 新標記為干凈。
[0019] 本發(fā)明還提供了一種減小SSD讀寫IO時延的系統(tǒng),其包括:
[0020] 主機:用于加載SSD驅(qū)動,并在SSD驅(qū)動初始化時在內(nèi)存中分配足夠的內(nèi)存空間, 通過vendor命令,讀取SSD的整張FTL映射表數(shù)據(jù)到主機內(nèi)存,將所有FTL映射表項均標記 為干凈表項;下發(fā)讀10命令,查找讀10邏輯地址對應(yīng)的FTL映射表項,根據(jù)FTL映射表項 記錄的物理地址,下發(fā)讀物理地址的特殊10命令到SSD主控;下發(fā)寫10命令,將對應(yīng)的FTL 映射表項標記為臟;并在收到SSD主控返回的寫10命令后,向SSD主控下發(fā)所述vendor命 令,讀取對應(yīng)邏輯地址的FTL映射表項,讀取成功后,利用讀取出來的表項數(shù)據(jù)更新主機內(nèi) 存中記錄的FTL映射表項,同時將被SSD驅(qū)動標記為臟的FTL映射表項重新標記為干凈;
[0021] SSD主控:用于在收到讀10命令后,檢查讀10命令中的相關(guān)標記,若發(fā)現(xiàn)是讀物 理地址的特殊10,直接讀取對應(yīng)Flash物理地址的數(shù)據(jù),并返回給主機;或者在收到寫10 命令后,將數(shù)據(jù)寫入Flash,同時更新FTL映射表項,并返回寫入結(jié)果給主機;
[0022] Flash :用于存放SSD主控寫入的數(shù)據(jù)。
[0023] 所述主機包括:
[0024] APP或上層:用于下發(fā)讀IO命令或?qū)慖O命令;接收SSD主控返回的寫IO命令;
[0025] SSD驅(qū)動:用于在主機側(cè)保存一份完整的SSD FTL映射表的鏡像,同時在APP或上 層下發(fā)讀IO命令時,查找讀IO邏輯地址對應(yīng)的FTL映射表項,根據(jù)FTL映射表項記錄的物 理地址,下發(fā)讀物理地址的特殊IO命令到SSD主控;在APP或上層下發(fā)寫IO命令時,將對 應(yīng)的FTL映射表項標記為臟;
[0026] 內(nèi)存:用于加載SSD驅(qū)動,并通過vendor命令,讀取SSD的整張FTL映射表數(shù)據(jù), 將所有FTL映射表項均標記為干凈表項;并在APP或上層接收SSD主控返回的寫IO命令 后,向SSD主控下發(fā)vendor命令,讀取對應(yīng)邏輯地址的FTL映射表項,讀取成功后,利用讀 取出來的表項數(shù)據(jù)更新FTL映射表項,同時將被SSD驅(qū)動標記為臟的FTL映射表項重新標 記為干凈。
[0027] 進一步地,該系統(tǒng)還包括:
[0028] HIF :用于SSD主控與主機之間的數(shù)據(jù)交互;
[0029] FIF :用于SSD主控與Flash顆粒之間的數(shù)據(jù)交互。
[0030] 與現(xiàn)有技術(shù)相比,本發(fā)明所具有的有益效果為:本發(fā)明讀取一份完整的FTL映射 表鏡像到主機內(nèi)存里,減少整個IO路徑上對Flash的讀次數(shù),從而達到減小整個讀IO時延 的目的,最大限度地避免了讀IO請求無法命中FTL映射表的現(xiàn)象,減少甚至消除IO過程中 從Flash介質(zhì)上獲取映射表項的步驟,降低了系統(tǒng)的平均讀寫IO時延。
【附圖說明】
[0031] 圖1為SSD主控緩存中的多級映射表;
[0032] 圖2為現(xiàn)有SSD主控結(jié)構(gòu)與主機系統(tǒng)接口與結(jié)構(gòu)框圖;
[0033] 圖3為本發(fā)明SSD主控結(jié)構(gòu)與主機系統(tǒng)接口與結(jié)構(gòu)框圖;
[0034] 圖4為本發(fā)明方法時序圖。
【具體實施方式】
[0035] 本發(fā)明的SSD主控結(jié)構(gòu)圖如圖3所示,主要包括如下幾個部分:
[0036] 一、主機側(cè)SSD驅(qū)動
[0037] SSD驅(qū)動主要負責(zé)在主機側(cè)保存一份完整的SSD FTL映射表的鏡像,同時負責(zé)根 據(jù)主機側(cè)FTL鏡像映射表將過往讀IO請求中的邏輯地址轉(zhuǎn)換為物理地址,然后按照接口協(xié) 議(如SATA和NVMe等)發(fā)送給SSD。
[0038] 主要流程如下:
[0039] 1、主機側(cè)加載SSD驅(qū)動時,在內(nèi)存中分配足夠內(nèi)存空間。然后通過自定義vendor 命令,讀取SSD的整張FTL映射表數(shù)據(jù)到主機內(nèi)存。此時所有FTL映射表項都標記為干凈 表項。
[0040] 2、驅(qū)動檢測并適配主機側(cè)業(yè)務(wù)下發(fā)的讀10。
[0041] 主機側(cè)業(yè)務(wù)
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
中西区| 潍坊市| 玛纳斯县| 台中市| 原平市| 怀柔区| 泸定县| 呼和浩特市| 西峡县| 新蔡县| 洛南县| 金湖县| 长子县| 文登市| 科技| 丘北县| 岐山县| 广平县| 滁州市| 山东省| 博罗县| 甘孜县| 墨竹工卡县| 金华市| 黔西县| 呈贡县| 区。| 焉耆| 二连浩特市| 吴堡县| 定远县| 都昌县| 祁阳县| 民乐县| 天津市| 大连市| 张家界市| 宁远县| 吐鲁番市| 分宜县| 宿迁市|