Thẻ SD

Secure Digital, viết tắt chính thức là SD, là định dạng thẻ nhớ bộ nhớ không bay hơi độc quyền được phát triển bởi SD Association (tạm dịch: Hiệp hội Thẻ SD, viết tắt: SDA) để sử dụng trong các thiết bị di động.
Các công ty SanDisk, Panasonic (Matsushita Electric) và Toshiba đã cùng nhau đưa ra một tiêu chuẩn mới cho thẻ nhớ vào tháng 8 năm 1999. Được gọi là thẻ nhớ SD, tiêu chuẩn này là một bước tiến so với thẻ nhớ MultiMediaCards (MMC) trước đó. Thẻ nhớ SD đã trở thành một tiêu chuẩn phổ biến trong ngành công nghiệp. Ba công ty này đã thành lập một công ty có tên là SD-3C, LLC, nhằm cấp phép và bảo vệ quyền sở hữu trí tuệ liên quan đến thẻ nhớ SD và các sản phẩm liên quan khác như máy chủ SD.
Sau đó, các công ty đã thành lập Hiệp hội SD (SD Association - SDA) vào tháng 1 năm 2000 nhằm thúc đẩy và đề xuất các tiêu chuẩn cho Thẻ SD. Đây là một tổ chức phi lợi nhuận có khoảng 1.000 công ty thành viên. Hiệp hội này sử dụng một số logo được đăng ký nhãn hiệu, thuộc sở hữu và cấp phép bởi SD-3C, nhằm đảm bảo tuân thủ các thông số kỹ thuật của Thẻ SD và đảm bảo khả năng tương thích cho người dùng.
Lịch sử.
Năm 1999, SanDisk, Matsushita và Toshiba đã đồng ý phát triển và tiếp thị Thẻ nhớ kỹ thuật số bảo mật (SD). Thẻ được lấy từ MultiMediaCard (MMC) và cung cấp quản lý quyền kỹ thuật số dựa trên tiêu chuẩn Sáng kiến âm nhạc kỹ thuật số bảo mật (SDMI) và theo thời gian, mật độ bộ nhớ cao.
Nó được thiết kế để cạnh tranh với Memory Stick, một sản phẩm DRM mà Sony đã phát hành năm trước. Các nhà phát triển dự đoán rằng DRM sẽ được sử dụng rộng rãi bởi các nhà cung cấp âm nhạc do những lo ngại liên quan đến vi phạm bản quyền.
Dung lượng lưu trữ và khả năng tương thích.
Mỗi thẻ SD cho phép thiết bị chủ biết được dung lượng lưu trữ mà thẻ có và các thông số kỹ thuật của từng loại thẻ SD đảm bảo rằng thiết bị chủ chỉ nhận được dung lượng tối đa mà thẻ báo cáo.
Tuy nhiên, khi phiên bản 2.0 (SDHC) hoàn thành vào tháng 6 năm 2006, nhà sản xuất đã sáng tạo ra các thẻ SD dung lượng 2 GB và 4 GB bằng cách tuân theo Phiên bản 1.01 hoặc thông qua cách đọc sáng tạo Phiên bản 1.00. Kết quả là, một số thiết bị chủ không hoạt động chính xác với các thẻ này.
Thẻ SDSC trên 1 GB.
Thiết bị chủ có thể yêu cầu từ bất kỳ thẻ SD nào một chuỗi nhận dạng 128 bit được gọi là Dữ liệu đặc biệt của thẻ hoặc CSD. Trong thẻ SD có dung lượng tiêu chuẩn (SDSC), 12 bit được sử dụng để xác định số cụm bộ nhớ (từ 1 đến 4.096), và 3 bit được sử dụng để xác định số khối trên mỗi cụm (có thể được giải mã thành 4, 8, 16, 32, 64, 128, 256 hoặc 512 khối mỗi cụm). Thiết bị chủ sẽ sử dụng các số liệu này, kết hợp với số byte trên mỗi khối, để xác định dung lượng của thẻ tính bằng byte.
Trong phiên bản SD 1.00, giả sử mỗi khối có kích thước là 512 byte. Điều này cho phép thẻ SDSC có dung lượng tối đa là 4.096 cụm bộ nhớ × 512 khối trên mỗi cụm × 512 byte/khối = 1 GB. Điều này đảm bảo rằng không có sự không tương thích đã biết xảy ra. Phiên bản 1.01 cho phép thẻ SDSC sử dụng một trường 4 bit để biểu thị kích thước của mỗi khối là 1.024 hoặc 2.048 byte. Điều này đã cho phép sử dụng các thẻ có dung lượng 2 GB và 4 GB. Ví dụ, có thẻ SD Transcend dung lượng 4 GB và thẻ SD Memorette dung lượng 4 GB được hỗ trợ nhờ tính năng này.
Do đó, ban đầu các thiết bị lưu trữ SDSC giả định rằng mỗi khối có kích thước 512 byte và không hỗ trợ hoàn toàn việc sử dụng thẻ có dung lượng 2 GB hoặc 4 GB. Trong một số trường hợp, thiết bị chủ có thể chỉ có thể đọc dữ liệu trong phạm vi 1 GB đầu tiên của thẻ. Việc thành công của việc đọc dữ liệu trong phạm vi này phụ thuộc vào phiên bản phần mềm trình điều khiển được sử dụng. Ngoài ra, không phải tất cả các thiết bị chủ đều hỗ trợ thẻ SDSC 4 GB do thông số kỹ thuật giới hạn dung lượng tối đa của thẻ SDSC là 2 GB.
Tính toán dung lượng lưu trữ.
Định dạng của thanh ghi Dữ liệu dành riêng cho thẻ (CSD) đã thay đổi giữa phiên bản 1 (SDSC) và phiên bản 2.0 (xác định SDHC và SDXC).
Version 1.
Trong phiên bản 1 của thông số kỹ thuật SD, dung lượng lên tới 2 GB được tính bằng cách kết hợp các trường trong thanh ghi Dữ liệu dành riêng cho thẻ (CSD) như sau:
 Dung lượng = (C_SIZE + 1) × 2(C_SIZE_MULT + READ_BL_LEN + 2)
 trong đó
 0 ≤ C_SIZE ≤ 4095,
 0 ≤ C_SIZE_MULT ≤ 7,
 READ_BL_LEN là 9 (cho 512 byte/sector) hoặc 10 (cho 1024 byte/sector)
Các phiên bản mới hơn của thông số kỹ thuật SD (tại Mục 4.3.2) đã mở rộng rằng thẻ SDSC dung lượng 2 GB sẽ đặt trường READ_BL_LEN (và WRITE_BL_LEN) của nó để biểu thị 1024 byte. Điều này cho phép tính toán dung lượng của thẻ được báo cáo chính xác. Tuy nhiên, để đảm bảo tính nhất quán, các thiết bị chủ sẽ không yêu cầu (bằng CMD16) một độ dài khối lớn hơn 512 byte.
Versions 2 và 3.
Trong định nghĩa thẻ SDHC của phiên bản 2.0, phần C_SIZE trong thanh ghi Dữ liệu dành riêng cho thẻ (CSD) là 22 bit và nó chỉ ra kích thước bộ nhớ theo bội số của 512 KB. Trường C_SIZE_MULT đã bị loại bỏ và trường READ_BL_LEN không còn được sử dụng để tính toán dung lượng. Hai bit trước đây được dành riêng trong CSD giờ đây xác định họ thẻ: 0 cho SDSC, 1 cho SDHC hoặc SDXC, và 2 và 3 được bảo lưu. Do các sự thay đổi này, các thiết bị chủ cũ hơn không thể xác định chính xác thẻ SDHC hoặc SDXC cũng như dung lượng chính xác của chúng. Điều này có thể dẫn đến sự không tương thích khi sử dụng các thẻ SDHC hoặc SDXC trên các thiết bị chủ cũ hơn.
Công suất được tính như sau:
 Dung lượng = (C_SIZE + 1) × 524288
 trong trường hợp cho SDHC
 4112 ≤ C_SIZE ≤ 65375
 ≈2 GB ≤ Dung lượng ≤ ≈32 GB
 trong trường hợp cho SDXC
 65535 ≤ C_SIZE
 ≈32 GB ≤ Dung lượng ≤ 2 TB
Dung lượng trên 4 GB chỉ có thể đạt được khi sử dụng phiên bản 2.0 trở lên của thẻ SD. Đồng thời, cần đảm bảo rằng thẻ có dung lượng tương đương 4 GB đáp ứng khả năng tương thích với các thiết bị khác.