HDD

Hai thành phần cấu tạo quan trọng của HDD là đĩa từ có thể quay được, và một đầu đọc/ghi có thể di chuyển. Đĩa từ được chia ra thành các vòng tròn đồng tâm, gọi là track. Mỗi track lại được chia ra thành các ô nhỏ gọi là sector. Mỗi sector thường có kích thước khoảng 512 byte, và sector cũng là đơn vị đọc ghi nhỏ nhất. Điều đó có nghĩa là dù bạn chỉ cần đọc/ghi một vài byte thì hệ thống vẫn phải đọc toàn bộ 521 byte của sector đó. Để có thể đọc hoặc ghi một sector bất kỳ, yêu cầu sự di chuyển của đầu đọc đến track cần đọc, và đĩa từ quay để đưa sector đến vị trí đầu đọc.

HDD
Image from Wikipedia

  • A là một track
  • C là một sector

Hệ quả:

  1. Tốc độ đọc ghi bị phụ thuộc vào tốc độ quay của đĩa và tốc độ di chuyển của đầu đọc
  2. Truy cập tuần tự sẽ hiệu quả hơn truy cập ngẫu nhiên. ví dụ như khi bạn đọc hoặc ghi các sector liền nhau sẽ nhanh hơn các sector ở các vị trí ngẫu nhiên vì có thể tiết kiệm thời gian di chuyển của đĩa từ và đầu đọc.
    • Phân mảnh dữ liệu (fragmentation) là khi những dữ liệu liên quan bị rải rác ở các track và các sector không liền kề, khiến cho việc truy cập dữ liệu trở nên châm hơn.
    • Chống phân mảnh dữ liệu là quá trình sắp xếp lại các sector sao cho những sector có dữ liệu liên quan sẽ ở gần nhau hơn.

SSD

SSD dùng bộ nhớ flash (NAND) để lưu trữ thông tin. SSD được chia thành các block, mỗi block lại được chia nhỏ thành các page. Mỗi block có khoảng 128-256 page, mỗi page có kích thước khoảng 4KB-8KB. Page là đơn vị nhỏ nhất để đọc và ghi, block là đơn vị nhỏ nhất để xóa.

SSD

Đặc điểm quan trọng:

  • SSD không hỗ trợ ghi đè (override) lên page đang có dữ liệu. Nếu bạn mốn cập nhật dữ liệu của một page, thì cần tìm một page sạch khác và ghi dữ liệu được cập nhật lên đó. Page cũ sẽ bị đánh dấu là bẩn và chờ được xóa (làm sạch).
  • SSD chỉ có thể xóa toàn bộ page trong một block, không thể xóa riêng từng page.
  • Truy cập tuần tự vẫn nhanh hơn ngẫu nhiên một chút nhờ tối ưu ở controller

Hệ quả:

  • Wear leveling: Mỗi page sẽ bị giới hạn số chu kỳ xóa/ghi, vượt qua giới hạn, page có thể bị hỏng và không thể lưu trữ thông tin được nữa. Do đó cần dàn đều các lệnh ghi lên các page để tránh một vài page bị hỏng sớm.
  • Garbage collection: Vì chỉ có thể ghi dữ liệu vào các page sạch nên SSD cần garbage collector để xóa dữ liệu trên các page bẩn, chuẩn bị page sạch cho các lệnh ghi tiếp theo. SSD cần chọn ra một block có tỉ lệ page bẩn cao, đi chuyển các page đang có dữ liệu hợp lệ sang một block khác, sau đó tiến hành xóa toàn bộ page trong block đã được chọn.
  • Write amplification: Là khi số lượng lệnh ghi trên SSD nhiều hơn so với số lượng người dùng yêu cầu. Thường là hệ quả của garbage collector.
  • Write coalescing: SSD batching nhiều lệnh write nhỏ và viết vào các page liên tiếp nhau, giúp giảm erase/write cycle. SSD có bộ nhớ volatile giống ram máy tính, và có pin dự phòng trong trường hợp mất điện.

So sánh

Tiêu chíHDD (Ổ đĩa quay)SSD (Ổ đĩa flash)
Cơ chế lưu trữCơ học: đầu từ đọc đĩa quayĐiện tử: ô nhớ flash
Tốc độChậm (phụ thuộc tốc độ quay và seek time)Nhanh (gần như tức thì, không cơ khí)
Latency đọc ghiCao, nhất là randomThấp
Durability (độ bền ghi)CaoCó giới hạn số lần ghi trên mỗi cell
OverwriteGhi đè trực tiếp lên chỗ cũ đượcKhông thể ghi đè trực tiếp (phải xóa trước)
Write AmplificationÍt quan tâmVấn đề lớn: ghi nhiều hơn yêu cầu
Garbage CollectionKhông cầnCần gom lại block rác và dọn dẹp định kỳ
Wear levelingKhông cầnCần dàn đều ghi để tránh “chết” sớm block