Trình giả lập là phần cứng hoặc phần mềm cho phép một hệ thống máy tính (được gọi là máy chủ) hoạt động giống như một hệ thống máy tính khác (được gọi là máy khách). Trình giả lập thường cho phép hệ thống máy chủ chạy phần mềm hoặc sử dụng các thiết bị ngoại vi được thiết kế dành riêng cho hệ thống máy khách. Khái niệm giả lập đề cập đến khả năng một chương trình máy tính trong một thiết bị điện tử mô phỏng (hoặc bắt chước) một chương trình hoặc thiết bị khác.
1. Giả lập là gì?
Khái niệm giả lập
Trình giả lập là một phần mềm mô phỏng hành vi của thiết bị hoặc hệ điều hành mà không yêu cầu phần cứng thực tế.
Ví dụ, trình giả lập điện thoại Android sẽ là một ứng dụng chạy trên PC nhưng có diện mạo giống và hoạt động như một điện thoại Android. Trình giả lập sau đó có thể tải xuống và cài đặt các ứng dụng Android, cung cấp cho người dùng PC quyền truy cập vào phần mềm mà cần có điện thoại thực để thực hiện.
Trình giả lập thường được sử dụng với 2 mục đích. Đầu tiên, chúng được các nhà phát triển sử dụng để kiểm tra hệ thống mà không cần một đống thiết bị vật lý. Thứ hai, trình giả lập thường được sử dụng để chạy phần mềm trên máy tính mà bình thường không thể thực hiện được.
Ví dụ, phần mềm Bluestacks cho phép giả lập một máy tính bảng Android trên PC Windows. Sau đó, bạn có thể tải xuống và chơi game Plants vs. Zombie 2 trên PC đó. Nếu không có quá trình giả lập này, bạn chỉ có thể chơi Plants vs Zombies 2 nếu thực sự có máy tính bảng Android.
Trình giả lập hoạt động như thế nào?
Trình giả lập có nhiệm vụ chính là chạy một chương trình lạ. Tóm lại, trình giả lập là phần mềm hoạt động giống như một phần cứng. Trong hầu hết các trường hợp, điều này có nghĩa là mô phỏng tất cả các khả năng của một thành phần phần cứng, dưới dạng một thành phần phần mềm. Không chỉ vậy, các thành phần phần cứng được mô phỏng như phần mềm phải hoạt động mà không có lỗi, nếu không trình giả lập sẽ không hoạt động bình thường
Khó khăn trong việc biến các phần cứng tiên tiến và đặc biệt thành phần mềm hoạt động được là nguyên nhân tại sao các trình giả lập cho máy chơi game hiện đại phải mất nhiều thời gian để phát triển. Cần rất nhiều công sức và nỗ lực để quá trình giả lập hoạt động, bởi vì phần cứng hiện đại, như PlayStation 4 hoặc Xbox One, cực kỳ phức tạp.
Quay trở lại ví dụ PlayStation, một trình giả lập phải bắt chước một chip âm thanh đặc biệt, card đồ họa, bộ xử lý trung tâm, v.v..., mà không cần xem xét đến việc mô phỏng các thành phần ngoại vi như driver CD.
Vậy thành phần khó nhất để giả lập là gì?
Bộ xử lý trung tâm
Phần cứng khó giả lập nhất thường là đơn vị xử lý trung tâm (CPU). CPU là thành phần cốt lõi của mọi máy tính, từ điện thoại thông minh đến máy chơi game console. Theo nhiều cách, CPU là thành phần máy tính quan trọng nhất liên quan đến giả lập, vì mọi thành phần khác đều liên kết trực tiếp với nó.
Không phải tất cả các CPU đều giống nhau. Điểm khác biệt chính giữa các CPU nằm trong bộ lệnh điều khiển (instruction set) của chúng. Bộ lệnh điều khiển CPU xác định cách máy tính thực hiện các lệnh mà chương trình đưa ra. Trình giả lập sẽ nhắm mục tiêu vào một hệ thống có bộ lệnh điều khiển khác với máy chủ. Ví dụ, CPU của PlayStation sử dụng bộ lệnh điều khiển được gọi là MIPS, khác với máy tính để bàn hoặc laptop sử dụng x86.
Tại sao trình giả lập lại quá chậm?
Sự khác biệt giữa các bộ lệnh điều khiển là một trong những lý do tại sao các trình giả lập đôi khi hoạt động kém hiệu quả. Mọi lệnh CPU mà trình giả lập nhận được phải dịch từ một bộ lệnh điều khiển này sang bộ lệnh khác. Hơn nữa, quá trình dịch bộ lệnh điều khiển này phải diễn ra rất nhanh chóng.
Trong ví dụ trên, CPU giả lập PlayStation nhận lệnh MIPS, dịch nó thành x86, sau đó chạy trên máy tính của bạn.
Việc dịch các bộ lệnh điều khiển tạo cơ sở cho cách trình giả lập mô phỏng toàn bộ thiết bị bên trong máy tính. Hãy xem nó như một phiên dịch viên trong thế giới thực, chuyển tiếp nhanh chóng cuộc trò chuyện giữa hai người nói 2 ngôn ngữ khác nhau. Ngay cả khi việc dịch diễn ra rất nhanh, tốc độ cũng không thể đạt được như khi giao tiếp trực tiếp. Các ngôn ngữ càng phức tạp, việc dịch sẽ càng chậm