Khả năng tương thích ngược

[nhỏ|[Wii có tính năng tương thích ngược với hệ máy tiền nhiệm là GameCube, có khả năng chạy các đĩa game và sử dụng tay cầm cũng như thẻ nhớ của hệ máy này.

Các phiên bản sau của hệ thống từ năm 2011 trở đi đã loại bỏ các khe cắm tay cầm và thẻ nhớ, điều này thực chất đã loại bỏ khả năng này, tuy nhiên bo mạch chủ vẫn có các miếng đệm cho chúng và có thể hàn lại bằng cách sửa đổi.]]
Trong viễn thông và điện toán, **khả năng tương thích ngược** (tiếng Anh: *backward compatibility* hoặc *backwards compatibility*) là một thuộc tính của hệ điều hành, phần mềm, sản phẩm trong thế giới thực hoặc công nghệ cho phép tính tương tác với một hệ thống kế thừa cũ hơn, hoặc với đầu vào được thiết kế cho hệ thống đó.

Việc sửa đổi một hệ thống theo cách không cho phép khả năng tương thích ngược đôi khi được gọi là "" khả năng tương thích ngược. Sự phá vỡ như vậy thường phát sinh nhiều loại chi phí khác nhau, chẳng hạn như chi phí chuyển đổi.

Một khái niệm bổ sung là *khả năng tương thích xuôi* (forward compatibility); một thiết kế có khả năng tương thích xuôi thường có một lộ trình công nghệ để tương thích với các tiêu chuẩn và sản phẩm trong tương lai.

## Sử dụng

### Trong phần cứng
Một ví dụ đơn giản về cả khả năng tương thích ngược và tương thích xuôi là sự ra đời của đài FM ở dạng stereo. Đài FM ban đầu là mono, với chỉ một kênh âm thanh được đại diện bởi một tín hiệu. Với sự ra đời của đài FM stereo hai kênh, nhiều thính giả chỉ có máy thu FM mono. Khả năng tương thích xuôi cho các máy thu mono với tín hiệu stereo đạt được bằng cách gửi tổng của cả hai kênh âm thanh trái và phải trong một tín hiệu và hiệu số trong một tín hiệu khác. Điều đó cho phép các máy thu FM mono nhận và giải mã tín hiệu tổng trong khi bỏ qua tín hiệu hiệu số, vốn chỉ cần thiết để tách các kênh âm thanh. Các máy thu FM stereo có thể nhận tín hiệu mono và giải mã nó mà không cần tín hiệu thứ hai, và chúng có thể tách tín hiệu tổng thành các kênh trái và phải nếu nhận được cả tín hiệu tổng và tín hiệu hiệu số. Nếu không có yêu cầu về khả năng tương thích ngược, một phương pháp đơn giản hơn có thể đã được chọn.

Khả năng tương thích ngược hoàn toàn đặc biệt quan trọng trong các kiến trúc tập lệnh máy tính, hai trong số những kiến trúc thành công nhất là các dòng máy tính lớn 360/370/390/Zseries của IBM, và dòng vi xử lý x86 của Intel.

IBM đã công bố các mẫu 360 đầu tiên vào năm 1964 và đã tiếp tục cập nhật dòng này kể từ đó, với sự di chuyển qua nhiều thập kỷ từ thanh ghi 32-bit/địa chỉ 24-bit sang thanh ghi và địa chỉ 64-bit.

Intel đã công bố các bộ vi xử lý Intel 8086/8088 đầu tiên vào năm 1978, một lần nữa với sự di chuyển qua nhiều thập kỷ từ 16-bit sang 64-bit. (Các bộ xử lý 8086/8088, đến lượt mình, được thiết kế với sự chú trọng đến khả năng dịch máy dễ dàng của các chương trình được viết cho bộ xử lý tiền nhiệm, mặc dù chúng không tương thích tập lệnh với bộ xử lý 8-bit Intel 8080 năm 1974. Tuy nhiên, Zilog Z80 hoàn toàn tương thích ngược với Intel 8080.)

Các bộ vi xử lý tương thích ngược hoàn toàn có thể xử lý cùng các chỉ thị phần mềm thực thi nhị phân như các bộ xử lý tiền nhiệm, cho phép sử dụng bộ xử lý mới hơn mà không cần phải mua các ứng dụng hoặc hệ điều hành mới. Tương tự, sự thành công của tiêu chuẩn truyền thông kỹ thuật số Wi-Fi được cho là nhờ khả năng tương thích xuôi và ngược rộng rãi của nó; nó trở nên phổ biến hơn các tiêu chuẩn khác không có khả năng tương thích ngược.

### Trong phần mềm

Trong phát triển phần mềm, khả năng tương thích ngược là một khái niệm chung về sự tương tác giữa các phần mềm sẽ không tạo ra bất kỳ lỗi nào khi chức năng của nó được gọi thông qua API. Phần mềm được coi là ổn định khi API được sử dụng để gọi các chức năng là ổn định qua các phiên bản khác nhau.

Trong các hệ điều hành, việc nâng cấp lên các phiên bản mới hơn được cho là tương thích ngược nếu các tệp thực thi và các tệp khác từ các phiên bản trước sẽ hoạt động như bình thường.

Trong các trình biên dịch, khả năng tương thích ngược có thể đề cập đến khả năng của một trình biên dịch cho phiên bản ngôn ngữ mới hơn chấp nhận mã nguồn của các chương trình hoặc dữ liệu đã hoạt động dưới phiên bản trước đó.

Một định dạng dữ liệu được cho là tương thích ngược khi một phiên bản mới hơn của chương trình có thể mở nó mà không gặp lỗi giống như phiên bản tiền nhiệm.

## Sự đánh đổi

### Lợi ích
Có một số động lực để một công ty triển khai khả năng tương thích ngược. Một là nó có thể được sử dụng để bảo tồn phần mềm cũ hơn mà nếu không sẽ bị mất khi nhà sản xuất quyết định ngừng hỗ trợ phần cứng cũ hơn. Một ví dụ tuyệt vời về cách tiếp cận này là trò chơi video, vì nó là một ví dụ phổ biến được sử dụng khi thảo luận về giá trị của việc hỗ trợ phần mềm cũ hơn. Tác động văn hóa của trò chơi video là một phần lớn trong sự thành công liên tục của chúng, và một số người tin rằng việc bỏ qua khả năng tương thích ngược sẽ khiến những tựa game này biến mất. Khả năng tương thích ngược cũng đóng vai trò là một điểm bán hàng cho phần cứng mới, vì cơ sở người chơi hiện tại có thể nâng cấp lên các thế hệ máy chơi game tiếp theo với chi phí phải chăng hơn. Điều này cũng giúp bù đắp cho sự thiếu hụt các tựa game khi ra mắt hệ thống mới, vì người dùng có thể lấy từ thư viện trò chơi của máy chơi game trước đó trong khi các nhà phát triển chuyển sang phần cứng mới. Khả năng tương thích ngược với các đĩa phần mềm và thiết bị ngoại vi của PlayStation (PS) gốc được coi là một điểm bán hàng quan trọng cho PlayStation 2 (PS2) trong những tháng đầu tiên có mặt trên thị trường. Hơn nữa, các nghiên cứu vào giữa những năm 1990 cho thấy ngay cả những người tiêu dùng không bao giờ chơi các trò chơi cũ hơn sau khi mua hệ thống mới cũng coi khả năng tương thích ngược là một tính năng rất đáng mong đợi, đánh giá cao khả năng tiếp tục chơi bộ sưu tập trò chơi hiện có ngay cả khi họ chọn không bao giờ làm như vậy.

Mặc dù không được đưa vào khi ra mắt, Microsoft đã từ từ kết hợp khả năng tương thích ngược cho các tựa game chọn lọc trên Xbox One vài năm sau vòng đời sản phẩm của nó. Người chơi đã tích lũy hơn một tỷ giờ với các trò chơi tương thích ngược trên Xbox. Một phần lớn thành công và việc triển khai tính năng này là do phần cứng trong các máy chơi game thế hệ mới vừa mạnh mẽ vừa đủ giống với các hệ thống cũ để các tựa game cũ có thể được chia nhỏ và cấu hình lại để chạy trên Xbox One. Chương trình này đã chứng tỏ vô cùng phổ biến với người chơi Xbox và đi ngược lại xu hướng gần đây về các bản làm lại (remaster) do hãng phim thực hiện cho các tựa game cổ điển, tạo ra những gì một số người tin là một sự thay đổi quan trọng trong chiến lược của các nhà sản xuất máy chơi game. Thế hệ máy chơi game hiện tại như PlayStation 5 (PS5) và Xbox Series X/S cũng hỗ trợ tính năng này.

### Chi phí
Chi phí tiền tệ để hỗ trợ phần mềm cũ được coi là một nhược điểm lớn đối với việc sử dụng khả năng tương thích ngược. Các chi phí liên quan đến khả năng tương thích ngược là hóa đơn nguyên vật liệu lớn hơn nếu phần cứng được yêu cầu để hỗ trợ các hệ thống cũ; sự phức tạp gia tăng của sản phẩm có thể dẫn đến thời gian đưa ra thị trường lâu hơn, cản trở công nghệ và làm chậm sự đổi mới; và tăng kỳ vọng từ người dùng về khả năng tương thích. Hơn nữa, nó cũng đưa ra rủi ro rằng các nhà phát triển sẽ ủng hộ việc phát triển các trò chơi tương thích với cả hệ thống cũ và mới, vì điều này mang lại cho họ cơ sở người mua tiềm năng lớn hơn, dẫn đến sự khan hiếm phần mềm sử dụng các tính năng tiên tiến của hệ thống mới. Do đó, một số nhà sản xuất máy chơi game đã loại bỏ dần khả năng tương thích ngược vào cuối thế hệ máy chơi game để giảm chi phí và phục hồi doanh số bán hàng trong thời gian ngắn trước khi phần cứng mới ra đời. Một ví dụ về cách tiếp cận này là PlayStation 3 (PS3), nơi họ đã loại bỏ khả năng tương thích ngược với các trò chơi PlayStation 2 (PS2) trên các hệ thống sau này (bao gồm việc loại bỏ các chip phần cứng Emotion Engine và Graphics Synthesizer tích hợp vốn được sử dụng trên các phiên bản trước đó) để giảm chi phí phần cứng và cải thiện doanh số bán máy chơi game.

Mặc dù vậy, vẫn có thể bỏ qua một số chi phí phần cứng này. Ví dụ, các hệ thống PS2 trước đây có lõi của CPU PlayStation (PS1) ban đầu được tích hợp vào bộ xử lý I/O để sử dụng cho mục đích kép; nó có thể hoạt động như CPU chính ở chế độ PS1 hoặc nó có thể tự tăng tốc độ xung nhịp để giảm tải I/O ở chế độ PS2. Lõi I/O ban đầu đã được thay thế bằng lõi dựa trên PowerPC trong các hệ thống sau này để phục vụ các chức năng tương tự, mô phỏng các chức năng tương tự như lõi CPU PS1. Tuy nhiên, cách tiếp cận như vậy có thể phản tác dụng, như trường hợp của Super Nintendo Entertainment System (Super NES). Nó đã chọn CPU 65C816 đặc biệt hơn so với các bộ vi xử lý 16-bit phổ biến hơn trên cơ sở rằng nó sẽ cho phép tương thích ngược dễ dàng hơn với Nintendo Entertainment System (NES) ban đầu do khả năng tương thích phần mềm của 65C816 với CPU 6502 ở chế độ mô phỏng, nhưng cuối cùng đã được chứng minh là không khả thi sau khi phần còn lại của kiến trúc Super NES được thiết kế.

## Xem thêm

## Tham khảo

## Liên kết ngoài
*