본문 바로가기
CS/컴퓨터 구조

다양한 입출력 방법 [혼공컴구]

by 블로블로글 2023. 11. 30.

1. 프로그램 입출력

  - 프로그램 속 명령어로 입출력장치를 제어하는 방법입니다.

  - 입출력 명령어를 만나면 CPU는 입출력장치에 연결된 장치 컨트롤러와 상호작용하면 입출력 잡업을 수행

  - 메모리 맵 입출력

    - 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법

      - 1024개의 주소를 표현하는 공간에 512는 메모리를 위한 공간, 512는 입출력을 위한 공간으로 할당

      - CPU는 메모리의 주소들이나 장치 컨트롤러의 레지스터들이나 모두 똑같이 메모리 주소 대하듯 할 수 있음

      - 따라서 메모리와 입출력 장치에 접근하는 명령어도 다르게 쓸 필요가 없음

  - 고립형 입출력

    - 메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리

    - 입출력과 메모리 접근을 위한 선을 분리

    - 입출력과 메모리에 접근하는 명령어를 다르게 사용함

    - 입출력과 메모리는 분리된 주소 공간을 사용

    - 따라서 입출력과 메모리 모두 1024개의 주소공간 기준으로 1024개의 주소 공간에 접근 가능

  - 인터럽트 기반 입출력

    - 장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에게 인터럽트 요청 신호를 보내면 CPU는 하던 일을 잠시 백업하고 인터럽트 서비스 루틴을 실행

    - 폴링

      - CPU가 주기적으로 장치 컨트롤러의 상태 레지스터를 확인하며 입출력장치의 상태를 확인하는 방법

      - 인터럽트 방식에 비해 CPU의 부담이 큼

    - 여러 개의 인터럽트가 발생 시엔 인터럽트의 우선순위가 높은 순서대로 처리

    - A의 인터럽트 서비스 루틴이 실행 중에 우선순위가 높은 B의 인터럽트 서비스가 발생 시에 A를 실행하던 중 B를 먼저 실행시킴

      - 인터럽트 비트를 비활성화해도 무시할 수 없는 NMI가 발생하는 경우에 위의 방식으로 처리함

    - 우선순위를 반영하여 다중 인터럽트를처리하는 방법

      - 프로그래머블 인터럽트 컨트롤러 (PIC)

        - 여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 처리해야 할 인터럽트를 알려줌

        - 보통 PIC를 두 개 이상의 계층적으로 구성하여 더욱 복잡한 인터럽트를 관리할 수 있게 함

        - PIC는 NMI를 제외한 하드웨어 인터럽트의 우선순위만 판별

          - NMI는 우선 순위가 가장 높아 PIC가 따로 우선순위를 판별하지 않음

    - DMA 입출력

      - 입출력장치와 메모리 사이에 전송되는 모든 데이터가 반드시 CPU를 거친다면 시간 지연이 심해짐

      - 따라서 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식인 DMA가 등장

      - 시스템 버스에 DMA라는 하드웨어를 추가해서 사용

      - CPU가 DMA에 입출력 작업을 명령하면 DMA는 CPU를 거치지 않고 메모리와 입출력 장치 사이에 작업을 관리하고 완료되면 CPU에 인터럽트 신호를 보내줌

      - DMA는 공용자원인 시스템 버스를 사용하기 때문에 CPU가 시스템 버스를 사용하지 않을 떄 마다 조금씩 시스템 버스를 사용하거나, CPU가 일시적으로 시스템 버스를 사용하지 않도록 허락을 구하고 시스템 버스를 집중적으로 이용

        - 사이클 스틸링

          - DMA의 시스템 버스 이용 방법

          - CPU 입장에서는 마치 버스에 접근하는 주기를 도둑 맞는 것 같다해서 붙여진 이름

      - 입출력 버스

        - DMA가 시스템 버스를 자주 사용하면 CPU가 그만큼 시스템 버스를 사용하지 못함

        - 입출력 버스라는 별도의 버스에 DMA와 장치 컨트롤러들을 연결하여 해결

        - 장치 컨트롤러들과 DMA 간의 데이터는 입출력 버스를 통해 움직이므로 시스템 버스를 이용할 필요가 없어짐

        - PCI 버스, PCI Express(PCle) 버스 등이 있음

      - 입출력 채널

        - 입출력 전용 CPU

        - 입출력 프로세서, 입출력 채널이 탑재된 제품들이 출시

          - 입출력 채널는 입출력 전용 CPU로 입출력 명령어를 인출, 해석, 실행하며 메모리에도 직접 접근함

          - 입출력 채널이 있는 컴퓨터의 CPU는 입출력 명령어를 실행하지 않고, CPU가 입출력 채널에게 메모리에 저장된 특정 명령어를 처리하라고 지시만 내리고, 명령어의 인출, 해석, 실행은 입출력 채널이 처리한 후 CPU에 인터럽트 신호를 보내줌

 

'CS > 컴퓨터 구조' 카테고리의 다른 글

장치 컨트롤러와 장치 드라이버 [혼공컴구]  (0) 2023.11.30
RAID [혼공컴구]  (1) 2023.11.30
플래시 메모리 [혼공컴구]  (0) 2023.11.30
하드디스크 [혼공컴구]  (0) 2023.11.30
캐시 메모리 [혼공컴구]  (0) 2023.11.30