Bảo toàn dữ liệu Đặt vấn đề

    Bảo toàn dữ liệu là phương pháp sử dụng xử lý giao thức để phát hiện và khắc phục lỗi, trong đó phát hiện lỗi đóng vai trò hàng đầu. Khi đã phát hiện được lỗi, có thể có cách khôi phục dữ liệu, hay biện pháp đơn giản hơn là yêu cầu gửi lại dữ liệu. Các phương pháp bảo toàn dữ liệu thông dụng là:
    • Parity bit 1 chiều và 2 chiều
    • CRC (Cyclic Redundancy Check)
    • Nhồi bit (Bit stuffing).
Nguyên lý cơ bản
     Nhiệm vụ bảo toàn dữ liệu là một có thể sắp xếp thuộc lớp 2 (lớp liên kết dữ liệu) trong mô hình qui chiếu OSI. Trong quá trình mã hóa nguồn, bên gửi bổ sung một số thông tin phụ trợ, được tính theo một thuật toán qui ước vào bức điện cần gửi đi. Dựa vào thông tin bổ trợ này mà bên nhận có thể kiểm soát và phát hiện ra lỗi trong dữ liệu nhận được (giải mã).
   Chú ý rằng kể cả thông tin nguồn và thông tin phụ trợ đều có thể bị lỗi, nên phải cân nhắc quan hệ giữa lượng thông tin nguồn và lượng thông tin phụ trợ, nếu không một phương pháp bảo toàn dữ liệu sẽ không đạt được mong muốn về độ tin cậy của dữ liệu, thậm chí có thể sẽ phản tác dụng. Trước khi phân tích, đánh giá tác dụng của các phương pháp bảo toàn dữ liệu, cần đưa ra một số định nghĩa như dưới đây.
Tỉ lệ bit lỗi
     Tỉ lệ bit lỗi p là thước đo đặc trưng cho độ nhiễu của kênh truyền dẫn, được tính bằng tỉ lệ giữa số bit bị lỗi trên tổng số bit được truyền đi. Nói một cách khác, tỉ lệ bit lỗi chính là xác suất một bit truyền đi bị lỗi. Lưu ý rằng, tỉ lệ bit lỗi xấu nhất không phải là 1, mà là 0,5. Trong trường hợp p = 1, tức là bất cứ bit nào truyền đi cũng bị sai lệch, ta chỉ việc đảo lại tất cả các bit để khôi phục lại dữ liệu. Khi p = 0,5 tức xác suất cứ hai bit truyền đi lại có một bit bị lỗi thì đường truyền này hoàn toàn không sử dụng được, bởi theo lý thuyết thông tin thì không thể có một phương pháp bảo toàn dữ liệu nào có thể áp dụng tin cậy, có hiệu quả. Trong kỹ thuật, p = 10-4 là một giá trị thường chấp nhận được. Một đường truyền có tỉ lệ bit lỗi như vậy có thể thực hiện được tương đối dễ dàng.
Tỉ lệ lỗi còn lại
    Tỉ lệ lỗi còn lại R là thông số đặc trưng cho độ tin cậy dữ liệu của một hệ thống truyền thông, sau khi đã thực hiện các biện pháp bảo toàn (kể cả truyền lại trong trường hợp phát hiện ra lỗi). Tỉ lệ lỗi còn lại được tính bằng tỉ lệ giữa số bức điện còn bị lỗi không phát hiện được trên tổng số bức điện đã được truyền. Đương nhiên, giá trị này không những phụ thuộc vào tỉ lệ bit lỗi và phương pháp bảo toàn dữ liệu mà còn phụ thuộc vào chiều dài trung bình của các bức điện. Một bức điện càng dài thì xác suất lỗi càng lớn.
Thời gian trung bình giữa hai lần lỗi
    Tỉ lệ lỗi còn lại là một thông số tương đối khó hình dung, vì vậy trong thực tế người ta hay xét tới thời gian trung bình giữa hai lần lỗi TMTBF (MTBF = Mean Time Between Failures). Thông số này có liên quan chặt chẽ tới giá trị tỉ lệ lỗi còn lại:
 TMTBF = n/(v*R),
 với n là chiều dài bức điện tính bằng bit và v là tốc độ truyền tính bằng bit/s. Giả sử một bức điện có chiều dài n = 100 bit được truyền liên tục với tốc độ 1200 bit/s, quan hệ giữa tỉ lệ bit lỗi và thời gian trung bình giữa hai lần lỗi sẽ được thể hiện như sau:

Khoảng cách Hamming (Hamming Distance, HD)
      Khoảng cách Hamming (gọi theo nhà khoa học Mỹ R.W. Hamming) là thông số đặc trưng cho độ bền vững của một mã dữ liệu, hay nói cách khác chính là khả năng phát hiện lỗi của một phương pháp bảo toàn dữ liệu. HD có giá trị bằng số lượng bit lỗi tối thiểu mà không đảm bảo chắc chắn phát hiện được trong một bức điện. Nếu trong một bức điện chỉ có thể phát hiện một cách chắc chắn k bit bị lỗi, thì HD = k+1. Ví dụ, nếu một lỗi duy nhất có thể phát hiện được một cách chắc chắn (như trong phương pháp dùng parity bit 1 chiều), thì khoảng cách Hamming là 2. Đây là giá trị tối thiểu mà một phương pháp truyền đòi hỏi. Các hệ thống bus trường thông dụng thường có khoảng cách Hamming là 4, các hệ thống đạt độ tin cậy rất cao với HD = 6.
     Theo lý thuyết thông tin thì số lượng bit lỗi chắc chắn phát hiện được không bao giờ lớn hơn lượng thông tin phụ trợ dùng để kiểm lỗi. Đương nhiên, muốn đạt được giá trị HD lớn thì phải tăng lượng thông tin phụ trợ, nhưng ta cũng chú ý khía cạnh phản tác dụng của thông tin phục trợ đã được nhắc tới - khi mà thông tin phụ trợ cũng có thể bị lỗi.
 Hiệu suất truyền dữ liệu
    Hiệu suất truyền dữ liệu E là một thông số đặc trưng cho việc sử dụng hiệu quả các bức điện phục vụ chức năng bảo toàn dữ liệu, được tính bằng tỉ lệ số bit mang thông tin nguồn (bit dữ liệu) không bị lỗi trên toàn bộ số bit được truyền.
Ta có: E = m (1-p) n /n
m - Số lượng bit dữ liệu trong mỗi bức điện
 n - Chiều dài bức điện
 p - Tỉ lệ bit lỗi

Ví dụ 1:
m = 8 bit
n = 11 bit (1 bit đầu + 8 bit dữ liệu + 1 bit chẵn lẻ+ 1 bit cuối)
 p = 10-3
 Hiệu suất truyền dữ liệu E = 0,72.

 Ví dụ 2:
m = 8 bit
n = 24 bit (4 bit đầu + 8 bit dữ liệu + 8 bit CRC + 4 bit cuối)
p = 10-3
Hiệu suất truyền dữ liệu E = 0,325.

Ví dụ 3: m = 8 bit
 n = 19 bit (4 start bit + 8 bit dữ liệu + 3 bit CRC + 4 stop bit)
p = 10-3
 Hiệu suất truyền dữ liệu E = 0,413.
    Rõ ràng, việc tăng lượng thông tin phụ trợ ở một chừng mực nào đó có thể tăng độ tin cậy cho dữ liệu, song hiệu quả truyền dữ liệu vì thế cũng giảm đi. Như đã bàn, nếu tỉ lệ bit lỗi p = 0,5 thì bức điện nhận được hoàn toàn không có giá trị. Điều đó có nghĩa là, số lượng bit kiểm lỗi không bao giờ cần thiết phải bằng hoặc lớn hơn một nửa số bit dữ liệu. So sánh ví dụ 2 và ví dụ 3, ta sẽ thấy sự lựa chọn 3 bit thông tin kiểm lỗi ở ví dụ 3 đúng đắn hơn trên cả phương diện hiệu quả truyền dữ liệu và độ tin cậy dữ liệu