본문 바로가기

카테고리 없음

컴퓨터 구조 - 입출력 시스템,장치 컨트롤러 등

💠 장치 컨트롤러: CPU와 입출력장치를 잇는 통로

컴퓨터에서 입출력장치는 메모리보다 다루기 까다롭습니다. 그 이유는 다음과 같습니다.

  • 이유 1: 입출력 장치는 종류도 많고, 속도나 데이터 형식이 달라 규격화가 어려움
  • 이유 2: CPU와 메모리의 데이터 전송률은 높지만, 입출력장치는 매우 낮음

예: CPU는 1초에 1000번 말하고 입출력장치는 1초에 1번 말하는 셈 → 의사소통 어려움 발생

이 문제를 해결하기 위해 등장한 것이 바로 장치 컨트롤러(Device Controller)입니다.

✅ 장치 컨트롤러란?

  • 입출력 제어기 또는 입출력 모듈 등으로 불림
  • 각 입출력장치는 고유의 장치 컨트롤러와 연결되어 컴퓨터 내부와 정보 교환
  • 1개의 장치 컨트롤러가 여러 입출력장치를 제어하기도 함

🛠 장치 컨트롤러의 주요 역할

  • CPU와 입출력장치 간의 통신 중개
  • 오류 검출
  • 데이터 버퍼링

버퍼링이란? 전송률이 서로 다른 장치 사이에서 버퍼(임시 저장 공간)를 통해 데이터를 모아 전달하는 방식입니다.
예: 데이터를 조금씩 모았다가 한 번에 전달하거나, 한 번에 받은 데이터를 조금씩 내보내기

📦 장치 컨트롤러의 내부 구성

  • 데이터 레지스터: 주고받을 데이터 저장 (버퍼 역할)
  • 상태 레지스터: 장치의 준비 상태, 오류 여부, 완료 여부 저장
  • 제어 레지스터: 장치에 내릴 명령, 제어 정보 저장

레지스터의 정보는 버스를 통해 CPU나 메모리 또는 입출력장치로 전달됩니다.

🧠 장치 드라이버란?

장치 컨트롤러를 제어하고 감지하는 소프트웨어입니다. 하드웨어와 소프트웨어 사이를 잇는 통로 역할을 하며, 실행 시 메모리에 로딩됩니다.


💠 다양한 입출력 방식

1. 프로그램 입출력

CPU가 프로그램 명령어를 실행하면서 입출력 관련 명령을 만나면, 장치 컨트롤러와 직접 상호작용하여 입출력 수행

📌 메모리 맵 입출력

메모리 주소 공간과 입출력 장치의 주소 공간을 하나로 통합해서 접근

📌 고립형 입출력

메모리와 입출력 장치를 위한 주소 공간을 완전히 분리하여 관리

2. 인터럽트 기반 입출력

CPU가 명령을 내린 뒤 입출력 장치가 작업 완료 시 인터럽트를 보내 알려주는 방식

  1. CPU → 장치 컨트롤러에 작업 요청
  2. 컨트롤러 → 입출력장치와 통신
  3. CPU는 다른 작업 수행
  4. 작업 완료 시 컨트롤러 → CPU에 인터럽트 신호
  5. CPU는 하던 일 백업 후 인터럽트 서비스 루틴 실행

📌 인터럽트 우선순위

PIC(Programmable Interrupt Controller)를 사용하여 우선순위 결정

PIC의 동작 과정
  1. PIC가 장치 컨트롤러로부터 인터럽트 요청 수신
  2. 우선순위 판단 후 CPU에 전달
  3. CPU가 확인 신호를 보내면
  4. PIC는 인터럽트 벡터를 CPU에 전송
  5. CPU는 해당 장치의 ISR(인터럽트 서비스 루틴)을 실행

NMI (Non-Maskable Interrupt): 무시할 수 없는 인터럽트로 즉시 처리

3. DMA 입출력 (Direct Memory Access)

CPU를 거치지 않고 장치 컨트롤러와 메모리가 직접 통신하는 방식입니다.

  1. CPU가 DMA 컨트롤러에 작업 명령 (주소, 동작 등)
  2. DMA 컨트롤러가 직접 메모리와 통신하여 입출력 수행
  3. 작업 완료 시 CPU에 인터럽트를 보내 알림

예시 - 하드 디스크 백업

  1. CPU → DMA 컨트롤러에 디스크 주소 및 메모리 주소 전달
  2. DMA가 직접 메모리와 디스크 컨트롤러를 연결해 백업 수행
  3. 작업 완료 후 CPU에 인터럽트

사이클 스틸링: 시스템 버스를 동시에 쓸 수 없기 때문에, DMA가 CPU 사이클을 도둑질하듯 사용

4. 입출력 버스

DMA와 입출력장치가 시스템 버스를 너무 많이 쓰면 CPU가 버스를 못 씀 → 해결책은 입출력 버스

  • PCI 버스
  • PCIe(PCI Express) 버스

5. 입출력 채널 (IOP)

더 발전된 형태로, 입출력 전용 프로세서가 입출력 명령어 인출부터 실행까지 수행


정리: 입출력은 CPU와 성능 차이, 다양한 장치 등의 이유로 복잡하지만,
이를 해결하기 위한 여러 하드웨어(장치 컨트롤러, DMA, PIC 등)와 방식(버퍼링, 인터럽트, IOP 등)이 존재합니다.