NVMe ssd: Tại sao viết 4k nhanh hơn đọc?


51

Tôi có ổ SSD Samsung 960 Pro 512 GB trên NVMe với PCIe Gen.3x4 đang chạy. Tôi sử dụng Trình điều khiển Samsung NVMe 2.0.0.1607. SSD đang chạy tốt. Tuy nhiên, tôi không hiểu tại sao cách viết 4k lại nhanh hơn cách đọc 4k. Tôi đang sử dụng AS Điểm chuẩn:

nhập mô tả hình ảnh ở đây

Đó là một yếu tố của 3! Có điều gì đó không đúng (với hệ thống của tôi hoặc AS Điểm chuẩn) hoặc điều này là bình thường?


Và vẫn còn nhanh hơn nhiều so với một ổ cứng quay!
Zan Lynx

Câu trả lời:


76

4k lượt đọc sẽ là điều khó nhất mà ổ đĩa có thể làm. Chúng nằm trong số các kích thước khối nhỏ nhất mà ổ đĩa sẽ có thể xử lý và không có cách nào để ổ đĩa tải trước một lượng lớn dữ liệu, thực tế chúng có thể khá kém hiệu quả nếu logic tải trước ổ đĩa có ý định đọc bất cứ thứ gì lớn hơn 4kb.

Số lần đọc ổ đĩa "bình thường" có thể lớn hơn 4kb vì có rất ít tệp nhỏ và thậm chí tệp trang có thể được đọc thành nhiều phần vì nó sẽ là số lẻ đối với chương trình "chỉ" 4KB của bộ nhớ phân trang. Điều này có nghĩa là bất kỳ tải trước nào mà ổ đĩa cố gắng thực hiện sẽ xử phạt thông lượng ổ đĩa.

Việc đọc 4K có thể đi qua bộ đệm ổ đĩa, nhưng phần "ngẫu nhiên" của thử nghiệm khiến chúng hoàn toàn không thể đoán trước. Bộ điều khiển sẽ không biết khi nào ổ đĩa có thể cần đọc "lớn" thông thường hơn.

Mặt khác, ghi 4K có thể được đệm, xếp hàng và viết ra một cách tuần tự một cách hiệu quả. Bộ đệm ổ đĩa có thể thực hiện rất nhiều công việc bắt và ghi mà nó được thiết kế và bộ cấp độ hao mòn thậm chí có thể phân bổ tất cả các ghi 4K đó vào cùng một khối xóa ổ đĩa, đôi khi chuyển thành ghi "ngẫu nhiên" 4K vào một cái gì đó gần hơn với một bài viết tuần tự.

Trong thực tế tôi nghi ngờ rằng đây là những gì đang xảy ra trong phần ghi "4K-64Thrd", "64-Thrd" rõ ràng đang sử dụng độ sâu hàng đợi lớn , do đó báo hiệu cho ổ đĩa rằng nó có một lượng lớn dữ liệu để đọc hoặc ghi . Điều này kích hoạt rất nhiều cụm ghi và do đó tiếp cận tốc độ ghi tuần tự của ổ đĩa. Vẫn còn một chi phí để thực hiện ghi 4K, nhưng bây giờ bạn đã bộc lộ đầy đủ tiềm năng của bộ đệm. Trong phiên bản Đọc của bộ điều khiển ổ đĩa, giờ đây nhận ra rằng nó đang chịu tải rất nặng, dừng tải trước dữ liệu, có thể tránh bộ đệm và thay vào đó chuyển sang chế độ đọc "thô", một lần nữa tiếp cận tốc độ đọc tuần tự.

Về cơ bản, bộ điều khiển ổ đĩa có thể làm một cái gì đó để ghi 4K hiệu quả hơn, đặc biệt là nếu một cụm trong số chúng đến vào cùng thời điểm, trong khi nó không thể làm gì để làm cho một lần đọc 4K hiệu quả hơn, đặc biệt là nếu nó đang cố gắng tối ưu hóa dataflow bằng cách tải trước dữ liệu vào bộ đệm.


5
Không phải là một phần của câu trả lời, nhưng tôi nghi ngờ rằng "đọc 4K" (phiên bản không phải thứ 64) thực sự phơi bày kích thước khối đọc mặc định của ổ đĩa là 32K hoặc 64K. Giá trị này sẽ là 2600/50 = 52 (64K với một số chi phí + số đọc 4K gốc) hoặc 1200/50 = 24 (32K với một số chi phí trên + số đọc 4K giảm).
Mokubai

16
Câu trả lời tổng thể tốt, nhưng tôi không tin "có rất ít tệp nhỏ như vậy". Trong thực tế, tôi nghi ngờ rằng trên hầu hết các hệ thống, phần lớn các tệp là 4k hoặc nhỏ hơn. Họ không chiếm phần lớn không gian , nhưng đó là một vấn đề khác.
hobbs

3
Câu trả lời đơn giản nhất có lẽ là đây: Nếu bạn thực hiện từng lần một, bạn hoàn toàn không thể chồng chéo các lần đọc vì bạn thậm chí không tìm ra khối đọc tiếp theo là gì cho đến khi bạn trả lại dữ liệu từ lần đọc trước. Nhưng bạn có thể chồng chéo hoàn toàn ghi vì bạn có thể nhận được tất cả dữ liệu cho lần ghi tiếp theo trong khi bạn vẫn đang làm việc trên lần ghi trước.
David Schwartz

2
@hobbs Nếu bạn lấy ví dụ NTFS, kích thước cụm mặc định là 4K (hoặc bội số của nó) có nghĩa là chính hệ thống tệp NTFS hoạt động trong các khối 4K ngay cả khi các tệp và / hoặc dữ liệu meta nhỏ hơn. Vì vậy, các tập tin nhỏ hơn không làm cho bất kỳ sự khác biệt. Đối với tất cả các mục đích và mục đích, một hệ thống Windows đọc / ghi trong các khối 4K hoặc bội số của điều đó.
Tonny

1
@hobbs: Với NTFS, bạn có thể được đọc các tệp nhỏ như vậy miễn phí (!). Các tệp nhỏ được lưu trữ trong mục nhập thư mục, liền kề với tên tệp. Bạn phải đạt kích thước tệp khá cụ thể gần với 4KB để có tệp 4KB thực tế trên đĩa.
MSalters

16

Các câu trả lời khác đã giải thích tại sao có thể viết nhanh hơn đọc; Tôi muốn thêm rằng đối với ổ đĩa này, điều này là hoàn toàn bình thường, vì nó được xác nhận bởi điểm chuẩn mà bạn có thể tìm thấy trong các đánh giá.

Đánh giá của ArsTecnica

ArsTechnica đã xem xét ổ đĩa, cả phiên bản của bạn (512 GB) và phiên bản 2 TB:

ArsTechica (Biểu đồ này không hiển thị ngay lập tức trong bài đánh giá, đây là biểu đồ thứ 5 trong bộ sưu tập đầu tiên, bạn phải nhấp vào nó)

Hiệu suất của 2 mô hình này rất giống nhau và số lượng của chúng trông giống như của bạn: ổ đĩa có thể đọc với tốc độ 37 MB / s và ghi ở tốc độ 151 MB / s.

Đánh giá của AnandTech

AnandTech cũng đã xem xét ổ đĩa: họ đã sử dụng mô hình 2TB, tính trung bình các kết quả kiểm tra với độ sâu hàng đợi là 1, 2 và 4. Đây là các biểu đồ:

AnandTech 4K đọc AnandTech 4K viết

Ổ đĩa đọc với tốc độ 137 MB / s và ghi ở mức 437 MB / s. Con số cao hơn nhiều so với của bạn, nhưng có lẽ là do độ sâu hàng đợi cao hơn. Dù sao tốc độ ghi là 3 lần tốc độ đọc, như trong trường hợp của bạn.

Đánh giá thế giới PC

Thêm một đánh giá nữa, bởi PC World : họ đã thử nghiệm phiên bản 1 TB và kết quả cho 4K là 30 MB / giây để đọc và 155 MB / giây để ghi: Đồ thị thế giới PC Tốc độ ghi phù hợp với bạn, nhưng ở đây ổ đĩa là thậm chí chậm hơn trong việc đọc. Kết quả là tỷ lệ là năm một, không phải ba với một.

Phần kết luận

Các đánh giá xác nhận rằng đối với ổ đĩa này, thông thường tốc độ ghi cho 4K ngẫu nhiên nhanh hơn nhiều so với tốc độ đọc: tùy thuộc vào thử nghiệm, thậm chí có thể nhanh hơn 5 lần.

Ổ đĩa của bạn là tốt. Không có lý do để tin rằng nó bị lỗi hoặc hệ thống của bạn có vấn đề.


8

Bộ điều khiển SSD lưu trữ ghi vào NVRAM trên bo mạch và chuyển nó sang phương tiện flash vào thời điểm thích hợp. Do đó, độ trễ ghi là độ trễ truy cập bộ đệm, thường là 20us. Ngược lại, các bài đọc được phục vụ trên phương tiện truyền thông, với thời gian truy cập tốt nhất là 120-150us.


1

Mở rộng câu trả lời của Andrey, bạn cần xem xét chi phí liên quan trước khi SSD có thể báo hiệu cho máy tính biết rằng hoạt động đã hoàn tất.

Để ghi, dữ liệu phải được ghi vào bộ đệm RAM bên trong. Sau đó, nó sẽ được ghi vào bộ nhớ flash, cùng với các khối 4k và siêu dữ liệu khác cần thiết để kiểm tra, sửa lỗi và định vị nó.

Để đọc, SSD trước tiên phải xác định vị trí dữ liệu. Vị trí mà máy tính muốn đọc được gọi là địa chỉ logic và không có mối quan hệ trực tiếp với vị trí vật lý của dữ liệu trong bộ nhớ flash. SSD chuyển địa chỉ logic thành địa chỉ vật lý, dựa trên hình dạng của bộ nhớ flash (cách sắp xếp các ô), ánh xạ lại khối xấu, cân bằng hao mòn và nhiều yếu tố khác. Sau đó, nó phải đợi bất kỳ thao tác nào khác kết thúc trước khi lấy dữ liệu từ flash, sau đó kiểm tra nó và nếu cần đọc lại và áp dụng sửa lỗi, thậm chí có thể viết lại toàn bộ khối ở một nơi khác.

Mặc dù tổng thời gian thực hiện bởi thao tác ghi có thể dài hơn thao tác đọc thông thường, thời gian dành cho SSD để báo cáo rằng hoạt động đã hoàn thành đến mức có thể xử lý các lệnh tiếp theo thấp hơn. Với các khối lớn, chi phí không phải là yếu tố giới hạn, nhưng với nhiều khối nhỏ, nó bắt đầu hạn chế tốc độ đọc / ghi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.