Virtual Machine คืออะไร?
- Virtual Machine (VM) คือโปรแกรมที่ทำงานเสมือนเป็นคอมพิวเตอร์ โดยจำลอง CPU และองค์ประกอบฮาร์ดแวร์บางส่วนเพื่อดำเนินการคำนวณทางคณิตศาสตร์ อ่านและเขียนหน่วยความจำ และโต้ตอบกับอุปกรณ์ I/O ได้
- VM ถูกสร้างขึ้นเพื่อจำลองการทำงานของคอมพิวเตอร์เครื่องหนึ่งโดยเฉพาะ หรือเพื่อทำให้การพัฒนาซอฟต์แวร์สะดวกยิ่งขึ้น
- Java Virtual Machine (JVM) เป็นตัวอย่างที่ประสบความสำเร็จ ซึ่งทำให้สามารถรันโปรแกรม Java, Kotlin และ Clojure บนอุปกรณ์หลากหลายประเภทได้
สถาปัตยกรรม LC-3
- LC-3 เป็นสถาปัตยกรรมคอมพิวเตอร์เพื่อการศึกษา ที่แสดงให้เห็นแนวคิดหลักที่ใช้ใน CPU สมัยใหม่
- LC-3 มีตำแหน่งหน่วยความจำ 65,536 ตำแหน่ง โดยแต่ละตำแหน่งเก็บค่า 16 บิต
- มีรีจิสเตอร์ 10 ตัว ในจำนวนนี้ 8 ตัวเป็นรีจิสเตอร์อเนกประสงค์ 1 ตัวเป็น program counter (PC) และอีก 1 ตัวเป็นรีจิสเตอร์ condition flags (COND)
ชุดคำสั่ง
- คำสั่งคือชุดคำสั่งที่บอกให้ CPU ทำงานพื้นฐานบางอย่าง
- LC-3 มี opcode 16 แบบ และแต่ละคำสั่งมีความยาว 16 บิต
- คำสั่งประกอบด้วย opcode และพารามิเตอร์ที่จำเป็นต่อการทำงาน
Condition Flags
- รีจิสเตอร์ R_COND ใช้เก็บ condition flags ที่บ่งบอกเครื่องหมายของผลการคำนวณล่าสุด
- LC-3 ใช้ condition flags 3 ตัวเพื่อแสดงเครื่องหมายของผลลัพธ์จากการคำนวณ
การรันโปรแกรม
- โปรแกรมจะโหลดคำสั่งจากหน่วยความจำ เพิ่มค่ารีจิสเตอร์ PC และตรวจสอบ opcode เพื่อดำเนินคำสั่ง
- คำสั่งสามารถควบคุมลำดับการทำงานได้โดยการเปลี่ยนค่า PC
การติดตั้งคำสั่ง
- คำสั่ง ADD จะนำตัวเลขสองตัวมาบวกกันแล้วเก็บผลลัพธ์ไว้ในรีจิสเตอร์
- คำสั่ง LDI จะโหลดค่าจากหน่วยความจำแล้วเก็บไว้ในรีจิสเตอร์
- คำสั่งแต่ละตัวจะถูกติดตั้งตามข้อกำหนด และต้องอัปเดต flags ด้วย
Trap Routines
- LC-3 มี trap routines สำหรับงานทั่วไป เช่น การรับข้อมูลจากคีย์บอร์ดและการแสดงผลสตริง
- trap routine แต่ละตัวระบุด้วย trap code และทำงานผ่านคำสั่ง TRAP
- trap routines เขียนด้วยภาษา C และช่วยเพิ่มประสิทธิภาพของ VM โดยอาศัย I/O routines ของ OS
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ผู้ใช้คนหนึ่งเคยเรียนวิชาเกริ่นนำวิทยาการคอมพิวเตอร์ที่วิทยาลัยชุมชน โดยได้ออกแบบชุดคำสั่ง CPU แบบง่าย ๆ และเขียน VM กับแอสเซมเบลอร์เพื่อรันโปรแกรมแอสเซมบลี ประสบการณ์นี้ช่วยให้เข้าใจเรื่องคอมพิวเตอร์ได้มาก
มีความเห็นว่าหลังจากดูซีรีส์ Breadboard CPU ของ Ben Eater แล้ว ก็อยากออกแบบและจำลอง CPU ของตัวเอง
รายชื่อหนังสือที่มีคนแนะนำ:
มีความเห็นว่าสถาปัตยกรรมเพื่อการศึกษาอย่าง Brookshear Machine และ Little Computer แตกต่างจากของจริง และอาจทำให้นักศึกษาเข้าใจแบบบิดเบือนได้
มีความเห็นว่าคำว่า "Virtual Machine" ในปัจจุบันมักใช้เรียกสภาพแวดล้อมที่ใช้ความสามารถด้าน virtualization ของฮาร์ดแวร์