1P by neo 2일전 | favorite | 댓글 1개

가상 머신이란?

  • 가상 머신(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개는 프로그램 카운터(PC), 1개는 조건 플래그(COND) 레지스터임.

명령어 집합

  • 명령어는 CPU가 수행할 기본 작업을 지시하는 명령임.
  • LC-3에는 16개의 오퍼코드가 있으며, 각 명령어는 16비트 길이로 구성됨.
  • 명령어는 오퍼코드와 작업에 필요한 매개변수로 구성됨.

조건 플래그

  • R_COND 레지스터는 최근 계산의 부호를 나타내는 조건 플래그를 저장함.
  • LC-3는 3개의 조건 플래그를 사용하여 계산 결과의 부호를 나타냄.

프로그램 실행

  • 프로그램은 메모리에서 명령어를 로드하고, PC 레지스터를 증가시키며, 오퍼코드를 확인하여 명령어를 수행함.
  • 명령어는 PC를 변경하여 실행 흐름을 제어할 수 있음.

명령어 구현

  • ADD 명령어는 두 숫자를 더하고 결과를 레지스터에 저장함.
  • LDI 명령어는 메모리에서 값을 로드하여 레지스터에 저장함.
  • 각 명령어는 사양에 따라 구현되며, 플래그를 업데이트해야 함.

트랩 루틴

  • LC-3는 키보드 입력, 문자열 출력 등 일반적인 작업을 수행하기 위한 트랩 루틴을 제공함.
  • 각 트랩 루틴은 트랩 코드로 식별되며, TRAP 명령어로 실행됨.
  • 트랩 루틴은 C로 작성되어, OS의 I/O 루틴을 활용함으로써 VM의 성능을 향상시킴.
Hacker News 의견
  • 한 사용자는 커뮤니티 칼리지에서 컴퓨터 과학 입문 수업을 들으며 간단한 CPU 명령어 세트를 설계하고, VM과 어셈블러를 작성하여 어셈블리 프로그램을 실행하는 경험을 했음. 이 과정이 컴퓨터에 대한 많은 것을 이해하게 해주었음

    • FPGA를 위한 실제 CPU 설계부터 간단한 OS와 프로그램 작성까지 모든 컴퓨팅 단계를 이렇게 배울 수 있다고 느꼈음
    • 현대 컴퓨팅의 성능과 보안이 필요하지 않다면 이러한 과정이 놀랍도록 간단함
  • Ben Eater의 브레드보드 CPU 시리즈를 본 후 자신의 CPU를 설계하고 에뮬레이트하고 싶다는 의견이 있었음

    • 시간을 내어 설계하고 싶다는 바람을 표현함
  • 추천받은 책 목록:

    • "Virtual Machines: Versatile Platforms for Systems and Processes" by Smith and Nair - 포괄적인 주제 개요서로 보임
    • "Virtual Machines" by Iain Craig - 언어와 VM에 대한 실습서로 보임
    • "Virtual Machine Design and Implementation in C/C++" by Bill Blunden - 실습 구현서로 보임
    • 이 책들을 읽은 사람이 의견을 추가해주면 도움이 될 것이라고 언급함
  • 교육용 아키텍처인 Brookshear Machine과 Little Computer가 실제와 다르며, 학생들에게 왜곡된 이해를 줄 수 있다는 의견이 있었음

    • 컴퓨터 작동 방식을 배우고자 하는 사람들은 운영체제 과정을 듣는 것이 더 나을 것이라고 제안함
    • 짧은 튜토리얼을 원한다면 "Writing my own bootloader"를 추천함
    • "Write your own VM" 튜토리얼이 나쁘다는 것이 아니라, 다른 주제가 더 유익할 수 있다는 의견임
  • "Virtual Machine"이라는 용어가 현대에서는 하드웨어 가상화 기능을 사용하는 환경을 지칭하는 것이 일반적이라는 의견이 있었음

    • 에뮬레이터와 VM의 차이를 설명하며, 과거에는 용어의 모호함이 있었지만 현재는 명확해졌음을 언급함