SSD自己也能復制粘貼?淺談NVMe 2.0 Copy Command命令

復制粘貼(Ctrl+C/V)作為現代打工人日常辦公的必備生存技能,想必大家都非常熟悉。但你知道嗎,其實SSD自身也能進行這個非常實用的操作。可能有的讀者要說了:這有什么稀奇,復制粘貼這么簡單的功能,能實現不是很正常嗎?這句話對,但也不完全正確,其中原因,正是我們今天介紹的主角:Copy Command。

功能介紹

當數據需要生成一個獨立副本時,復制粘貼往往是最直接的處理方式,具象到存儲設備來說,就是一次A地址讀取+B地址寫入的組合動作,簡單來說也是Copy Command的含義。可就是這樣一套看似簡單的操作,為什么直到NVMe 2.0才被推出呢?在這之前,相應功能又要怎么去實現呢?

其實,Copy Command的重點并不在于它所實現的最終結果,而在于它實現方式的差異。在規范推出這個命令之前,Copy功能的實現其實是由Host“手動操作”的。簡單說,就是Host在自己的Buffer(如電腦的內存)留出一定空間,然后先從源數據地址讀取數據內容到Host Buffer,再從Host Buffer搬移到目標地址中去。其流程如下圖所示:

Host Copy簡易流程示意
然而就是這幾步看似不起眼的操作,卻涵蓋了很多不必要的開銷,這就好比我從上海出發前往蘇州,但卻不得不先繞道北京,然后再前往蘇州,整個過程中多余的路程都是沒有必要的資源浪費。而當這種開銷被規模放大后,就會對體驗帶來不利影響。

相比較,Copy Command就簡單了很多,Host只需要把Command發給SSD Controller,后續事情便不再需要Host參與,全部交由SSD執行,直接省略了在前端接口進行“內耗”的所有過程。它和DMA(Direct Memory Access)有著異曲同工之妙,無需Host親自下場,只需給出數據搬移的參數和命令,便可以去執行其它事情。當Copy完成后,SSD Controller會把Command Status回傳Host來告知成功與否。

Copy Command簡易流程示例
如上圖所示,當使用Copy Command命令后,整個操作簡潔了很多,我們也終于可以直接“從上海前往蘇州”了。接下來,我們一起看看協議細節。

協議細節和釋義

根據協議定義,Copy Command可以從多個不連續的源數據邏輯地址范圍拷貝數據,但是目標地址必須是能夠容納總拷貝數據量的一段連續的邏輯地址范圍。同時,Copy Command目前只支持在同一個命名空間內進行數據拷貝。

每一段源數據在拷貝到目標LBA中時,其排布順序應和源數據實例列表中的先后順序保持一致,如下圖所示,Range 0中的數據應從目標LBA地址的起始地址開始寫入,Range 1中的數據則需要緊鄰Range 0。拷貝操作中,讀和寫操作可以順序執行,也可以并行執行。

Copy Command示意,引自nvme spec
如果使用Copy Command所在的命名空間啟用了“端到端數據保護”功能,則在命令的讀/寫操作過程中,都會使用保護信息進行處理。其處理方式和常規讀/寫完全相同,示意流程如下,在此不做展開。

帶有保護信息的Copy Command執行(引自NVMe Spec)
如果Copy Command中的讀操作試圖訪問一個未分配或者未寫入的邏輯塊,則命令可以選擇反饋該情況并終止操作,或讀取全0x00/0xFF值以及相應的保護信息。

當命令完成時,控制器會把指明命令完成狀態的完成隊列實例發送到相關聯的I/O完成隊列中去。如果命令完成失敗,則完成隊列實例的Dword 0將會顯示編號最小的拷貝失敗的源數據范圍實例。

字段釋義

控制器應當在Identify Controller data structure(控制器認證數據結構)的Copy Descriptor Formats Supported(拷貝描述符格式支持)字段指明自己所支持的Source Range Entries Descriptor formats(源數據范圍實例描述符格式)。

Copy Command所提供的信息,其實是一串用于記錄單個或多個需要被復制的源數據的LBA范圍列表,它們一起描述了哪些數據需要被寫入到以SDLBA作為起始地址的目標LBA范圍。Copy Command主要涉及到Command Dword 2,3,10,11,12,13,14,15等字段。

**Dword 2、Dword 3和Dword 14:**它們共同指定了可變長度的Logical Block Storage Tag (LBST)以及Initial Logical Block Reference Tag (ILBRT),它們在拷貝操作的寫入操作階段會派上用場。如果命名空間在格式化時沒有啟用“端到端信息保護”功能,則這些字段的內容將被控制器忽略。

**Dword 10和Dword 11:**這兩個字段組合構成了一個64-Bit的地址,該地址指定了拷貝操作寫入時所使用的目標邏輯地址的起始地址,即Starting Destination LBA (SDLBA)。

**Dword 12:**規定了Copy Command執行過程中所涉及的數據校驗等內容。如端到端數據保護PI的校驗;控制器在發送Copy命令完成前,應確保Data與Metadata均已經寫入到NVM(非易失存儲介質)中等等。需要指出的是,如果命名空間被格式化為帶有16b Guard保護信息,則一個Copy Command中可以存在最多128條需要拷貝的源數據LBA范圍;如果命名空間被格式化為帶有32b或64b Guard保護信息,需要拷貝的源數據LBA范圍數量則減少至102條。

此外,對于Copy Command,它的一些字段值還會受到Identify Namespace data structure(命名空間認證數據結構)中相關字段的限制。如單個源數據的最大長度(Maximum Single Source Range Length,MSSRL),單個Copy Command可以拷貝的最大數據量(Maximum Copy Length,MCL),單個Copy Command支持的拷貝的最大源數據的數量(Maximum Source Range Count,MSRC)。如果任何一個上述字段對應的命令參數大于允許的最大值,則Copy Command需要以“超出命令大小限制”作為命令返回狀態碼被終止。一些其它可能存在的錯誤狀態信息,如PI校驗失敗、寫入目標地址是只讀屬性等等。
總體而言,對于同一個命名空間內的數據搬移操作,使用新的NVMe Copy Command顯然有著巨大的效率優勢。盡管該命令目前還不能跨命名空間乃至跨硬盤使用,但我們相信,隨著未來閃存技術的持續發展,定會有更多更加好用的功能推出,現有功能也將得到進一步完善與加強。

我們也將在PBlaze7 7940系列企業級PCIe 5.0 SSD上面首次搭載該技術,讓高性能NVMe SSD的潛力得到進一步釋放,持續優化用戶的使用體驗,提高生產效率,為客戶創造更高價值!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213388.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213388.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213388.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

騰訊字節常考的linux命令

1 ps 1.1 ps -ef 有哪些字段 ps -ef 命令在Unix/Linux系統中用于顯示當前運行的進程。輸出的字段通常包括: UID:啟動進程的用戶ID。PID:進程ID。PPID:父進程ID。C:CPU利用率。STIME:進程啟動時間。TTY&a…

安卓上比iOS快捷指令更強大的工具——MacroDroid

使用 MacroDroid (Android) 自動化您的日常生活——一個簡單的自動化應用程序,用于在 Android 上自動執行任務以及如何在其上自動執行任務。 iOS 和 Android 之間的區別? iOS和Android是兩種不同的移動操作系統,iOS由蘋果公司開發,于2007年…

conda配環境問題合集

(CtrlF,請) 問題: File "F:\Anaconda3\envs\YOLOv5\lib\ssl.py", line 773, in __init__ raise ValueError("check_hostname requires server_hostname") ValueError: check_hostname requires server_h…

Vue2解決pinia刷新后數據丟失的問題

Pinia:官網 Pinia 是一個 Vue.js 狀態管理庫,如果你在組件中修改了 store 中的數據并刷新了界面,Pinia 會將 store 中的數據重置為初始值,從而導致數據丟失的問題。 這里給出vue2的解決方案: 可以使用 Pinia 的 Per…

當接口要加入新方法時,我后悔沒有早點學設計模式了

📢?聲明: 🍄 大家好,我是風箏 🌍 作者主頁:【古時的風箏CSDN主頁】。 ?? 本文目的為個人學習記錄及知識分享。如果有什么不正確、不嚴謹的地方請及時指正,不勝感激。 直達博主:「…

PP材料粘接ABS材料使用UV膠的好處?

跟隨著現階段材料的不斷發展更迭,PP材料應用越來越廣,生產效率要求越來越高,為了加快生產,提高效率,PP材料的粘接上使用UV膠粘接PP(聚丙烯)和ABS(丙烯腈-丁二烯-苯乙烯共聚物&#x…

python Open3D加載obj

pip安裝Open3D python -m pip install open3d示例代碼 import numpy as np import open3d as o3dpath_obj test/assimp-5.2.5/test/models/OBJ/box.objmesh o3d.io.read_triangle_mesh(path_obj, enable_post_processingTrue)print(np.asarray(mesh.vertices))mesh.compute…

Jenkins:持續集成與持續交付的自動化利器

隨著軟件開發行業的快速發展,持續集成(Continuous Integration,簡稱CI)和持續交付(Continuous Delivery,簡稱CD)已經成為了現代軟件開發的重要理念。Jenkins作為一款開源的持續集成和持續交付工…

企業可以利用SD-WAN打破網絡限制,實現高效穩定的應用訪問

在當今數字化時代,我們面臨著越來越多復雜應用和各種類型的數據傳輸。企業需要實時訪問云應用、視頻會議等關鍵應用,不斷增長的訪問流量,導致應用訪問速度變得越來越慢,給工作效率和用戶體驗帶來了很大困擾。 SD-WAN是否能夠解決這…

javaSwing酒店管理

一、介紹 在這篇博客中,我們將介紹一個基于MySQL數據庫、Java編程語言和Swing圖形用戶界面的簡單酒店管理系統。該系統包括了查詢房客信息、查詢房客狀態、修改房客信息、添加房間信息、添加住戶、退房管理、預定管理、退訂管理、入賬管理、出賬管理、修改資料等多…

0009Java程序設計-ssm微信小程序在慢性疾病管理中的應用

文章目錄 **摘要**目錄系統實現開發環境 編程技術交流、源碼分享、模板分享、網課分享 企鵝🐧裙:776871563 摘要 首先,論文一開始便是清楚的論述了小程序的研究內容。其次,剖析系統需求分析,弄明白“做什么”,分析包括業務分析和業務流程的分析以及用例…

極坐標曲線@典型的4種曲線

文章目錄 abstract典型曲線心形線玫瑰線阿基米德螺線伯努利雙扭線 abstract 除了圓和圓錐曲線外,還有許多曲線用極坐標描述會簡單得多 典型曲線 分析下列曲線時,線分析是否含有三角函數(周期性) 利用描點法做出單個周期內的圖形 作圖:可以打開geogebra https://www.geogebr…

記:vite3+vue3+axios前端項目跨域問題解決【前端和服務器nginx配置】

前言:什么是跨域,網上一搜一大把,所以這里直接跳過,直入主題。 處理方式:不通過后端處理跨域,通過前端服務器nginx處理。 1.前端涉及處理跨域的必要配置(開發環境、生產環境)&…

銀行插件導致的Outlook客戶端無法連接服務器問題

問題現象 最近遇到好些同事出現outlook客戶端無法連接服務器的情況,具體現象就是右下角一直顯示【正在嘗試連接…】或者【需要密碼】,點擊【需要密碼】按鈕,輸密碼的彈窗是一個完全空白的頁面。 此時打開word,右上角那里去登錄o…

LeetCode19. Remove Nth Node From End of List

文章目錄 一、題目二、題解 一、題目 Given the head of a linked list, remove the nth node from the end of the list and return its head. Example 1: Input: head [1,2,3,4,5], n 2 Output: [1,2,3,5] Example 2: Input: head [1], n 1 Output: [] Example 3: I…

智能優化算法應用:基于緞藍園丁鳥算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用:基于緞藍園丁鳥算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用:基于緞藍園丁鳥算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.緞藍園丁鳥算法4.實驗參數設定5.算法…

自動數據增廣論文筆記 | AutoAugment: Learning Augmentation Strategies from Data

谷歌大腦出品 paper: https://arxiv.org/abs/1805.09501 這里是個論文的閱讀心得,筆記,不等同論文全部內容 文章目錄 一、摘要1.1 翻譯1.2 筆記 二、(第三部分)自動增強:直接在感興趣的數據集上搜索最佳增強策略2.1 翻譯2.2 筆記 三、(第四部分)實驗與結…

為什么說數字化轉型能幫助企業降本增效?

引言 數字化轉型是當今商業領域中的關鍵議題,它不僅是技術的應用,更是一種戰略性的變革,對企業而言具有重要意義。在這個數字化時代,企業需要不斷適應和采納新技術,以獲得競爭優勢并提高效率。 數字化轉型旨在將傳統業…

匿名內部類 - ( 零基礎學java )

Java-匿名內部類 我們先分析匿名內部類的結構,然后逐一解釋,最后以下羅列的問題都會在下面的內容中一一得到解答 : 匿名內部類到底是什么? 我們為什么要學習匿名內部類 ? 匿名內部類都有怎樣的作用 ? 匿名內部類應用的場景又有哪些 ? 匿名內部類是否有缺陷? 讓我們…

Java (JDK 21) 調用 OpenCV (4.8.0)

Java 調用 OpenCV 一.OpenCV 下載和安裝二.創建 Java Maven 項目三.其他測試 一.OpenCV 下載和安裝 Open CV 官網 可以下載編譯好的包,也可以下載源碼自行編譯 雙擊安裝 opencv-4.8.0-windows.exe 默認為當前目錄 安裝即解壓縮 根據系統位數選擇 將 x64 目錄下 op…