NVMe là gì: giao thức SSD tốc độ cao, thay thế SATA và AHCI

Sơ đồ kiến trúc phần mềm SATA Express cho thấy hai đường AHCI và NVM Express chạy song song trên bus PCI Express

NVMe là giao thức giao tiếp giữa hệ điều hành và ổ cứng thể rắn, viết tắt của Non-Volatile Memory Express. Nó được thiết kế riêng cho NAND flash nên khai thác được tốc độ của SSD, thay vì dùng chung giao thức cũ vốn sinh ra cho ổ đĩa cơ quay.

Khe cắm M.2 trên bo mạch chủ Asus X99-E WS với khóa M, hỗ trợ lắp ổ SSD kích thước 2260 và 2280

Điểm mấu chốt: AHCI cũ vốn được thiết kế khi ổ cứng cơ phải chờ đầu đĩa quay tới vị trí cần đọc nên mỗi lệnh đều chậm. Khi chuyển sang SSD, độ trễ rơi xuống hàng chục micro giây, giao thức cũ bỗng thành nút thắt vì nó không biết gửi nhiều lệnh song song. NVMe sửa đúng chỗ đó.

NVMe khác SATA và AHCI ở chỗ nào

So sánh trực tiếp hai lớp giao thức giữa hệ điều hành và thiết bị lưu trữ:

Tiêu chí SATA với AHCI NVMe
Số hàng đợi lệnh 1 hàng đợi Tối đa 65.535 hàng đợi
Lệnh tối đa mỗi hàng đợi 32 65.536
Cổng ngắt phần cứng Một cổng Tối đa 2.048 qua MSI-X
Khóa bảo vệ lệnh Cần khóa khi phát lệnh Không cần khóa
Quản lý năng lượng ALPM APST, các trạng thái PS0 và PS1

Khác biệt lớn nhất là số hàng đợi. Một ổ SATA chỉ có một hàng đợi với 32 lệnh, còn ổ NVMe cho phép tới 65.535 hàng đợi, mỗi hàng đợi chứa 65.536 lệnh. Ổ cứng thể rắn bên trong có hàng trăm chip NAND chạy song song, nên nếu CPU không đủ lệnh để đưa vào, phần cứng mạnh cũng ngồi không.

Kèm theo đó là việc truy cập các thanh ghi không thể đưa vào bộ nhớ đệm chỉ tốn tối đa 2 lần cho mỗi lệnh, so với tối đa 6 lần ở chế độ không xếp hàng và 9 lần ở chế độ có xếp hàng của AHCI. Đây chính là nguồn gốc của độ trễ thấp hơn nhiều lần.

Sơ đồ kiến trúc phần mềm SATA Express cho thấy hai đường AHCI và NVM Express chạy song song trên bus PCI Express

Băng thông: con số được kiểm chứng

NVMe chạy trên bus PCI Express, mỗi làn truyền theo mã hoá 128b/130b. Băng thông lý thuyết cho cấu hình bốn làn phổ biến trên ổ M.2:

Thế hệ PCIe Tốc độ tín hiệu Băng thông x4 lý thuyết
PCIe 3.0 8,0 GT/s 3,938 GB/s
PCIe 4.0 16,0 GT/s 7,877 GB/s
PCIe 5.0 32,0 GT/s 15,754 GB/s

Những con số này tính theo công thức tốc độ tín hiệu nhân tỉ lệ mã hoá, nhân số làn, chia cho 8 để ra byte. Đây là mức trần của đường truyền, ổ thực tế luôn thấp hơn.

Để thấy rõ khoảng cách, ổ Samsung 990 Pro bản 2 TB dùng PCIe 4.0 đạt tối đa 7.450 MB/s đọc tuần tự và 6.900 MB/s ghi tuần tự, tương ứng khoảng 1,4 triệu IOPS đọc và 1,55 triệu IOPS ghi. Với ổ SATA thế hệ ba, con số đọc tuần tự chỉ khoảng 500 MB/s.

Độ trễ còn ấn tượng hơn phần băng thông: ổ NVMe trả lời trong khoảng 50 đến 100 micro giây, ổ SSD SATA khoảng 0,5 đến 0,6 mili giây, còn ổ đĩa cơ nằm trong khoảng 2,9 đến 12 mili giây. Trên tải nhiều lệnh nhỏ ngẫu nhiên, đây mới là chỉ số quyết định cảm giác nhanh chập phát của máy.

Phiên bản giao thức và lịch sử phát triển

NVM Express là một hiệp hội phi lợi nhuận, công bố đặc tả lần 1.2 vào tháng 11 năm 2014, phiên bản 1.2.1 bổ sung quản lý nhiều hàng đợi, quản lý namespace và quản lý độ bền. Bản 1.3 ra mắt tháng 5 năm 2017, bản 1.3d thêm chia sẻ namespace và đặt ưu tiên namespace.

Bản 1.4 xuất hiện tháng 6 năm 2019 và bổ sung bốn nhóm tính năng: tính quyết định cho thao tác nhập xuất, bảo vệ ghi namespace, nhật ký sự kiện bền vững và lệnh xác minh. Đặc tả mới nhất hiện là phiên bản 2.4. Điểm đáng lưu ý là mọi nâng cấp đều nằm trong bộ điều khiển bên trong ổ, không đòi thay mainboard hay CPU.

Ổ đầu tiên dùng NVMe là Samsung XS1715 ra mắt tháng 7 năm 2013 với tốc độ đọc khoảng 3 GB/s, tức đã gần bằng trần của PCIe 3.0 ngay từ đầu.

Đọc kích thước M.2 và chọn ổ cho đúng

Ổ SSD NVMe kích thước 2230 với bộ điều khiển và chip nhớ NAND được hàn trực tiếp trên bo mạch

M.2 là khe cắm phổ biến cho ổ SSD. Quy ước đặt tên gồm bốn chữ số: hai chữ số đầu là chiều rộng tính bằng milimét, phần còn lại là chiều dài. Vì vậy 2230 nghĩa là 22×30 mm, 2242 là 22×42 mm và 2280 là 22×80 mm. Khe cắm dùng khóa M là dành riêng cho ổ NVMe, giúp tránh cắm nhầm ổ SATA vào nhầm khe.

Khi chọn ổ, cần kiểm tra ba điểm theo thứ tự:

  • Mainboard có hỗ trợ chuẩn PCIe mấy. Ở PCIe 3.0, một ổ thiết kế cho PCIe 4.0 vẫn chạy nhưng bị giới hạn theo băng thông của bus.
  • Dung lượng thực tế và chỉ số bền bỉu ghi TBW, tức số terabyte được ghi trước khi ổ hết tuổi thọ. Ví dụ Samsung 970 EVO bản 1 TB có TBW là 600, tương đương 600 vòng ghi xoá trên mỗi ô nhớ.
  • Loại NAND. Ổ dùng bộ nhớ đệm DRAM riêng sẽ giữ tốc độ ổn định khi ghi file lớn liên tục, còn ổ dùng bộ nhớ đệm của hệ thống là HMB sẽ dễ bị tụt tốc hơn khi bộ nhớ đệm bị chiếm dụng.

Ngoài ra hệ điều hành còn phải phát lệnh TRIM để báo cho ổ biết khối dữ liệu nào đã bị xoá, giúp mở khoá ô NAND cho lần ghi sau. Nhân Linux đã hỗ trợ TRIM từ phiên bản 2.6.33 và bổ sung hàng đợi TRIM không gián đoạn từ phiên bản 3.12; trong thế giới NVMe, lệnh tương ứng tên là UNMAP hay discard.

Tóm lại, mua SSD không còn chỉ là nhìn dung lượng và tốc độ tuần tự. Một ổ NVMe đúng chuẩn, gắn đúng khe, cấu hình đúng băng thông sẽ thay đổi cảm giác máy chạy nhiều hơn con số trên vỏ hộp.

Nguồn tham khảo: trang NVM Express trên Wikipedia, bảng băng thông PCI Express, chuẩn khe M.2, số liệu độ trễ và TBW của ổ thể rắn, trang đặc tả của hiệp hội NVM Express và bài đánh giá Samsung 990 Pro.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

eBPF là gì: cách chạy mã an toàn trong nhân Linux

eBPF là gì? là câu hỏi thường gặp khi bạn đọc tài liệu vận hành hệ thống Linux hiện đại. eBPF (extended Berkeley Packet Filter) là một công nghệ cho…

Xem thêm

NPU là gì: bộ xử lý AI chuyên dụng và cách đọc chỉ số TOPS

NPU là gì và vì sao con số TOPS trên hộp điện thoại ngày càng phóng đại. Neural Processing Unit là bộ xử lý chuyên dụng cho mô hình AI,…

Xem thêm

Gallium nitride GaN là gì: vì sao sạc nhanh nhỏ hơn silicon

Gallium nitride, viết tắt GaN, là một chất dẫn bán đồng nhất III-V có cấu trúc tinh thể Wurtzite và khe hở năng lượng khoảng 3,4 eV. Chính khe hở…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất