SSD : Mọi điều bạn muốn biết – Phần 4

Cấu trúc điều khiển – Sơ đồ khối điều khiển

 

Trong phần này sẽ đề cập tới những khối chính của mạch điều khiển SSD chung và kết nối của nó tới những chip nhớ Flash NAND . Chức năng điều khiển khác nhau tùy theo những kiểu sản phẩm mà nó thiết kế .

Phần điều khiển thẻ nhớ SD đơn giản được thiết kế để làm cho giá cả hợp lí nhất và trong một số trường hợp lại có hiệu suất làm việc cao . Với một số loại không cần tới công cụ mã hóa và giải mã . Nhưng trong một số trường hợp khác như những SSD dùng cho quân đội thì phần mã hóa và giải mã chắc chắn phải có . Một số ứng dụng lại cần thông tin dữ liệu SMART để dự đoán khả năng hỏng hóc trong tương lai để có thể ưu tiên thay thế tránh trường hợp hỏng hóc không dự đoán được .

\"\"

Hình minh họa trên cho thấy những khối cơ bản của SSD . Phần dưới sẽ mô tả tóm tắt cho từng khối .

Host Interface

Host Interface của phần điều khiển là thiết kế đặc trưng cho một loại giao diện nào đó . Có một số giao diện được làm cho những hệ thống  khác nhau và những yêu cầu khác nhau . Tuy nhiên hầu hết những giao diện thông dụng là SATA , SD , USB , PATA/IDE và PCIe .

SMART (Self-Monitoring, Analysis and Reporting Technology)

Chức năng SMART , có sẵn trong một số điều khiển , theo dõi và ghi lại những dữ liệu theo nhiều thuộc tính của SSD và bộ nhớ . Ví dụ là khả năng theo dõi những chu kì Ghi/Xóa trong SSD để bảo đảm chắc chắn rằng SSD vẫn đang hoạt động tốt .

Wear Leveling

Thuật toán Wear Leveling của phần điều khiển theo dõi và đưa ra những quá trình Ghi một cách hài hòa tới những khối NAND vật lí khác nhau . Do mỗi khối NAND có số lần giới hạn chu kì Ghi/Xóa , nếu như chỉ có một khối NAND bị Ghi liên tục điều đó sẽ khiến cho khối đó nhanh chóng bị hỏng . Vì thế nhờ có Wear Leveling sẽ tránh trường hợp một khối nào đó bị Ghi liên tục và thay thế để phân phối Ghi/Xóa tới một khối NAND khác .

Read & Program Disturb

Khi độ rộng của những đường tín hiệu ngày càng nhỏ lại sẽ làm ảnh hưởng tới việc duy trì dữ liệu của những ô nhớ NAND . Read & Program Disturb diễn ra khi những ô nhớ được Đọc hoặc Ghi để không làm thay đổi những giá trị đang được lưu trữ ở những ô nhớ bên cạnh . Phần điều khiển cần thuật toán và trong một số trường hợp cần tới mạch điện tử để tránh những tình hướng như vậy .

Encrypt & Decrypt Engine

Với những ứng dụng yêu cầu bảo đảm an ninh cao , cần phải có bộ phận phần cứng trong mạch điều khiển để làm nhiệm vụ mã hóa và giải mã . Công cụ mã hóa thông thường được thực hiện bởi phần cứng để bảo đảm tốc độ xử lí được nhanh . Phương pháp mã hóa thông dụng hiện nay cho những SSD là AES-256 .

Buffer/Cache

Những mạch điều khiển hiện nay đều dùng bộ nhớ Cache SRAM/DRAM tốc độ cao để làm bộ nhớ đệm trong quá trình Đọc hoặc Ghi dữ liệu của SSD .

CPU/RISC Processor:

Tâm điểm của mọi SSD là lõi xử lí chính . Nó là bộ vi xử lí  CPU hoặc RISC . Kích thước và hiệu suất của bộ xử lí CPU/RISC xác định khả năng bộ điều khiển có thể làm được .

ECC Engine

Error Checking & Correction là phần quan trọng của SSD ngày nay . ECC sẽ có mặt một số lượng Bit nào đó trong mỗi khối dữ liệu để bảo đảm những khối dữ liệu này luôn cung cấp dữ liệu một cách chính xác trong quá trình Truyền / Gửi .

Write Abort

Write Abort thực hiện khi nguồn cung cấp tới SSD bị mất trong khi đang Ghi dữ liệu tới ô nhớ Flash NAND . Do không có những pin hoặc Tụ điện lớn phía sau Cache nên dữ liệu này khi truyền đi sẽ bị mất . Nhiệm vụ quan trọng nhất của Write Abort bảo đảm trong tình huống này là dữ liệu nội bộ và Firmware của SSD không bị ngắt .

Mạch điện Write Abort có trong những sản phẩm SSD công nghiệp .

Misc I/O

Những tính năng đơn giản như những chân Chip Select cho những bộ phận NAND được điều khiển bởi một số chân Vào / Ra . Cũng có một số chức năng Vào / Ra cần thiết cho lập trình và sản xuất ban đầu .

NAND Memory Interface

Giao diện bộ nhớ NAND đã được đề cập trong những phần trước với những Channel và Bank . Phụ thuộc vào phần điều khiển mà có thể có 1- hoặc 10-channel . Mỗi channel lại có một hoặc nhiều chip NAND .

Defect Management – Quản lí khiếm khuyết

Mỗi bộ điều khiển cần có phương pháp hành xử với những khối bộ nhớ xấu và những khiếm khuyết mới . Tại một thời điểm , một khối NAND không dùng được nữa thì phần điều khiển của SSD phải đưa ra cách thức giải quyết . Trong một số trường hợp một khối riêng biệt được thay thế cho khối bị lỗi . Mỗi điều khiển sẽ có phương pháp để hành xử với những khối bị lỗi riêng .

Những chức năng điều khiển – Wear Leveling

Trong phần này chúng ta xem xét cách phần điều khiển SSD dùng thuật toán Wear Leveling để bù đắp lượng hạn chế số chu kì Ghi/Xóa trong những khối NAND .

Điều khiển SSD nhận mệnh lệnh từ hệ thống chủ để nói cho nó biết ở đâu để Đọc hoặc Ghi đoạn dữ liệu . Để đơn giản hóa bài này về vấn đề Wear Leveling chúng ta sẽ có hai giả định : Một là nối đoạn dữ liệu có dung lượng 4KB ; Hai là những Page NAND cũng là 4KB . Thực tế những kích thước của dữ liệu và của Page khác nhau phụ thuộc và hệ thống  chủ và bộ nhớ   NAND dùng .

Hệ thống chủ (Host) cung cấp LBA (Logical Block Address) của dữ liệu nó muốn Đọc hoặc Ghi cho phần điều khiển SSD .

Wear Leveling và ghi tuần tự (Sequential Writing) tới bộ nhớ NAND

\"\"

Hình trên cho thấy một khối NAND 256KB bao gồm có 64 Page và mỗi Page có dung lượng 4KB . Nếu hệ thống chủ Ghi 256KB dữ liệu trong những LBA tuần tự và điều khiển SSD lưu trữ dữ liệu này một cách tuần tự - bắt đầu từ Page 4K đầu tiên và kết thúc là lại khối thứ 64 . Như thế được tính là 1 chu kì “độ bền” ( Endurance Cycle ) đã được dùng cho toàn bộ khối .

Trước khi tiếp tục chúng ta cần làm rõ hai điều :

  • Chu kì “độ bền” (Endurance Cycle) chỉ xảy ra khi xảy ra hoạt động Xóa ô nhớ , do đó Ghi đầu tiên thực chất không phải là một chu kì “độ bền”.
  • Đọc ô nhớ NAND không ảnh hưởng tới những chu kì độ bền của ô nhớ NAND .

Wear Leveling và ghi không tuần tự (Non-Sequential Writing) tới bộ nhớ NAND

\"\"

Tuy nhiên trong thực tế hoạt động việc sử dụng SSD để lưu trữ dữ liệu một cách tuần tự ít khi xảy ra .

Hình ảnh Không tuần tự (Non-Sequential) trên cho thấy tình huống tệ hại nhất ở đó dữ liệu được Ghi liên tục cho 2 Page 4K đầu tiên . Nếu điều khiển SSD chỉ tiếp tục Ghi dữ liệu này tới những Page vật lí NAND đó sẽ khiến cho chu kì “độ bền” của những ô nhớ này bị cạn kiệt .

Vậy Wear Leaving làm những gì ?

Thuật toán Wear Leveling trong điều khiển SSD cố gắng phân phối đồng đều để hệ thống  host Ghi toàn bộ SSD chứ không  Ghi tập trung vào một khối NAND nào đó .

Có nhiều phương án khác nhau được dùng bởi những nhà thiết kế khác nhau , nhưng tất cả đều dựa trên một số điểm chung .

\"\"

Như hình trên , có Địa chỉ khối Logic LBA (Logical Block Address) thông qua một Bảng trung gian (Translation Table ) để chuyển đổi thành Địa chỉ khối vật lí ( Physical Block ) . Ở Bảng trung gian cho biết những vị trí vật lí Page có Chu kì độ bền thấp nhất , tức là bị Ghi/Xóa ít nhất . Bộ điều khiển theo luôn luôn theo dõi việc chuyển từ Logical thành Physical trong bảng .

Yêu cầu Ghi cùng LBA thông thường không  lưu trữ trong cùng vị trí vật lí của Page NAND để tránh việc Ghi liên tục tới cùng một khối nhớ .

Một vấn đề khác xảy ra đó là khi Dữ liệu tĩnh trên SSD không bao giờ di chuyển , như hệ điều hành và các ứng dụng cài đặt . Nó được lưu trữ ngay lập tức trên SSD . Trong những tình huống như vậy hầu hết những điều khiển hiện đại sẽ tự động chuyển dữ liệu tĩnh này tới những vị trí Page NAND khác để có thể tận dụng những Chu kì “độ bền” của những ô nhớ NAND ít sử dụng .

Wear Leveling không giải quyết tất cả nhiệm vụ của SSD nhưng nó đóng vai trò quan trọng để cho phép SSD bền hơn và tin cậy cao hơn để khắc phục nhược điểm trong giới hạn Chu kì “bền vững” trong bộ nhớ NAND .