Hướng dẫn Ngọa Long Private

Chủ Nhật, 29 tháng 5, 2016

khám phá cấu trúc và cách thức hoạt động của SSD

SSD càng ngày càng thông thường không chỉ do ưu thế vượt trội về vận tốc truy xuất dữ liệu, tài năng chống sốc tốt mà giá bán cũng giảm đáng kể trong thời gian gần đây. bên cạnh đó bên cạnh những ưu điểm, SSD vẫn có một số hạn chế do một số đặc tính của flash NAND. cho nên, việc hiểu rõ hơn về chúng sẽ giúp bạn tối ưu tốc độ và độ bền trong quá trình sử dụng. Hãy cùng thu thuat may tinh tìm hiểu về cấu tạo của ổ SSD để biết được các dấu hiệu cảnh báo ổ SSD bị hỏng trong bài viết này nhé!

Cấu trúc flash NAND



Như mình từng san sẻ thì hiện có ba công nghệ flash NAND đang sử dụng thông thường trong SSD là SLC (single-level cell), MLC (multi-level cell) và TLC (triple-level cell). Sự không giống nhau giữa các công nghệ này là mật độ bit dữ liệu chứa trong chip nhớ, độ trễ và độ bền dựa theo chu kỳ ghi xóa ( P/E cycle). Và điều này tác động trực tiếp đến hiệu năng cục bộ của SSD.

Cấu trúc flash NAND được chia theo mô hình lưới, cơ bản là cell (ô nhớ), page (trang) và block (khối). Nhiều cell hợp thành một page, kích tấc thường từ 2 - 16KB. gần giống nhiều page sẽ phân thành một block, gồm 128 đến 256 page với kích tấc từ 256KB - 4MB. Trong xu hướng hiện nay, nhiều nhà tạo ra thường chọn cách mở rộng kích tấc page và block để tăng vận tốc ghi của SSD.

Một trong những hạn chế của SSD là tốc độ đọc và ghi trên cell trống rất nhanh nhưng lại giảm đáng kể trong các lần ghi dữ liệu tiếp theo. nguyên cớ nằm ở chế độ hoạt động của SSD và cấu trúc flash NAND. Khác với ổ cứng truyền thống, SSD chỉ có thể đọc, ghi dữ liệu theo page nhưng khi xóa dữ liệu phải theo từng block. Thêm một vấn đề nữa của flash NAND là không cho phép ghi đè dữ liệu trực tiếp lên cell cũ mà phải qua bước xóa dữ liệu đầu tiên.

Tham khảo thêm cấu trúc và chế độ hoạt động của flash NAND trong bài mày mò SSD - Flash NAND và Controller quyết định hiệu năng.

Garbage collection

Khi nhận được lệnh xóa dữ liệu, controller dễ chơi chỉ khắc ghi các page đó chứ không thực thụ xóa chúng cho đến khi cần sử dụng lại. thành thử trong một block có thể tồn tại các page đang chứa dữ liệu lẫn một số page ở trạng thái chờ xóa.

Trường hợp các cell trống đã dùng gần hết thì SSD sẽ quét toàn thể block để tìm các cell được lưu lại xóa. Controller sẽ chép dữ liệu sang một block mới và xóa tổng thể block cũ, sẵn sàng cho một chu kỳ sử dụng mới. Quá trình này được gọi là garbage collection (tạm dịch thu lượm rác) và nó sẽ tự động chạy ngầm bên dưới vào những lúc rảnh để tránh thúc đẩy đến hiệu năng SSD.

Hình minh họa trên giúp bạn hiểu rõ hơn về garbage collection. Cụ thể hình 1 cho thấy dữ liệu được ghi vào 4 page trước tiên của block X là a, b, c và d. Sau đó thêm 4 page mới được ghi vào là e, f, g và h song song dữ liệu 4 page đầu tiên có thay đổi nên được ghi mới ở các page tiếp theo a’, b’, c’ và d’. Tất nhiên các page cũ sẽ không dùng nữa nên được đánh dấu “invalid” và không thể sử dụng cho đến khi toàn bộ block X được tẩy xóa.

Trong hình 3, dữ liệu hiện hành sẽ được chép sang block Y và xóa toàn thể dữ liệu trên block cũ. Bước cuối cùng được gọi là garbage collection và giúp SSD có thể thực thi ngay tức thì tác vụ ghi trong lần dùng tới mà không phải chờ đợi bước xóa dữ liệu trước đó.

TRIM



Trước khi mày mò lệnh TRIM có chức năng như thế nào, chúng ta hãy cùng xem lại chế độ HDD truyền thống xóa dữ liệu. Khi nhận lệnh xóa, hệ điều hành chỉ dễ chơi là đổi mới thông báo chỉ mục của tập tin hoặc folder chứ không thực sự xóa chúng cho đến khi bạn ghi đè dữ liệu mới. Chính nhờ đặc điểm này mà các dụng cụ bình phục tập tin có thể đọc lại được dữ liệu trong trường hợp bạn xóa nhầm.

Với SSD, khi bạn xóa một tập tin hoặc thư mục phê duyệt TRIM thì dữ liệu trong các page tương ứng cũng được đánh dấu “invalid”. Controller sẽ sao chép tổng thể nội dung các page trong cùng một block vào bộ nhớ đệm (cache) và đào thải các dữ liệu cần xóa dựa theo thông báo TRIM cung ứng. Phần nội dung còn lại sẽ được chép trả loại block sau khi đã loại trừ các page cần thiết. Điều này sẽ làm giảm số lần ghi dữ liệu lên các ô nhớ, tốc độ ghi nhanh hơn và tăng tuổi thọ SSD.

để ý kể từ Windows 7 trở về sau, hệ điều hành sẽ tự động kích hoạt tính năng TRIM. Bạn có thể đánh giá điều này bằng cách gõ lệnh cmd trong Start Menu và khởi chạy Command Prompt với quyền Admin. Trong cửa sổ mới hình thành, nhập lệnhfsutil behavior query DisableDeleteNotify và nếu kết quả trả về là DisableDeleteNotify – 0, nghĩa là TRIM đang hoạt động. Nếu không, bạn có thể kích hoạt bằng lệnh fsutil behavior set disabledeletenotify 0.

Write Amplification

Khái niệm Write Amplification để chỉ sự chênh lệch giữa lượng dữ liệu ghi trên các page bộ nhớ vật lý so với dữ liệu cần ghi thực thụ. Và trong một số trường hợp, SSD có thể dùng đến 4MB dung lượng NAND flash để lưu trữ một tập tin văn bản 4KB. Điều này xảy ra do chế độ hoạt động đặc biệt, SSD chỉ có thể ghi dữ liệu theo page nhưng xóa dữ liệu phải theo từng block.

Để dễ mường tượng, hãy nhìn vào tỉ dụ sau. Khi bạn đổi mới một tập tin văn bản nhiều lần thì địa điểm các block chứa dữ liệu sẽ được cập nhật và ghi nội dung mới. Tùy thuộc kích thước và số page còn trống trong mỗi block mà dung lượng sau cùng của một file gốc 4KB sau khi cập nhật có thể tăng đến 4MB.

May mắn là quá trình gagbage collection và lệnh TRIM sẽ giúp giảm thiểu liên quan của hiện tượng write amplification, giữ các block không bị phân mảnh, tăng vận tốc truy xuất dữ liệu và giảm thiểu hoang phí dung lượng lưu trữ của SSD.

Wear leveling

Wear leveling là một thuật toán đặc biệt giúp tăng tuổi thọ và độ bình ổn của SSD bằng cách phân bổ việc ghi dữ liệu lên toàn thể transistor của NAND flash một cách đồng đều. Điều này đảm bảo mức độ hao mòn của tất cả là như nhau, sẽ tránh một số page bị ghi quá nhiều lần

Như vậy về mặt lý thuyết, SSD có dung lượng càng lớn thì có tuổi thọ càng cao vì tất cả transistor đều bị ghi qua một lượt trước khi mở màn một chu kỳ ghi xóa mới.

dù rằng wear leveling mang đến lợi ích trong quá trình sử dụng nhưng đồng thời làm tăng hiện tượng write amplification. Để phân bổ việc ghi ra đều khắp các page của SSD, đôi khi wear leveling cần phải ghi và xóa một số block nào đó dù rằng nội dung lưu trữ không thay đổi.

Không có nhận xét nào:

Đăng nhận xét