<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CMB的深入了解與實際應用

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

1、什么是CMB

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

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

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

CMB的深入了解與實際應用

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

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

CMB的深入了解與實際應用

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

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

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

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

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

3、CMB在NVMe PCIe驅動中的應用

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

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

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

4、CMB在NVMe Over Fabric/TCP中的應用

因為CMB在PCIe上讀操作比寫操作慢很多,所以NVMe PCIe驅動中沒有采用通過CMB讀取CQ的辦法。不過在NVMe的另外分支Over Fabric和Over TCP上,CMB可以更好地發揮自身優勢,減少網絡傳輸的交互次數,提高包含多個交換機的PCI Express結構拓撲的效率。

5、CMB的性能測試

1)運行環境:Ubuntu 18.04.1 LTS

2)內核版本:4.15.0-45-generic

3)控制器芯片:Starblaze STAR1000

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

? 測試寫帶寬

CMB的深入了解與實際應用

? 測試寫IOPS

CMB的深入了解與實際應用

? 測試讀帶寬

CMB的深入了解與實際應用

? 測試讀IOPS

CMB的深入了解與實際應用

? 測試4K數據的穩定性

CMB的深入了解與實際應用

從以上的測試可以看到:

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

在穩定性方面,讀寫的抖動是很小的。

6

Open Channel SSD與CMB的結合

ss

目前憶芯科技的OCSSD與CMB結合應用的一個場景就是持久性內存(Persistent Memory),它具有非易失性、較低延遲、可Bytes尋址的特性,使數據管理具有更大的靈活性。它非常適合需要頻繁訪問復雜數據集的環境,以及因電源故障或系統崩潰導致停機的敏感環境?,F有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)異常掉電保護

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

3)Byte訪問

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    2790

    瀏覽量

    72964
  • SSD
    SSD
    +關注

    關注

    20

    文章

    2722

    瀏覽量

    115801
  • HMB
    HMB
    +關注

    關注

    0

    文章

    5

    瀏覽量

    9150

原文標題:NVMe又有新花樣!CMB vs HMB

文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    深入了解示波器

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

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

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

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

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

    單片機的深入了解!

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

    深入了解LabVIEW FPGA資料分享

    深入了解LabVIEW FPGA
    發表于 05-27 08:35

    深入了解單片機匯編重要嗎?

    不學匯編,只用C語言,能不能深入了解單片機?
    發表于 07-21 10:38

    深入了解示波器|泰克內部資料

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

    深入了解主動電掃描陣列(AESA)雷達系統

    深入了解主動電掃描陣列(AESA)雷達系統
    發表于 05-24 06:51

    示波器的深入了解

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

    帶你深入了解光耦

    電子發燒友網帶你深入了解光耦相關知識,講述光耦的作用,光耦原理及各種光耦型號和替代型號,讓大家全面了解光電耦合器
    發表于 03-16 16:43
    帶你<b class='flag-5'>深入了解</b>光耦

    深入了解示波器入門手冊

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

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

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

    帶你深入了解示波器

    帶你深入了解示波器
    發表于 02-07 14:26 ?18次下載

    深入了解安全光柵

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

    深入了解 GaN 技術

    深入了解 GaN 技術
    的頭像 發表于 12-06 17:28 ?5531次閱讀
    <b class='flag-5'>深入了解</b> GaN 技術
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>