Máy ảo là gì?
- Máy ảo (VM) là một chương trình hoạt động như một máy tính. Nó mô phỏng CPU và một số thành phần phần cứng để có thể thực hiện phép toán số học, đọc và ghi vào bộ nhớ, cũng như tương tác với các thiết bị I/O.
- VM được tạo ra để tái hiện hoạt động của một máy tính cụ thể hoặc để giúp việc phát triển phần mềm trở nên dễ dàng hơn.
- Java Virtual Machine (JVM) là một ví dụ thành công, cho phép chạy các chương trình Java, Kotlin, Clojure trên nhiều thiết bị khác nhau.
Kiến trúc LC-3
- LC-3 là một kiến trúc máy tính phục vụ mục đích giáo dục, minh họa các khái niệm chính được sử dụng trong CPU hiện đại.
- LC-3 có 65.536 vị trí bộ nhớ, và mỗi vị trí lưu trữ một giá trị 16 bit.
- Có 10 thanh ghi, trong đó 8 thanh ghi là thanh ghi đa dụng, 1 thanh ghi là bộ đếm chương trình (PC), và 1 thanh ghi là thanh ghi cờ điều kiện (COND).
Tập lệnh
- Lệnh là chỉ thị cho CPU thực hiện các thao tác cơ bản.
- LC-3 có 16 opcode, và mỗi lệnh có độ dài 16 bit.
- Lệnh được cấu thành từ opcode và các tham số cần thiết cho thao tác.
Cờ điều kiện
- Thanh ghi R_COND lưu các cờ điều kiện biểu thị dấu của phép tính gần nhất.
- LC-3 sử dụng 3 cờ điều kiện để biểu thị dấu của kết quả tính toán.
Thực thi chương trình
- Chương trình nạp lệnh từ bộ nhớ, tăng thanh ghi PC, kiểm tra opcode và thực thi lệnh.
- Lệnh có thể thay đổi PC để điều khiển luồng thực thi.
Triển khai lệnh
- Lệnh ADD cộng hai số và lưu kết quả vào thanh ghi.
- Lệnh LDI nạp một giá trị từ bộ nhớ vào thanh ghi.
- Mỗi lệnh được triển khai theo đặc tả và cần cập nhật các cờ.
Trap routine
- LC-3 cung cấp các trap routine để thực hiện những tác vụ phổ biến như nhập từ bàn phím, xuất chuỗi, v.v.
- Mỗi trap routine được nhận diện bằng một trap code và được thực thi bằng lệnh TRAP.
- Các trap routine được viết bằng C, giúp cải thiện hiệu năng của VM bằng cách tận dụng các routine I/O của hệ điều hành.
1 bình luận
Ý kiến trên Hacker News
Một người dùng cho biết khi học lớp nhập môn khoa học máy tính ở community college, họ đã thiết kế một tập lệnh CPU đơn giản, viết VM và assembler để chạy các chương trình assembly. Quá trình này đã giúp họ hiểu được rất nhiều điều về máy tính
Có ý kiến nói rằng sau khi xem series CPU trên breadboard của Ben Eater, họ muốn tự thiết kế và mô phỏng CPU của mình
Danh sách sách được đề xuất:
Có ý kiến cho rằng các kiến trúc dùng cho giáo dục như Brookshear Machine và Little Computer khác xa thực tế và có thể khiến sinh viên hiểu sai vấn đề
Có ý kiến cho rằng ngày nay thuật ngữ "Virtual Machine" thường được dùng để chỉ môi trường sử dụng các tính năng ảo hóa phần cứng