RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CMB的深入了解與實際應(yīng)用

SSDFans ? 來源:ZF ? 2019-04-21 11:10 ? 次閱讀

1、什么是CMB

在NVMe Express 1.2 Spec中開始支持一個特性,那就是CMB(Controller Memory Buffer),是指SSD控制器內(nèi)部的讀寫存儲緩沖區(qū),與HMB(Host Memory Buffer)的不同處在于所使用的內(nèi)存地址位于控制器自己的內(nèi)存中,而不是位于主機(jī)內(nèi)存中,但它們使用隊列的方式都是一樣的。

2、如何獲取CMB的配置信息

在NVMe SSD Controller 中有兩個寄存器CMBLOC和CMBSZ是描述CMB的基本信息。在主機(jī)中可以使用NVMe-cli工具查看寄存器信息(nvme show-regs /dev/nvme0n1 -H)。

CMB的深入了解與實際應(yīng)用

1)CMBLOC(Controller Memory Buffer Location),是指存儲區(qū)的位置信息,其中OFST(Offset)表示存儲區(qū)的偏移地址,單位是CMBSZ.SZ,注意要是4KB對齊。BIR(Base Indicator Register)則表示PCI BAR(基地址寄存器)的序號,上圖中使用的是Bar0空間。

2)CMBSZ(Controller Memory Buffer Size),是指存儲區(qū)的大小信息。其中Size是指CMB中可用空間的長度,注意單位也是CMBSZ.SZ。Size Units(SZU)表示CMB的單位是多少,從下表中我們可以看到,只要device有足夠的空間,CMB的大小可以配置得非常大的。

CMB的深入了解與實際應(yīng)用

例如Size Units是4KB,那么CMB大小是512x*4KB=2MB,偏移地址是0x100*4KB=1MB。

3)接下來的幾個bit就表示該設(shè)備支持CMB的哪些用途

a、Write Data Support(WDS),表示是否支持主機(jī)直接將data和meta_data發(fā)送到設(shè)備的CMB。Read Data Support(RDS),表示是否支持主機(jī)從設(shè)備的CMB中讀取data和meta_data。

b、PRP SGL List Support,表示是否支持主機(jī)將PRP list或者SGL list寫入到設(shè)備的CMB中。

c、Completion Queue Support(CQS)和Submission Queue Support(SQS)分別表示設(shè)備是否支持在CMB中實現(xiàn)Admin和IO的完成隊列和發(fā)送隊列。ssss

3、CMB在NVMe PCIe驅(qū)動中的應(yīng)用

1)通常在主機(jī)內(nèi)存中實現(xiàn)的發(fā)送隊列會要求控制器到主機(jī)內(nèi)存執(zhí)行PCIe的讀取操作來獲取隊列內(nèi)容。而基于CMB實現(xiàn)的發(fā)送隊列,則是主機(jī)將發(fā)送隊列中的命令直接寫入控制器的內(nèi)部存儲空間中,這樣減少了一個控制器從主機(jī)讀取命令的動作,可以減少命令執(zhí)行的延遲。目前,在Linux Kernel 4.15中,NVMe驅(qū)動已經(jīng)支持通過CMB發(fā)送SQ。

2)同樣,PRP list或SGL list需要在PCIe協(xié)議上需要進(jìn)行單獨的讀取操作,這也可以通過將PRP或SGL寫入控制器內(nèi)存緩沖區(qū)來減少控制器的讀取動作。

3)在協(xié)議中有提到讓主機(jī)將data或meta data寫入控制器內(nèi)存緩沖區(qū),而不是讓控制器從主機(jī)內(nèi)存中獲取數(shù)據(jù)或元數(shù)據(jù)。后面我們有實驗可以看到CMB在少量數(shù)據(jù)的寫入方面比較有利,所以CMB在meta data的寫入上可能也會有一定的提升。

4、CMB在NVMe Over Fabric/TCP中的應(yīng)用

因為CMB在PCIe上讀操作比寫操作慢很多,所以NVMe PCIe驅(qū)動中沒有采用通過CMB讀取CQ的辦法。不過在NVMe的另外分支Over Fabric和Over TCP上,CMB可以更好地發(fā)揮自身優(yōu)勢,減少網(wǎng)絡(luò)傳輸?shù)慕换ゴ螖?shù),提高包含多個交換機(jī)的PCI Express結(jié)構(gòu)拓?fù)涞男省?/p>

5、CMB的性能測試

1)運行環(huán)境:Ubuntu 18.04.1 LTS

2)內(nèi)核版本:4.15.0-45-generic

3)控制器芯片:Starblaze STAR1000

4) 說明:以下測試進(jìn)行NVMe和CMB的小數(shù)據(jù)讀寫測試對比。因為基于STAR1000的OC方案是4KBytes的physical_block_size,所以NVMe命令的最小數(shù)據(jù)長度是基于4K的,要實現(xiàn)小于4K的數(shù)據(jù)傳輸,則會損失一部分帶寬。以下的對比測試都是QD1的讀寫。

? 測試寫帶寬

CMB的深入了解與實際應(yīng)用

? 測試寫IOPS

CMB的深入了解與實際應(yīng)用

? 測試讀帶寬

CMB的深入了解與實際應(yīng)用

? 測試讀IOPS

CMB的深入了解與實際應(yīng)用

? 測試4K數(shù)據(jù)的穩(wěn)定性

CMB的深入了解與實際應(yīng)用

從以上的測試可以看到:

在性能方面,CMB 64Bytes的寫帶寬能達(dá)到1.063GiB/s,對應(yīng)的IOPS是16.6M,最高的IOPS(8Bytes寫)能到19.07M,是NVMe命令實現(xiàn)的340倍;讀的性能相比寫要低一些,但是8Bytes讀的IOPS也能達(dá)到1.06M,是NVMe命令實現(xiàn)的23倍。相比NVMe命令的IOPS,CMB的讀寫延遲有明顯的優(yōu)勢。

在穩(wěn)定性方面,讀寫的抖動是很小的。

6

Open Channel SSD與CMB的結(jié)合

ss

目前憶芯科技的OCSSD與CMB結(jié)合應(yīng)用的一個場景就是持久性內(nèi)存(Persistent Memory),它具有非易失性、較低延遲、可Bytes尋址的特性,使數(shù)據(jù)管理具有更大的靈活性。它非常適合需要頻繁訪問復(fù)雜數(shù)據(jù)集的環(huán)境,以及因電源故障或系統(tǒng)崩潰導(dǎo)致停機(jī)的敏感環(huán)境?,F(xiàn)有PM方案提供以下幾個特性:

1)易用的API

? int nvm_pm_write(struct nvm_pm_dev* dev, void* buf,unsigned int length, unsigned int offset)

? int nvm_pm_read(struct nvm_pm_dev* dev, void* buf,unsigned int length, unsigned int offset)

2)異常掉電保護(hù)

目前Star-OCSSD為CMB提供的默認(rèn)掉電保護(hù)空間是2MiB(可以根據(jù)具體需求調(diào)整),固件會在掉電前保證將數(shù)據(jù)寫入到Nand Flash中,并在下一次上電時加載到CMB區(qū)域。

3)Byte訪問

當(dāng)前憶芯科技的STAR1000和STAR100P兩款控制器的CMB支持PCIe最大有效負(fù)載大小的burst傳輸,支持Byte訪問,也支持任意byte對齊訪問。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3019

    瀏覽量

    74002
  • SSD
    SSD
    +關(guān)注

    關(guān)注

    21

    文章

    2857

    瀏覽量

    117366
  • HMB
    HMB
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    9193

原文標(biāo)題:NVMe又有新花樣!CMB vs HMB

文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    深入了解示波器

    深入了解示波器
    發(fā)表于 11-14 22:32

    專家開講:深入了解電池技術(shù) ──Part 1

    。筆者不會一一詳細(xì)介紹所有的電池技術(shù),只選擇一些常見或是值得認(rèn)識的;而在接下來的專欄里,筆者將開始介紹電池分類、常見規(guī)格以及專業(yè)術(shù)語,如果你有特別想知道的電池技術(shù),歡迎留言!擴(kuò)展閱讀:專家開講:深入了解
    發(fā)表于 08-18 09:33

    專家開講:深入了解電池技術(shù)──Part 3

    資深工程師 Ivan Cowie 的「深入了解電池技術(shù)」專欄Part 3來啰!這次要介紹的是鉛酸電池(lead-acidbatteries)技術(shù)。鉛酸電池是在1859年由法國物理學(xué)家Gaston
    發(fā)表于 08-18 09:37

    單片機(jī)的深入了解!

    項目名稱:單片機(jī)的深入了解!項目是否開源:否申請開發(fā)板數(shù)量:1 塊申請人團(tuán)隊介紹:我們團(tuán)隊由五個人組成,我們打算開始著手單片機(jī)的程序改編,設(shè)計一些比較特殊新穎的東西!希望給以支持!
    發(fā)表于 10-12 20:00

    深入了解LabVIEW FPGA資料分享

    深入了解LabVIEW FPGA
    發(fā)表于 05-27 08:35

    深入了解單片機(jī)匯編重要嗎?

    不學(xué)匯編,只用C語言,能不能深入了解單片機(jī)?
    發(fā)表于 07-21 10:38

    深入了解示波器|泰克內(nèi)部資料

    深入了解示波器|泰克內(nèi)部資料,分享給大家。
    發(fā)表于 03-03 09:28

    深入了解主動電掃描陣列(AESA)雷達(dá)系統(tǒng)

    深入了解主動電掃描陣列(AESA)雷達(dá)系統(tǒng)
    發(fā)表于 05-24 06:51

    示波器的深入了解

    示波器的深入了解 引言自然界運行著各種形式的正弦波,比如海浪、地震、聲波、爆破、空氣中傳播的聲音,或者身體運轉(zhuǎn)的自然節(jié)律。物理世界里,能
    發(fā)表于 11-04 11:53 ?52次下載
    示波器的<b class='flag-5'>深入了解</b>

    深入了解示波器入門手冊

    深入了解示波器入門手冊
    發(fā)表于 03-27 17:43 ?241次下載
    <b class='flag-5'>深入了解</b>示波器入門手冊

    深入了解電路噪聲的那些事

    模擬電子的相關(guān)知識學(xué)習(xí)教材資料——深入了解電路噪聲的那些事
    發(fā)表于 09-27 15:19 ?0次下載

    深入了解電感與磁珠的異同

    模擬電子的相關(guān)知識學(xué)習(xí)教材資料——深入了解電感與磁珠的異同
    發(fā)表于 09-27 15:19 ?0次下載

    帶你深入了解示波器

    帶你深入了解示波器
    發(fā)表于 02-07 14:26 ?19次下載

    深入了解安全光柵

    深入了解安全光柵
    的頭像 發(fā)表于 06-25 13:53 ?1205次閱讀
    <b class='flag-5'>深入了解</b>安全光柵

    深入了解 GaN 技術(shù)

    深入了解 GaN 技術(shù)
    的頭像 發(fā)表于 12-06 17:28 ?6147次閱讀
    <b class='flag-5'>深入了解</b> GaN 技術(shù)
    RM新时代网站-首页