CS지식/컴퓨터구조

컴퓨터구조 Ch.8 입출력장치

뮤츠 2023. 1. 17. 23:36

8-1. 장치 컨트롤러와 장치 드라이버

  • 장치컨트롤러(device controller, 입출력제어기(I/O controller), 입출력 모듈(I/O Module))를 사용하는 이유

    1. 입출력 장치의 종류가 너무나 다양하다.
    2. 일반적으로, CPU와 입출력장치의 데이터 전송률이 낮다.
  • 장치컨트롤러의 역할
    • CPU와 입출력장치 간의 통신 중개
    • 오류 검출
    • 데이터 버퍼링

  • 장치 컨트롤러의 구성
    • 데이터 레지스터 CPU와 입출력 장치 사이에 주고받은 데이터가 저장.
    • 상태 레지스터 입출력장치의 상태 정보가 저장 (오류여부, 작업여부 등)
    • 제어 레지스터 입출력 장치가 수행할 내용에 대한 제어 정보와 명령을 저장.

  • 장치 드라이버(device driver)

장치 컨트롤러의 동작을 감지하고 제어하여 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램.

8-2. 다양한 입출력 방법

  • 프로그램 입출력 (programmed I/O)
    • 프로그램 속 명령어로 입출력 장치를 제어하는 방법.
    • 메모리 맵 입출력 (memory-mapped I/O) CPU가 메모리, 입출력장치의 주소 공간을 따로 구분하지 않고 할당하는 방법. (ex : 컴퓨터가 1024개의 주소를 저장할 수 있다면, 512개에는 메모리 주소 공간을, 나머지 512개에는 입출력 주소 공간을 할당)


    • 고립형 입출력 (isolated I/O)
      • 입출력장치 전용 버스가 따로 존재하며, 활성화되는 같은 주소라도 버스 종류에 따라 해당되는 메모리/입출력장치가 달라짐.
      • 입출력 전용 명령어 사용.
      • 메모리 주소 공간이 축소되지 않음.

  • 인터럽트 기반 입출력

    • 장치 컨트롤러가 입출력 작업이 완료시, CPU에게 인터럽트 요청 신호를 보내 작업을 진행하는 방식.

    • 여러 인터럽트 요청의 우선순위를 정하여 다중 인터럽트를 처리해야함. PIC(Programmable Interrupt Controller) 사용.
      1. PIC가 장치 컨트롤러에서 인터럽트 요청 신호를 받아들임.
      2. PIC는 인터럽트 우선순위를 판단, CPU에서 처리해야 할 인터럽트 요청 신호 전송.
      3. CPU는 PIC에 인터럽트 확인 신호 전송.
      4. PIC는 데이터 버스를 통해 CPU에 인터럽트 벡터 전송.
      5. CPU는 인터럽트 벡터로 인터럽트 요청의 주체 확인, 해당 장치의 인터럽트 서비스 루틴 실행.

  • DMA 입출력 (Direct Memory Access)

    • CPU의 과부하를 방지하기 위해, 입출력 장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식.
    • 별도의 DMA 컨트롤러 필요.

    • DMA 입출력 과정
      1. CPU는 DMA 컨트롤러에 입출력 장치의 주소, 수행할 연산, 메모리의 주소 등과 같은 정보로 입출력 작업 명령.
      2. DMA 컨트롤러는 CPU 대신 컨트롤러와 상호작용하며 입출력 작업을 수행, 필요한 경우 메모리에 직접 접근.
      3. 입출력 작업 종료시, DMA컨트롤러는 CPU에 인터럽트를 걸어 작업종료를 알림.

    • DMA컨트롤러는 시스템 버스를 이용하지만, CPU와 동시에 쓸 수 없기에 CPU가 이용하지 않는 경우에 조금씩 사용하거나, CPU의 허락을 받고 집중적으로 사용.
    • But DMA 컨트롤러가 장치 컨트롤러와 연결할 입출력 버스를 별도로 이용하기도 함. 현대 대부분 컴퓨터에는 입출력 버스 존재.
    • PCI(Peripheral Component Interconnect) 버스, PCI Express 버스 등 다양한 종류가 존재.

 

참고 : 혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)