RHUK2

컴퓨터 구조

cpu는 이진수로 이루어진 명령어에서 연산코드와 오퍼랜드를 어떻게 구분하지?

  • CPU는 명령어의 고정된 비트 구조를 사용하여 연산코드와 오퍼랜드를 구분한다.
  • 명령어는 보통 워드 크기와 동일하거나 워드의 배수로 정해진다. 예를 들어, 32비트 CPU는 32비트(1워드) 명령어를 처리하며, 더 복잡한 명령어는 2워드(64비트)일 수도 있다.

예시:

[연산코드 (8비트)] [오퍼랜드1 (12비트)] [오퍼랜드2 (12비트)]

cpu 내부에도 버스가 존재하는가?

CPU 내부의 레지스터들은 제어장치의 지시에 따라 내부 버스를 통해 제어되고, 데이터의 이동이 이루어진다.

예외(동기) vs 하드웨어 인터럽트(비동기)

  • 인터럽트 발생 시 처리방식이 비슷하다.

    1. 상태 저장: CPU는 인터럽트나 폴트가 발생하면 현재 실행 중인 작업의 상태(레지스터, 프로그램 카운터 등)를 스택에 저장한다.
    2. 처리 루틴 실행: 인터럽트 벡터 테이블 또는 예외 처리 테이블을 참조해 적절한 처리 루틴(인터럽트 서비스 루틴 또는 예외 처리 핸들러)을 실행한다.
    3. 상태 복원: 처리가 끝나면 저장해 둔 상태를 복원하고, 원래 중단된 작업을 이어서 수행한다.
  • 발생 원인이 다르다.

    • 동기: 이벤트가 CPU의 명령 실행과 직접적인 관련이 있을 때 발생한다. 즉, CPU가 특정 명령을 실행할 때 발생하는 이벤트이다. 그 명령어가 실행되지 않았다면 해당 이벤트도 발생하지 않는다.
    • 비동기: 이벤트가 CPU의 명령 실행과는 독립적으로, 외부 요인에 의해 언제든 발생할 수 있다. 즉, CPU가 현재 무슨 작업을 하고 있든 상관없이 외부 장치에서 발생하는 이벤트이다.

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

특성하드웨어 스레드소프트웨어 스레드
정의CPU 또는 GPU 내의 물리적인 스레드프로그램 내의 논리적 실행 단위
생성 비용낮음 (프로세서에 통합되어 있음)상대적으로 높음 (OS와 프로그래밍 언어에 따라 다름)
관리하드웨어에 의해 자동으로 관리운영체제나 런타임에 의해 관리
전환 비용매우 낮음 (하드웨어 레벨에서의 전환)상대적으로 높음 (컨텍스트 스위칭 발생)
병렬성높은 병렬성 제공 (다수의 스레드 가능)병렬성을 지원하지만, OS에 따라 제한적일 수 있음
상태 저장/복원하드웨어 레벨에서 수행, 일반적으로 메모리 사용소프트웨어에서 명시적으로 수행해야 함
활용도주로 CPU/GPU의 성능 향상 목적멀티태스킹, 비동기 작업 등 다양한 용도
Intel의 Hyper-ThreadingJava의 스레드, Python의 스레드

고립형 입출력 방식에서 입출력 장치를 위한 주소공간은 어디에 존재하는가?

입출력 장치를 위한 메모리는 입출력 장치 내부에 있거나, 장치의 레지스터와 같은 하드웨어 구성 요소에 포함된다.

시스템 버스 중 제어 버스는 여러가지 신호선이 따로 존재하는가?

제어 버스는 데이터 버스나 주소 버스처럼 단일 신호가 아니라, 다양한 제어 신호들이 결합된 구조이다.

  • 메모리 읽기(Memory Read): CPU가 메모리에서 데이터를 읽을 때 사용하는 신호선
  • 메모리 쓰기(Memory Write): CPU가 데이터를 메모리에 기록할 때 사용하는 신호선
  • I/O 읽기(I/O Read): CPU가 입출력 장치에서 데이터를 읽을 때 사용하는 신호선
  • I/O 쓰기(I/O Write): CPU가 데이터를 입출력 장치에 보낼 때 사용하는 신호선
  • 인터럽트 요청(Interrupt Request): 하드웨어 장치가 CPU에 인터럽트를 요청할 때 사용하는 신호선
  • 인터럽트 승인(Interrupt Acknowledge): CPU가 인터럽트 요청을 수락하고 처리할 때 사용하는 신호선
  • 버스 요청(Bus Request): DMA 같은 장치가 시스템 버스를 사용하려고 요청할 때 사용하는 신호선
  • 버스 승인(Bus Grant): CPU가 버스 요청을 승인해 DMA 장치가 버스를 사용할 수 있도록 할 때 사용하는 신호선
  • 클락 신호(Clock Signal): 시스템의 동기화를 위한 신호선
  • 리셋 신호(Reset): 시스템을 초기화할 때 사용하는 신호선