Trang chủ » Tư vấn »Bảo Trì Máy Tính - Mạng LAN» Mã hóa RLL

Ngày tạo: 26/06/2015

Mã hóa RLL



Phương án mã hóa phố biến nhất ngày nay cho các ổ đĩa cứng, được gọi là Run Length Limited, đóng gói gấp đôi lượng thông tin trên một đĩa hơn MFM và gấp ba lần lượng thông tin hơn FM. Trong mã hóa RLL, ổ đĩa kết hợp các nhóm bit vào trong một đơn vị để tạo ra mẫu cụ thể của các đảo chiều thông lượng. Vì vác tín hiệu đồng hồ và dữ liệu được kết hợp trong những mẫu này, xung có thể tăng lên trong khi duy trì khoảng cách cơ bản như cũ giữa các đảo chiều thông lượng trong môi trường lưu trữu.

IBM phát minh ra mã hóa RLL và sử dụng phương pháp này đầu tiên trong nhiều ổ đĩa thuộc hệ thống máy tính khổng lồ của họ. Trong suốt những năm cuối thập niên 1980, ngành công nghiệp ổ đĩa cứng PC bắt đầu dùng các phương án mã hóa RLL để tăng khả năng lưu trữ của các ổ cứng PC. Ngày nay, hầu như tất cả ổ đĩa trên thị trường đều sử dụng một số hình thức của mã hóa RLL.

Thay vì mã hóa một bit đơn, RLL thường mã hóa một nhóm bit dữ liệu cùng lúc. Thuật ngữ RunLength Limited xuất phát từ hai đặc điểm kỹ thuật chủ yếu của những mã này, là số khoảng tối thiếu (the run length) và số khoảng tối đa (the run limit) của các ô chuyển đổi được phép giữa hai chuyển đổi thông lượng thực sự. Vài biến thể của chương trình được hoàn tất bằng cách thay đổi thông lượng thực sự. Vài biến thể của chương trình được hoàn tất bằng cách thay đổi độ dài và các tham số giới hạn, nhưng chỉ hai đạt được sự thịnh hành thật sự: RLL 2.7 và RLL 1.7.

Thậm chí bạn có thể diển tả mã hóa FM và MFM như một hình thức của RLL. FM được gọi là RLL 0.1 bởi vì ít như không có chuyển đổi và nhiều như một ô chuyển đổi tách biệt hai chuyển đổi thông lượng. MFM được gọi là RLL 1.3 bởi vì ít như một chuyển đổi và nhiều như ba ô chuyển đổi tác biệt như hai chuyển đổi thông lượng. (Mặc dù những mã này được diễn đạt như những biến thể của hình thức RLL, thông thường không thực hiện như vậy).

RLL 2.7 khởi đầu là biến thể RLL phổ biến nhất do nó cho tỷ lệ mật độ cao với một cửa sổ phát hiện chuyển đổi cùng kích cỡ tương đối như MFM. Phương pháp này cung cấp một độ lưu trữ cao và độ tin cậy khá tốt. Tuy vậy trong các ổ đĩa dung lượng rất cao, RLL 2.7 không chứng tỏ đủ tin cậy. Hầu như các ổ đĩa dung lượng cao nhất hôm nay dùng mã hóa RLL 2.7 không chứng tỏ đủ tin cậy. Hầu như các ổ đĩa dung lượng cao nhất hôm nay dùng mã hóa RLL 1.7 cho tỷ lệ mật độ 1.27 lần so với MFM và một cửa sổ phát hiện chuyển đổi lớn hơn MFM. Do cửa sổ định thời gian liên quan lớn hơn hay kích cỡ ô trong đó một chuyển đổi được phát hiện.

RLL 1.7 là mã dễ chấp nhận hơn và đáng tin cậy hơn, là quan trọng khi đãi và công nghệ đầu từ đang bị đẩy vào những giới hạn của chúng. Một biến thể RLL khác được dùng ít được gọi là RLL 3.9 đôi khi cũng được gọi là Advabced RLL (ARLL) cho phép một tỷ lệ mật độ thậm chí cao hơn RLL 2.7. Không may là độ tin cậy quá kém so với RLL 3.9; phương pháp này chỉ được dùng bởi vài bộ điều khiển ngày nay đã lỗi thời và không còn nữa.

Hiểu cách các mã RLL hoạt động thì khó khăn nếu không xem một ví dụ. Trong một biến thể RLL có sẵn (như là RLL 2.7 hay 1.7) bạn có thể xây dựng nhiều bảng mã chuyển đổi thông lượng để giải thích cách nhóm các bit riêng biệt được mã hóa vào các chuyển đổi thông lượng như thế nào.

Trong bảng chuyển đổi thể hiện ở bảng 8.3 các nhóm dữ liệu cụ thể dài 2, 3 và 4 bit được biên dịch thành chuỗi chuyển đổi thông lượng các ô dài 4, 6 và 8 chuyển đổi, theo thứ tự. Các chuyển đổi được chọn cho dãy bit cụ thể được thiết kế để đảm bảo rằng các chuyển đổi thông lượng không xảy ra quá gần nhau hay quá xa nhau.

Giới hạn hai chuyển đổi thông lượng gần nhau như thế nào là cần thiết do các khả năng phân giải cố định của đầu từ và môi trường lưu trữ. Giới hạn hai chuyển đổi thông lượng xa nhau như thế nào có thể đảm bảo các đồng hồ trong thiết bị vẫn đồng bộ.

Nghiên cứu bảng 8.3, bạn có thể nghĩ rằng mã hóa một giá trị byte như là 00000001b là không thể được bởi vì không có những kết hợp nhóm dữ liệu vừa với byte này. Mã hóa loại byte này không là vấn đề, bởi vì bộ điều khiển không truyền các byte riêng lẻ; thay vì vậy, bộ điều khiển gửi toàn bộ sector, làm mã hóa như một byte có thể bằng cách bao gồm một số bít điều khiển gửi toàn bộ sector, làm mã hóa như một byte có thể bằng cách bao gồm một số bít trong byte tiếp theo. Vấn đề duy nhất thực sự xảy ra trong byte cuối của một sector nếu các bit thên vào cần thiết để hoàn tất chuỗi nhóm cuối cùng. Trong những trường hợp này, endec trong bộ điều khiển thêm các bit dư vào phàn cuối byte cuối. Các bit trội này sau đó được cắt bỏ cuối bất kỳ đọc nào nên bộ điều khiển luôn luôn giải mã byte cuối chính xác.

Các so sánh về chương trình mã

Hình 8.10 thể hiện một ví dụ của dạng sóng được ghi để lưu trữ ASCII ký tự X trong một ổ cứng bằng cách dùng ba chương trình mã hóa khác nhau.

Trong mỗi ví dụ về chương trình mã hóa này, dòng đầu cho biết các bit dữ liệu riêng biệt (01011000b, cho ví dụ) trong các ô bit của chúng được tách biệt theo thời gian bởi tín hiệu đồng hồ, được thể hiện như một kỳ (.). Phía trước dòng là dạng sóng ghi thực sự, cho biết các điện áp dương và âm cũng như các chuyển đổi điện áp đầu từ dẫn đến việc ghi các chuyển đổi thông lượng. Dòng cuối thể hiện các ô chuyển đổi, với T đại diện một ô chuyển đổi chứa một chuyển đổi thông lượng và N đại diện một ô chuyển đổi trống.

Thí dụ mã hóa FM thể hiện trong hình 8.10 thì dễ dàng giải thích. Mỗi ô bit có hai ô chuyển đổi: một cho thông tin đồng hồ và một cho chính dữ liệu. Tất cả các ô chuyển đổi đồng hồ đều chứa các chuyển đổi thông lượng và các ô chuyển đổi dữ liệu chỉ chứa một chuyển đổi thông lượng nếu dữ liệu là một bit 1. Không chuyển đổi xuất hiện khi dữ liệu là một bit 0. Bắt đầu từ phía trái, bit dữ liệu đầu tiên là 0, giải mã như một mẫu chuyển đổi thông lượng TN. Bít kế tiếp là 1, giải mã như TT. Bit kế tiếp là 0, giải mã như TN và tiếp tục.

Chương trình mã hóa MFM cũng có các ô chuyển đổi đồng hồ và dữ liệu cho mỗi bit dữ liệu được ghi. Như bạn thấy, tuy nhiên, các ô chuyển đổi đồng hồ mang một chuyển đổi thông lượng chỉ khi một bit 0 được lưu trữ sau bit 0 khác. Bắt đầu từ bên trái, bit đầu tiên là 0 và bit có trước là không bit (giả sử là 0), nên mẫu chuyển đổi thông lượng là TN cho bit đó. Bit kế tiếp là một 1, luôn luôn giải mã thành mẫu ô chuyển đổi NT. Bit kế tiếp là 0, bị dẫn trước bởi 1, nên mẫu được lưu trữ là NN. Bằng cách dùng bảng 8.2 (thể hiện bên trên), bạn dễ dàng dò theo mẫu mã hóa MFM đến phần cuối của byte. Bạn có thể thấy số lượng tối thiểu và tối đa các ô chuyển đổi giữa bất kỳ hai chuyển đổi thông lượng là một và ba theo thứ tự, giải thích được tại sao mã hóa MFM cũng được gọi là RLL 1.3.

Mẫu RLL 2.7 thì khá khó khăn để nhìn thấy bởi vì nó mã hóa các nhóm bit hơn là các bit riêng biệt. Bắt đầu từ bên trái, nhóm đầu tiên phù hợp các nhóm được liệt kê trong bảng 8.3 là nhóm ba bit đầu tiên, 010. Những bit này được biên dịch thành một mẫu chuyển đổi thông lượng TNNTNN. Nhóm hai bit kế tiếp, 11 được biên dịch như một nhóm TNNN; nhóm cuối cùng, các bit 000, được biên dịch thành NNNTNN để hoàn tất byte. Như bạn thấy trong thí dụ này, không cần thiết các bit thêm nào để kết thúc nhóm cuối cùng.

Lưu ý là số khoảng tối thiểu và tối đa các ô chuyển đổi trống giữa bất kỳ hai chuyển đổi thông lượng trong ví dụ này là hai và sau, mặc dù một ví dụ khác có thể cho biết số tối đa của bảy ô chuyển đổi trống. Đây là nơi mà tên RLL 2.7 xuất phát. Do ngay cả các chuyển đổi được ghi ít hơn trong MFM, xung được gia tăng đến ba lần so với FM hay 1.5 lần so với MFM, vì vậy lưu trữ nhiều dữ liệu tỏng cùng không gian. Tuy vậy lưu ý rằng dạng sóng ghi kết quả tự nó giống chính xác như một dạng sóng FM hay MFM tiêu biểu trong các giới hạn về số lượng và sự ngăn cách của các chuyển đổi thông lượng cho một phần vật lý định trước của đĩa. Mặt khác, khoảng cách tối thiểu và tối đa vật lý giữa bất kỳ hai chuyển đổi thông lượng vẫn giữ nguyên trong ba ví dụ chương trình mã hóa này.

Theo “Nâng cấp và sửa chữa máy tính” Scott Mueller