Chủ nhật, ngày 5.9.2010
DANH MỤC SẢN PHẨM
TÌM KIẾM THÔNG TIN
  Tìm trong sản phẩm
  Tìm trong tin tin tức
Donwload tài liệu
THỐNG KÊ WEBSITE
Lượt khách: 537,015
Hiện có: 18 khách
ĐỐI TÁC
ECS ELITEGROUP
Antec
Cooler Master
AMD - ATI
HIS
AcBel Polytech Inc.
Trường trung cấp Vạn Xuân
ĐHQG TP.HCM
Quả táo xanh
             Chia sẻ - Kinh nghiệm
SSD – Bộ nhớ flash và đôi điều cần biết (P.2)
Trong phần trước chúng ta đã nói về cấu tạo cơ bản của ổ SSD hoặc ổ flash USB. Dựa trên các transistor với floating gate (FG), bộ nhớ flash được xem là ứng cử viên nặng ký để thay thế phương pháp lưu trữ HDD truyền thống, với tốc độ đọc/ghi và thông lượng nhập xuất (IOPS) vượt trội. Song điều đó có xảy ra, ít nhất là trong một tương lai gần ? Phần tiếp theo này sẽ nói về những chuyện “thầm kín” đằng sau những lời hoa mỹ dành cho SSD.

Gót chân Achilles

Thần thoại Hy Lạp kể rằng Achilles, một anh hùng có mình đồng da sắt, nhưng gót chân là … da thịt (!) nên sau cùng bỏ mạng nơi chiến trận chỉ vì điểm yếu chết người ấy. Bộ nhớ flash mà chúng ta đang bàn ở đây, cũng có một đặc tính tương tự. Và chính nó là nguồn cơn của mọi “yếu huyệt” sau này.

Khác với bề mặt từ tính của HDD, các transistor trong bộ nhớ flash bị giới hạn về số chu kỳ lập trình (ghi/xoá) đồng nghĩ với việc khả năng thay đổi điện thế của FG sẽ bị “chai” và không thể lưu trữ thông tin được nữa. Đây là một nhược điểm cố hữu không thể khắc phục hoàn toàn được mà chỉ có thể cải thiện bằng cách nâng cao kỹ thuật bán dẫn để tăng cường số chu kỳ kia lên. Theo tiêu chuẩn của JEDEC, một chip nhớ/transistor MLC phải có số chu kỳ lập trình tối thiểu là 10.000 lần, con số tương đương với SLC là 100.000 lần. Những con số này có ý nghĩa gì với bạn ?

Hãy nói về một thiết bị hết sức “thân thương” với các độc giả ở đây – ổ flash USB. Chip nhớ dùng trên thiết bị này không khác với trên ổ SSD. Vì mục đích muốn giữ giá thành thấp nên không nghi ngờ gì khi chúng chính là các chip nhớ flash MLC, tức số lần lập trình lại cho phép là 10.000 lần. Hàng ngày chúng ta dùng thiết bị này để trao đổi dữ liệu, thay cho đĩa mềm và đĩa quang. Đặc tính sử dụng ổ flash USB rất khác giữa những người dùng: bạn có thể liên tục ghi dữ liệu mới lên đó vài chục lần/ngày, nhưng cũng có thể vài ngày mới ghi mới 1 lần. Nên ở đây tôi lấy giá trị ước lượng trung bình là ghi/xoá 1 lần/ngày. Con số này tương đương với 365,25 lần/năm. Vậy vị chi, với 10.000 lần ghi/xoá cho phép, sau hơn 27 năm thì chiếc USB flash drive của chúng ta mới “vào sọt rác”.

Trong những năm gần đây, theo ước tính của tôi dựa vào bạn bè và những người xung quanh thì trung bình 1 năm, 1 người dùng lại mua 1 ổ flash USB mới 1 lần. Có thể là vì chiếc ổ cũ dung lượng quá bé, có thể vì họ muốn có nhiều ổ dùng cho nhiều mục đích khác nhau, cũng có thể vì họ “hơi” dư tiền chưa biết để làm gì (giả định thế). Nhưng nhìn chung, tôi ghi nhận rất ít trường hợp dùng 1 ổ flash USB trên 5 năm. Do vậy 1 con chip flash MLC với 10.000 lần cho phép ghi/xoá có thể xem “dư xài” cho nhu cầu lưu trữ di động.

Còn SSD, đó là một câu chuyện khác, rất khác …

Khi Achilles tử vong …

Ổ flash USB/thẻ nhớ flash ra đời thay cho đĩa mềm/đĩa quang, số lần ghi/xoá mới trong ngày với các thiết bị này không hề cao, vì mục đích lưu trữ của chúng là phục vụ cho nhu cầu di động. Với HDD, chúng được dùng để cài đặt hệ điều hành (HĐH) và các ứng dụng khác. Xét 1 người dùng phổ thông bất kỳ hiện nay, mỗi khi lên mạng hoặc làm việc, thứ đương nhiên mà do vô tình hoặc cố ý họ tạo ra, chính là dữ liệu. Dữ liệu đó có thể là các file web, file media, file text … hoặc là những tấm hình họ vừa xuất ra từ thẻ nhớ máy ảnh hay những đoạn phim … Nói cách khác, trong 1 ngày, luôn có thao tác ghi/xoá dữ liệu mới xảy ra trên thiết bị lưu trữ “cứng” (không di động) như ổ HDD của bạn. Trừ phi bạn không sử dụng máy tính thì không có thao tác ghi/xoá nào xảy ra. Bản thân việc HĐH nạp dữ liệu vào bộ nhớ ảo (virtual memory hoặc pagefile) cũng là một quá trình ghi/xoá.

Hãy nhìn kỹ hơn vào vấn đề một chút: ổ SSD được ra đời nhằm thay thế HDD, như ổ flash USB thay thế đĩa mềm. Vì thế những gì xảy ra với HDD đương nhiên sẽ xảy ra với SSD, tức luôn có quá trình ghi/xoá mới được thực hiện với SSD nếu bạn đem vào sử dụng thay HDD. Vấn đề bắt đầu trở nên “căng thẳng” khi bạn biết, sau một số lần ghi/xoá nhất định, chiếc ổ SSD của bạn sẽ thành cục chặn giấy đắt tiền! 10.000 lần cho ổ SSD MLC và 100.000 lần cho ổ SSD SLC.

Vậy làm sao để kéo dài tuổi thọ của ổ SSD? Hẳn bạn không mong muốn trước hết là số tiền của mình bỏ ra (cao hơn khoảng 10 lần so với ổ HDD cùng dung lượng) sẽ “tan thành khói”, và sau đó là dữ liệu của bạn (giá trị không tính được) cũng mập mờ như sương ?

Không chỉ có bạn mới trăn trở điều này, các nhà sản xuất ổ SSD cũng “vò đầu, bứt tóc” không kém. Rồi họ đã nghĩ ra cả tá phương pháp ghi/xoá để làm sao “người anh hùng Achilles” sống lâu nhất ở mức có thể mà vẫn hoàn thành xuất sắc nhiệm vụ.

Thêm cái nhìn khác về SSD

Ở phần trước tôi đã đề cập đến SSD có cấu tạo CƠ BẢN như thế nào, song tôi chưa nói đến các thành phần của SSD làm việc CÙNG VỚI NHAU như thế nào. Nó giống như tôi bảo sinh vật được cấu tạo từ tế bào nhưng các tế bào liên kết với nhau ra sao để tạo thành cơ thể thì tôi chưa nêu. Oh, sorry!

Transistor là đơn vị cơ bản nhất của SSD, nhưng không được xem là đơn vị lập trình dữ liệu nhỏ nhất. Lấy ví dụ với transistor SLC chứa được 1 bit dữ liệu. Trong khi đó 1 byte lại gồm 8 bit. Nên đơn vị lập trình dữ liệu nhỏ nhất của SSD là một dòng (line) hay chuỗi liên tiếp các transistor gắn nối tiếp nhau (ví dụ 8 transistor SLC cho 1 byte dữ liệu). Các dòng này trên thực tế vẫn chưa hữu ích vì chỉ chứa được 1 byte dữ liệu. Chúng ta lại nối nhiều dòng với nhau lại thành trang (page) – bạn hãy liên tưởng đến 1 trang giấy với các dòng liên tiếp, và đây mới thực sự là đơn vị lập trình dữ liệu nhỏ nhất của SSD – 1 trang. Kích thước thông thường của 1 trang là 4 KB, nhưng có thể khác tuỳ theo nhà sản xuất.

4 KB vẫn còn quá nhỏ, chúng ta lại “đóng” tiếp nhiều trang với nhau để tạo thành 1 khối (block) lớn hơn – hay “quyển” nếu bạn thích hình ảnh của trang giấy và quyển sách. Mỗi khối có kích thước trung bình 512 KB. Và đây là chi tiết bạn cần chú ý: trình điều khiển SSD sẽ ghi dữ liệu mới theo trang (page) và xoá theo khối (block). Tôi không chắc lý do cụ thể đằng sau việc ghi/xoá bất đối xứng này là gì, song tôi cam đoan với bạn là thao tác xoá dữ liệu sẽ tốn kém thời gian cũng như tuổi thọ của các transistor hơn thao tác ghi. Trong tình huống này, hình ảnh “quyển tập – trang giấy” có vẻ hợp lý : bạn không ghi hết toàn bộ 1 quyển tập nhưng cần hẳn 1 quyển tập mới cho môn học nào đó. Hẳn nhiên, mọi so sánh đều khập khiễng ở đôi chỗ.

Song quyển tập và bộ nhớ flash giống nhau ở chỗ: chúng có số lần cho phép ghi / xoá nhất định – bạn không thể tẩy mãi những dòng bút chì trên trang giấy, đến lúc nào đó nó sẽ bị rách và bạn sẽ mất khả năng ghi đè lên đó.

Nhiều liều thuốc cho ‘con bệnh’

Nếu nhà sản xuất không tìm ra cách để khắc phục căn bệnh “chóng chết” của SSD, việc thay thế HDD sẽ chỉ là mơ mộng xa xôi chốn nào. “Cái khó ló cái khôn, muốn ăn ta lăn vào bếp” …

Các transistor MLC cho phép ghi/xoá khoảng 10.000 lần (con số tối thiểu theo chuẩn của JEDEC), còn một ổ SSD có hàng triệu transistor như thế. Thay vì chỉ tập trung sử dụng một vài transistor bất kỳ liên tục trong 1 thời gian dài (cách mà đầu ghi HDD thường dùng khi các sector ở ngoài cùng ổ đĩa có tốc độ cao nhất), trình điều khiển SSD sẽ phân phối công việc ra đều khắp mọi transistor. Tức tuổi thọ của các transistor sẽ giảm “đều” như nhau, chứ không giảm theo kiểu “gây shock” ở một vài điểm.

Bạn thắc mắc: giảm “đều” thì hay hơn giảm “shock” như thế nào? Nếu giả sử với 10.000 lần ghi x 1 triệu transistor = 10 tỷ lần ghi, về bản chất không khác nhau ở con số sau cùng (1.000 lần ghi/xoá trên 1 transistor khác gì trên 1.000 transistor) ? “Ăn tiền” là ở chi tiết này. Nếu bạn biết, tốc độ của SSD thực tế dựa vào số lượng transistor hiện có (available), tức chưa được dùng, còn trên thiết bị.

Hãy hình dung như thế này: giả sử 1 ổ SSD có 10 con chip flash và 1 trình điều khiển, tốc độ ghi tối đa (1) mà thiết bị đạt được xảy ra khi CẢ 10 con chip CÙNG GHI (xem 1 chip chỉ ghi được 1 luồng dữ liệu tại 1 thời điểm). Nếu lượng dữ liệu đã có chỉ nằm tập trung tại 1 con chip (con chip không còn transistor trống để ghi nữa), thì tốc độ ghi tối đa (2) sẽ chỉ là 9/10 so với trước. Điều tương tự với 8/10 con chip còn transistor trống để ghi (80% so với ban đầu) và tiếp tục khi lượng chip trống giảm đi.

Bạn lại hỏi tiếp: vậy tốc độ SSD giảm đi khi lượng transistor trống giảm đi? Chính xác. Quay lại với thắc mắc phía trên: 1 transistor “trống” là 1 transistor “không chứa dữ liệu” và “còn sống” ! Nếu bạn tập trung ghi/xoá 10.000 lần lên 1 transistor thì nó không thể là transistor “trống” được nữa. Nhà sản xuất buộc phải áp dụng phương pháp ghi/xoá giảm “đều” để lượng transistor “sống” về cơ bản là nhiều nhất.

Nhưng cái công cuộc kéo dài tuổi thọ này không hề đơn giản. Bạn chế được vaccine chữa bệnh dại thì vẫn còn virus HIV, virus gây bệnh lao, gây cúm … Ở trang tiếp, chúng ta sẽ nói về một số thuật ngữ liên quan đến tuổi thọ của SSD.

Những thuật ngữ về SSD

Khác biệt chính về vấn đề tuổi thọ ở bộ nhớ flash so với cơ chế lưu trữ bằng từ của HDD, đã khiến cho công nghệ mới này có thêm một cơ số các thuật ngữ (và tôi không chắc đã dừng lại) mới khá lạ lẫm với phần đông người dùng truyền thống. Trong đó có đôi thuật ngữ không chỉ đòi hỏi bạn “nhớ” mà còn phải biết cách “dùng”.

Song trước hết, bạn hãy hiểu các khái niệm sau :

  • Dữ liệu tĩnh (static data): những dữ liệu có thời gian tồn tại lâu dài, ít thay đổi. Ví dụ như một bộ phim, một tài liệu tham khảo …
  • Dữ liệu động (dynamic data): những dữ liệu được tạo ra và xoá đi nhanh chóng. Ví dụ như bộ nhớ tạm của chương trình (tmp), cache của trình duyệt web …
  • Ghi liên tục (sequential write): dữ liệu của 1 tập tin được ghi liên tục thành 1 khối, hoặc thành các khối liên tiếp nhau. Ví dụ một bộ phim có dung lượng lớn
  • Ghi gián đoạn/ngẫu nhiên (random write): nhiều tập tin được ghi xen kẽ nhau, có thể liên tục hoặc dàn trải. Ví dụ các tập tin cache sinh ra liên tục trong khi duyệt web

Garbage collection (GC)

Thuật ngữ này xuất hiện ở mảng lập trình và các bộ nhớ “động” (volatile memory) như DRAM, SRAM hơn là với bộ nhớ “tĩnh” (non-volatile memory) như HDD, đĩa quang. Theo đó, những dữ liệu nào không cần thiết để truy cập nữa sẽ được xoá/di chuyển qua vùng nhớ khác. Mục đích của GC là giảm thiểu sự phân mảnh (fragment) dữ liệu.

“Động” và “tĩnh” ở đây là tính chất dữ liệu còn tồn tại trên thiết bị nữa hay không sau khi nguồn điện bị mất. Nói đơn giản, dữ liệu trên DRAM sẽ mất sau khi cúp điện, trên đĩa quang thì không

Nhưng tại sao SSD lại cần đến GC? Vì nó thực hiện các vai trò như HDD. Tuy nói HDD là bộ nhớ “tĩnh”, nhưng trong thực tế nó vẫn được HĐH/ứng dụng sử dụng như là một bộ nhớ “động” kèm thêm với tốc độ thấp. Bạn duyệt web, trình duyệt tải về các nội dung của trang web (caching). Bạn đóng trình duyệt, nếu trình duyệt được cấu hình để xoá các nội dung trên (cache clearing) thì những nội dung trên sẽ bị xoá. Điều tương tự với bộ nhớ ảo (pagefile nếu là Windows NT về sau). Quá trình ghi/xoá diễn ra liên tục trên HDD và không khác biệt khi áp dụng cho SSD.

Điều gì xảy ra nếu một số transistor CHỈ chứa các dữ liệu tĩnh và số còn lại LUÔN chứa dữ liệu động? Với số lần ghi / xoá cho phép là giới hạn, những transistor luôn bị thay đổi nội dung (dữ liệu tĩnh) sẽ “chóng chết” hơn các transistor kia.

Như vậy để giảm thiểu mức độ “đau thương”, nhà sản xuất phải áp dụng cơ chế GC cho SSD: sau một thời gian định kỳ (có thể là tự động bằng firmware hay thiết lập bởi người dùng), những vùng nhớ chứa dữ liệu tĩnh trên thiết bị sẽ được chuyển qua vùng thường xuyên bị thay đổi nội dung. Mục đích của hành động này nhằm “phân phối” lại “tải” đều ra mọi transistor. Bạn có thể hiểu nó giống như việc “luân phiên thay ca trực”.

Trên HDD, GC được biết đến dưới thuật ngữ giải phân mảnh (defragmentation).

Những thuật ngữ về SSD (tiếp)

Wear Leveling

Bạn có thể từng nghe khái niệm này trên pin laptop. Vâng, ý nghĩa của nó hoàn toàn tương tự như trên SSD: mức độ hao mòn của thiết bị. Nghe có vẻ không vui nhưng thực tế là bạn cần có con số này hiện diện trên chiếc SSD của mình. Wear leveling đảm bảo cho mọi transistor đều có cùng mức độ hao mòn nằm trong 1 khoảng giá trị lân cận nhau. Trong tình huống “mỹ mãn” nhất, các transistor sẽ rủ nhau đóng phim 2012 cùng lúc khi giá trị wear leveling đạt cực đại.

Write amplification (WA)

Điều đầu tiên bạn nên nhớ : giá trị WA (WA factor) càng nhỏ càng tốt !

Ở phần trên tôi đã nêu: SSD được chia thành các trang (page) và khối (block). Tuỳ theo nhà sản xuất và kích thước lưu trữ của toàn chiếc SSD, dung lượng của page/block sẽ thay đổi. Và bạn nhớ trên HDD, có một khái niệm tương tự – sectorcluster. Cluster (đám) là tập hợp của những sector, giống như page là tập hợp của các line. Khác biệt chính ở đây là, gót chân Achilles, haizzz …

Nhưng WA là gì? Đó là hiện tượng bạn cần ghi một khối dữ liệu chỉ vài KB nhưng thực tế lại tốn đến vài trăm KB hoặc hơn. Tại sao? Lấy hình ảnh sau: bạn có 9 quả táo và 5 cái rổ, mỗi cái rổ đựng được 2 quả táo. Dù rằng dung lượng thực của 5 cái rổ là 10 quả táo, song bạn không thể lấy 4,5 cái rổ để đựng 10 quả táo được. Hoặc bạn lấy 5 cái rổ, hoặc bạn chọn loại rổ khác có dung lượng lớn hơn, giả dụ loại rổ đựng được 3 quả táo thì bạn chỉ cần 3 cái. Hiện tượng này lý giải cho sự tăng về dung lượng vật lý (size on disk) của các tập tin so với dung lượng luận lý (size).

Nhưng trên SSD, WA factor là một con số đáng sợ ! SSD ghi theo page và xoá theo block. Số lần ghi/xoá trên bộ nhớ flash là có hạn (biết rồi nói mãi). Khi quá trình GC diễn ra, dù muốn hay không, bạn phải “tiêu tốn” một lượng ghi/xoá nhất định. Nếu không thực hiện GC, dữ liệu trên block của bạn sẽ bị phân mảnh. Giả dụ bạn có 512 KB dữ liệu và nó nằm trên 3 block khác nhau, mỗi block 512 KB, trình điều khiển SSD sẽ phải đọc lần lượt 3 block trên rồi gửi mọi thứ lên CPU. Cách thức này sẽ chậm hơn so với chỉ tốn 1 block 512 KB cho 512 KB dữ liệu. Nếu muốn nhanh thì bạn phải thực hiện GC : gom dữ liệu trên 3 block lại vào 2 trong số đó và để “dành” nguyên 1 block để chứa 512 KB kia. Như vậy trên thực tế, bạn đã thực hiện nhiều hơn 512 KB ghi/xoá (WA factor > 1).

Với HDD, hệ số này không có ý nghĩa vì số lần ghi/xoá là không giới hạn. Còn trên SSD, hệ số này càng lớn tương đương với thiết bị càng “chóng chết”. Tùy theo nhà sản xuất (hoặc trình điều kiện SSD), WA factor (trung bình) sẽ thay đổi.

Những thuật ngữ về SSD (tiếp)

SSD Endurance

Thuật ngữ này là giá trị đáng lưu ý nhất, khi số lần ghi/xoá trên SSD là có hạn. Nên trong thực tế, dung lượng sử dụng (khác dung lượng vật lý) của SSD (SSD Endurance) là có hạn, vì nó tỷ lệ thuận với số lần ghi/xoá. Ngược lại với WA factor, giá trị SSD Endurance càng cao càng tốt.

SSD Endurance lệ thuộc vào các yếu tố sau: Wear Leveling, Sparing/Over-provisioning, Write Caching, Write Workload, NAND Technology. Trong đó, Wear Leveling đã nêu ở trên, Write Workload gồm 2 loại Sequential và Random Write, NAND Tech là chip MLC hay SLC.

Sparing/Over-provisioning

Từ những gì tôi đã viết ở trên, bạn có thể nhận thấy việc sử dụng HDD/SSD để làm một bộ nhớ đệm tốc độ thấp (hơn so với RAM) là điều không thể tránh khỏi. Sẽ luôn có quá trình ghi / xoá liên tục diễn ra ở các transistor nào đó. Với bối cảnh này, việc cố gắng phân phối tải ra đều khắp mọi vị trí trên chiếc ổ lưu trữ là quá mức cần thiết và đôi khi, “ngu ngốc” vì nó chỉ góp phần tăng cường hệ số WA và Wear leveling (lượng dữ liệu tạm sinh ra càng nhiều thì quá trình GC cũng diễn ra dày hơn và số chu kỳ ghi/xoá “hao phí” cũng mất đi nhiều hơn). Đến lúc này chúng ta cần “phá luật chơi” một chút: không thể “cào bằng” mãi mọi người với nhau, cần có sự “hy sinh”, “giết 1 triệu để cứu 1 tỷ” !

Một phần dung lượng vật lý của chiếc SSD sẽ không bao giờ “sống như người bình thường”. Chúng được nhà sản xuất tách riêng ra thông qua trình điều khiển SSD và HĐH sẽ không bao giờ thấy chúng. Chúng sẽ không được đưa vào danh sách LBA và từ đó không chứa dữ liệu theo cách “thường” nữa. Nếu là fan của phim hành động, bạn có thể hình dung phần dung lượng flash bị tách ra này giống như những gián điệp không bao giờ xuất hiện như những công dân hợp pháp. Họ nấp phía sau luật pháp (HĐH) nhưng họ giúp cho XH tốt hơn. Phần dung lượng ẩn này được gọi là Spare Area, quá trình tạo ra phần này gọi là Sparing hoặc Over-provisioning.

Uhm … okay … tôi hơi nói quá một chút. Thực ra ý nghĩa ban đầu của Sparing/Over-provisioning là để dư một lượng transistor nhằm thay thế các transistor khác trong trường hợp chúng hỏng hóc. Nó tương tự việc một số model HDD có một lượng dư sector với chức năng tương đương. Song về thực tế, phần Spare Area lại được trưng dụng để tăng tốc cho SSD. Nếu chỉ dùng để dự trữ/thay thế các transistor hỏng hóc, thì câu hỏi là khi nào lượng dư này mới được dùng ? Trong suốt thời gian “chờ đợi” đó, có phải lượng dư này vô dụng không ? Thêm một yếu tố khác : wear leveling, khi một vài transistor đang dùng bắt đầu “lăn quay”, thì đó là dấu hiệu rất rất nhiều transistor đang dùng khác cũng chuẩn bị … lăn quay ! Liệu chúng ta có đủ “quân dự bị” để thay thế hết toàn bộ? Bạn có thể nói “Được !”, với điều kiện là lượng dư này bằng đúng lượng đang dùng mà chi phí sản xuất tăng gấp đôi, nhưng giá trị sử dụng bằng phân nửa.

Lại nói, ‘có nhiều transistor trống’ đồng nghĩa với việc ‘có khả năng tăng tốc’. Các transistor dư thừa kia không phải là đang “trống” đấy sao? Từ đây phát sinh thêm chức năng thứ cấp: cải thiện tốc độ thiết bị. Nếu chưa được dùng để thay các transistor hỏng, các transistor thừa này sẽ được trưng dụng như một vùng nhớ đệm khác. Và giá trị đem lại khá ấn tượng. Bạn có thể xem ở kết quả “ngâm cứu” sau của Intel.

Ngoài ra như đã nêu ở trên, Sparing còn cải thiện cả tuổi thọ của SSD (SSD Endurance), song không nhiều bằng tăng tốc thiết bị. Bên cạnh đó, ảnh hưởng của Sparing lên SSD Endurance cũng chỉ đến một giá trị nhất định. Nghiên cứu của Intel cho thấy khi lượng Sparing lớn hơn 27% tổng dung lượng chiếc SSD thì mức cải thiện này không tăng thêm nữa.

Bệnh khó chữa …

Khi lứa SSD đầu tiên xuất hiện trên thị trường, chúng đã được “tô vẽ” bằng những kết quả ấn tượng trước các model HDD. Đó là phần nổi của tảng băng. Còn phần chìm …

Bạn bật lại : “Các kết quả benchmark không chính xác ?”

Có! Chúng chính xác, nhưng chúng không nói lên được phần chìm. Có một câu chuyện về các testlab mà … liệu tôi có nên nói không nhỉ (tôi cũng là tester mà !) ?

Okay, về căn bản thì tôi vẫn là một người tiêu dùng. Các testlab khi nhận sản phẩm, đa số chỉ kiểm tra, đánh giá sản phẩm trong vòng 3 lần thử nghiệm và lấy giá trị trung bình. Sau đó lưu vào bảng tính để lập ra các đồ thị (nói đơn giản nhưng rất dễ sai sót đấy – có đến hàng trăm giá trị cần xử lý một lúc). Với CPU, GPU … các phép kiểm tra hầu như không có thiếu sót vì những chip xử lý sẽ dùng hết năng lực tính toán của nó để đạt thời gian làm việc là thấp nhất. Riêng với các thiết bị lưu trữ, điều tương tự cũng được thực hiện. Và thiếu sót (khi kiểm tra bộ nhớ flash) là ở đây: chúng chỉ đạt hiệu năng tối đa KHI VẪN CÒN TRANSISTOR CHƯA DÙNG.

Bạn chưa hiểu vấn đề? Để tôi nói thêm. Vì tính chất của bộ nhớ flash là số lần ghi/xoá có giới hạn, nên khi người dùng/HĐH ra một lệnh xoá dữ liệu thì trình điều khiển sẽ CHƯA XOÁ NGAY, mà chỉ đánh dấu (block) các vị trí page có dữ liệu cần xoá (với người dùng) là không dùng được (unavailable). Khi người dùng/HĐH ra lệnh ghi dữ liệu, trình điều khiển sẽ bỏ qua vị trí các page trên mà ghi vào các page đang trống (free page). Mục đích của hành vi này là hạn chế tối đa việc giảm thiểu số lần ghi/xoá của bộ nhớ flash – đó là wear leveling.

Không có lệnh TRIM, phần dữ liệu cần được giải phóng trên thực tế vẫn nằm lại SSD

Song thao tác trên lại gây ra một hệ quả “đau lòng”. SSD có tốc độ ghi nhanh chóng là vì chúng ghi theo cơ chế song song. Giả định chúng ta có 5 block SSD trống, bạn ghi dữ liệu vào đầy 1 block. Vậy chúng ta còn 4 block trống. Bạn ra lệnh xoá, trình điều khiển đánh dấu block trên là không dùng được. Bạn lại điền dữ liệu vào, chúng ta còn 3 block trống. Rồi 2 block, 1 block. Và thứ tệ hại là đây: bạn đã xoá dữ liệu khỏi block đầu (HĐH hiển thị vùng không gian đó trống), bây giờ bạn có khối dữ liệu cần đến 2 block chứa, trong khi chiếc SSD chỉ còn 1 block trống (block đầu bị đánh dấu là chưa dùng được). Vậy trình điều khiển SSD sẽ ra lệnh xoá block trên, và cùng lúc ghi dữ liệu vào block trống sau cùng. Sau khi quá trình xoá (thực) diễn ra xong, trình điều khiển SSD mới ghi tiếp dữ liệu mới vào block đầu. Có nghĩa rằng tốc độ của chiếc SSD đã giảm đi so với ban đầu.

Vấn đề là các testlab không làm gì sai ở đây. Họ nhận được một chiếc SSD mới toanh, format, cài đặt HĐH, chép các tập tin vào để thử nghiệm. Với vozExpress, các dữ liệu “ban đầu” này chiếm ~ 30 GB (tuỳ gói thử nghiệm). Quá trình thử nghiệm chỉ hao tốn thêm ~ 5 GB, trong khi một chiếc SSD hiện nay có dung lượng ~ 80 GB. Rõ ràng là chúng tôi (và các testlab khác) không dùng hết dung lượng trống (về mặt vật lý) hiện có trên chiếc SSD. Và kết quả luôn là kết quả tốt nhất mà thiết bị đạt được.

Song với người tiêu dùng thì khác. Bạn thích chơi game? Bạn cài khoảng 5 tựa game ưa thích lên ổ chứa (chiếm hết dung lượng trống thực). Bạn chán chơi hoặc muốn chơi game khác? Bạn gỡ game cũ ra để có dung lượng trống (về logic khi chiếu theo góc nhìn của HĐH). Và đây mới là cảm nhận THỰC TẾ khi bạn ĐÃ DÙNG HẾT MỌI KHOẢNG TRỐNG có trên SSD : tốc độ cài game chậm đi thấy rõ. Hiện tượng này gọi là sự suy giảm hiệu năng (Performance Degradation).

TRIM, thuốc đắng dã tật

Trong một thời gian dài sau khi đã thương mại hoá công nghệ lưu trữ SSD, rất nhiều nhà sản xuất đã đau đầu suy nghĩ ra giải pháp cho vấn đề suy giảm hiệu năng của thiết bị. Bạn có thể đạt được “phong độ nhất thời”, song cái chính “đẳng cấp mới là mãi mãi”. HDD có thể không đạt hiệu năng ban đầu cao như SSD, nhưng về lâu dài thì sự ổn định về hiệu năng của HDD là cái SSD khát khao. Phải có cách “gì đó”, phải có cách gì đó …

Secure Erase (SE) là một cách để đạt được điều đó. Lệnh này về cơ bản, giống như Low Format, tức mọi dữ liệu đã ghi trên thiết bị sẽ được xoá tất, mọi thứ trở về trạng thái ban đầu (reset). SSD đạt được hiệu năng cao nhất khi mọi transistor của nó không có dữ liệu (trống). Và cách này thực sự hiệu quả. Song những ai sẽ chấp nhận điều này ?

Để tôi hỏi bạn vài câu: Bao lâu thì bạn format lại ổ cứng ? Bạn format để làm gì ?

Có lẽ tôi không cần câu trả lời, vì không có câu nào sẽ nói về “hiệu năng ban đầu” (sẽ có một số câu bảo rằng có nhưng lý do nêu ra không thuyết phục, đồng thời rất khó để kiểm chứng được hiệu quả của việc đó). Điều này đồng nghĩa với việc chẳng có mấy ai “thích” SE. Bạn sẽ phải di chuyển dữ liệu đi, rồi thực hiện SE, rồi chép dữ liệu về, tức bạn phải có thêm một thiết bị lưu trữ khác để backup lại “tài sản” của mình. Quá nhiều thứ cần làm chỉ để đạt được việc : trả hiệu năng lại cho tôi !

Không còn hy vọng nào sao? Còn, vẫn còn!

Thực ra cách xử lý vấn đề cực kỳ đơn giản: thay vì chỉ đánh dấu các LBA là không dùng được, hãy xoá “thẳng cẳng” dữ liệu trên chúng đi, “phục hồi nhân phẩm” trực tiếp cho chúng. Thao tác này sẽ “tốn kém” một lượng chu kỳ ghi/xoá nhất định, tức làm giảm SSD Endurance. Nhưng bù lại, hiệu năng của bạn luôn được đảm bảo, tức “đẳng cấp là mãi mãi”.

TRIM command comes to rescue

Thao tác trên được gọi là TRIM. Ban đầu TRIM không được tích hợp sẵn vào trình điều khiển SSD vì lý do gây suy giảm SSD Endurance. Song về lâu dài thì sự suy giảm hiệu năng là không thể chấp nhận được. Để tôi nói rõ hơn: giả định một chiếc SSD có thời hạn sử dụng lên đến 10 năm, còn nhu cầu dùng thực tế của một data center chỉ 5 năm (đối với một ổ lưu trữ), thì giá trị sử dụng 5 năm còn lại tuy vẫn cao, song không bù được với phần hụt về hiệu năng mà 4,5 năm đầu bị mất đi. Tức người sử dụng phải chấp nhận đánh đổi: hoặc hiệu năng, hoặc tuổi thọ.

Có một chi tiết nhỏ bạn cần chú ý: lệnh TRIM còn phải được HĐH hỗ trợ, nếu không thì trình điều khiển SSD không thể ra lệnh đó với các chip flash của nó. Với người dùng Windows, hiện chỉ có Windows 7/Server 2008 R2 hỗ trợ điều này. Với Linux là kernel 2.6.33. Còn MAC OS X có lẽ phải thêm một thời gian nữa.

Đầu tư vào SSD, nên hay không ?

Trên đây là những gì “không hay và bình thường” về SSD, có lẽ khác hẳn với những gì bạn được nghe “quảng cáo” về chúng. Tất nhiên tôi không bảo SSD kém tin cậy và tiêu thụ nhiều hơn HDD. Không sử dụng các chi tiết cơ học và cái nền là công nghệ bán dẫn đã giúp đỡ SSD rất nhiều. Nếu bạn đã từng dùng máy ThinkPad và đôi khi hơi … bực mình vì sự nhạy “quá đáng” của sensor nhận diện rung động – nhằm đưa đầu đọc HDD vào vị trí an toàn, đồng thời khiến cho máy “khựng” một lúc, thì bạn sẽ hiểu tính năng trên sẽ không cần thiết khi sử dụng SSD nữa.

Hiệu năng SSD cao là một thực tế, lượng IOPS cũng rất quan trọng với ứng dụng server. Nhìn chung SSD tốt về mọi mặt, trừ … tuổi thọ transistor có hạn !

SSD có gót chân Achilles, chúng ta đã biết. Dù sao, đây chỉ mới là những ngày đầu của công nghệ lưu trữ không dùng cơ khí. Trong tương lai tới, tuổi thọ các transistor sẽ được cải thiện hơn nữa. Một số đơn vị sản xuất bán dẫn đã công bố một vài loại transistor floating gate của họ có số chu kỳ ghi/xoá gấp 10 chuẩn bộ nhớ flash thông dụng hiện nay. Sự thay đổi về lượng sẽ dẫn tới thay đổi về chất. Mức tăng gấp 2 – 3 lần tuổi thọ có thể không đáng kể gì, nhưng gấp 20 – 30 lần sẽ là một thay đổi lớn. Thay vì chỉ dùng được 5 năm với hiệu năng ổn định, 50 năm có thể là cái mốc rất đáng suy nghĩ. Câu hỏi đặt ra là bạn cần dùng một sản phẩm TRONG THỜI GIAN BAO LÂU ?

Nói chung, khi được bổ sung lệnh TRIM, việc sử dụng SSD đã có thể “bình thường” như HDD – bạn không cần lệnh SE để đảm bảo hiệu năng ở mức cao nhất nữa (có thể 1 người dùng desktop nào đó rất “rỗi hơi” song với các quản trị viên một data center phải làm việc với hàng trăm thiết bị lưu trữ thì rất khác).

Còn với bạn, vào lúc này, có nên đầu tư SSD không, sẽ tuỳ thuộc nhu cầu của bạn như thế nào. Giá thành cao và ít nhà phân phối phần nào cản trở bạn tiếp xúc với kỹ thuật lưu trữ flash đa luồng. Một chiếc SSD nhỏ hơn 80 GB để cài đặt HĐH và những ứng dụng thường nhật, kết hợp với một chiếc HDD dung lượng cao (lưu trữ lai) có thể sẽ là lựa chọn tốt nhất vào lúc này.

(Nguồn tin: vozExpress)
Các tin đã đưa:
GPU dành cho Desktop và Workstation khác nhau thế nào ? (15/7/2010)
SSD – Bộ nhớ flash và đôi điều cần biết ! (15/7/2010)
8 tản nhiệt khí được ưa chuộng nhất tại thị trường trong nước (15/7/2010)
Tin khuyến mại
   
Bán hàng trực tuyến
Sản phẩm bán chạy
Giá: 8.0 USD
Giá: 45.0 USD
Giá: 55.0 USD
Giá: 57.0 USD
Giá: 58.0 USD
Giá: 64.0 USD
Bạn hàng/ đối tác
Digi4U
Đức Thắng JSC
Công nghệ số
HDvietnam
Đông Á Ltd.,
NẾU HÀI LÒNG HÃY NÓI VỚI BẠN BÈ, CHƯA HÀI LÒNG HÃY NÓI VỚI CHÚNG TÔI !
CÔNG TY CỔ PHẦN MÁY TÍNH ĐỨC THẮNG
Địa chỉ: 22 Đặng Trần Côn, Đống Đa, Hà Nội | Email: ducthangjsc05@vnn.vn
Điện thoại: 04.37326105 - Fax: 04.37326106 - Hotline: 0912.861.302
Trung tâm bảo hành: 22 Đặng Trần Côn, Đống Đa, Hà Nội | ĐT: 04.37326105 - ext: 301
Copyright 2009 Duc Thang JSC
Thiết kế Website, thiết kế web, thiết kế Logo, tối ưu hóa website, SEO, Logo Design, thiet ke web, thiet ke website, thiet ke logo, toi uu hoa website, Search Engine Optimization | Truong thanh Design