RHUK2

컴퓨터 구조

명령어의 구조와 구분

중앙 처리 장치(CPU)는 이진수로 이루어진 명령어에서 연산 코드와 오퍼랜드를 구분하기 위해 고정된 비트 구조를 사용한다.

  • 연산 코드(Opcode): 수행할 동작을 정의하는 비트 영역임
  • 오퍼랜드(Operand): 연산에 필요한 데이터나 데이터가 저장된 주소를 나타내는 영역임
  • 명령어 구조 예시 (16비트 명령어):
    • 전체 16비트 중 앞의 4비트를 연산 코드로, 뒤의 12비트를 오퍼랜드로 할당하는 구조임
    • 0001 0000 0010 1010 (이진수 예시)
      • 0001: 연산 코드 (예: LOAD 명령)
      • 0000 0010 1010: 오퍼랜드 (예: 메모리 주소 42)
  • 명령어 구분 방식:
    • 명령어의 고정된 길이를 기반으로 특정 비트 위치를 해석함
    • 32비트 CPU는 보통 1워드(32비트)를 기본 명령 단위로 처리함
    • 명령어의 첫 부분에 위치한 연산 코드를 먼저 읽어 뒤따르는 오퍼랜드의 개수와 종류를 파악함

CPU 내부 버스

CPU 내부의 구성 요소들(레지스터, ALU, 제어 장치 등) 간의 데이터 이동은 내부 버스(Internal Bus)를 통해 이루어진다. 제어 장치가 보내는 신호에 따라 특정 레지스터의 값이 버스에 실리고 다른 장치로 전달되는 구조다.

예외와 인터럽트

CPU 외부 또는 내부에서 발생하는 이벤트에 대응하는 방식은 크게 동기적 예외와 비동기적 인터럽트로 나뉜다.

  • 예외(Exception):
    • 동기적(Synchronous) 이벤트임
    • CPU가 명령어를 실행하는 도중 내부적인 문제(0으로 나누기, 잘못된 메모리 접근 등)로 발생함
  • 인터럽트(Interrupt):
    • 비동기적(Asynchronous) 이벤트임
    • 입출력 장치나 타이머 등 외부 하드웨어의 요청에 의해 발생함
  • 처리 공통 단계:
    1. 현재 작업 상태(PC, 레지스터 등)를 스택에 저장함
    2. 인터럽트 벡터 테이블을 참조하여 처리 루틴(ISR)을 실행함
    3. 처리가 완료되면 상태를 복원하고 원래 작업을 재개함

하드웨어 스레드 vs 소프트웨어 스레드

컴퓨터 구조에서 스레드(Thread)는 구현 계층에 따라 물리적 단위와 논리적 단위로 구분된다.

특성하드웨어 스레드소프트웨어 스레드
정의CPU 코어 내의 물리적인 실행 실행 단위임운영체제나 런타임이 관리하는 논리적 작업 단위임
구현 방식하이퍼스레딩(Hyper-Threading) 등 하드웨어 레벨임스레드 라이브러리나 OS 커널에 의해 관리됨
전환 비용매우 낮음 (하드웨어가 직접 전환함)상대적으로 높음 (컨텍스트 스위칭 발생함)
활용 목적코어의 자원 활용도 극대화 및 성능 향상멀티태스킹 구현 및 비동기 작업 처리

고립형 입출력 방식의 주소 공간

고립형 입출력(Isolated I/O) 방식에서 입출력 장치를 위한 주소 공간은 주 메모리(RAM) 주소 공간과 완전히 분리되어 존재한다.

  • 별도의 입출력 전용 주소 체계를 가짐
  • IN, OUT과 같은 전용 명령어를 사용하여 장치에 접근함
  • 메모리 주소 공간을 낭비하지 않는다는 장점이 있음

제어 버스의 구성 신호

제어 버스(Control Bus)는 시스템의 다양한 상태를 동기화하고 명령을 전달하기 위한 개별 신호선들의 집합이다.

  • 메모리 읽기/쓰기(Memory Read/Write): 메모리 접근을 제어하는 신호임
  • I/O 읽기/쓰기(I/O Read/Write): 입출력 장치 접근을 제어하는 신호임
  • 인터럽트 요청/승인(IRQ/IACK): 장치와 CPU 간의 통신 신호임
  • 클락 신호(Clock): 시스템 동기화를 위한 기준 신호임
  • 리셋 신호(Reset): 시스템 초기화를 위한 신호임