다양한 입출력 방법
입출력 작업을 수행하기 위해서는
CPU와 장치 컨트롤러가
정보를 주고 받아야 한다.
장치 컨트롤러에 대한 설명은 위 페이지 참고
이에 대한 방법에는 크게
프로그램 입출력, 인터럽트 기반 입출력,
DMA 입출력 방법이 있다.
프로그램 입출력
프로그램 입출력(program I/O)는
프로그램 속 명령어로 입출력장치를
제어하는 방법이다.
이 방법을 사용하기 위해서는
CPU가 입출력장치의
장치 컨트롤러 내 레지스터들을
모두 알아야 한다는 조건이 있다.
이를 알기 위한 방법에는 다음 표와 같이
메모리 맵 입출력 방식과
고립형 입출력 방식이 있다.
구분 | 메모리 맵 입출력 | 고립형 입출력 |
사용하는 주소 공간 | 메모리와 입출력장치가 같은 주소 공간을 사용 | 메모리와 입출력장치가 분리된 주소 공간 사용 |
메모리 주소 공간의 변화 | 축소됨 | 축소되지 않음 |
사용하는 명령어 | 메모리와 입출력장치에 같은 명령어 사용 가능 | 입출력 전용 명령어 사용 |
인터럽트 기반 입출력
인터럽트 기반 입출력
(Interrupt-Driven I/O)이란
위 게시물 속 하드웨어 인터럽트가
발생했을 때, 인터럽트 서비스 루틴을 통해
입출력을 처리하는 방식이다.
이때, 인터럽트가 동시다발적으로 발생했다면
우선순위가 높은 인터럽트부터
CPU가 처리하는 방식을 사용하거나,
인터럽트 요청의 우선순위를 판별하여
CPU에 알려주는 장치인
PIC를 사용하여 처리한다.
PIC(Programmable Interrupt Controller)
DMA 입출력
DMA(Direct Memory Access)는
시스템 버스에 연결된 DMA 컨트롤러라는
하드웨어를 이용하여
입출력장치와 메모리가 CPU를 거치지 않고
상호작용할 수 있는 입출력방식이다.
이러한 방식은 앞서 언급한
프로그램 기반 입출력,
인터럽트 기반 입출력과 달리
CPU의 부담을 덜어준다는 장점이 있지만,
동시 사용이 불가능한 시스템 버스를
사용하기 때문에 CPU가 시스템 버스를
사용할 때는 작동이 안 된다는 문제점이 있다.
입출력 버스
이러한 문제점은
DMA 컨트롤러와 장치 컨트롤러들을
입출력 버스(input/output bus)라는
별도의 버스에 연결하여 해결할 수 있다.
실제로 현대 대부분의 입출력장치는
컴퓨터의 입출력 버스와 연결되어있다.
입출력 버스에는 PCI버스, PCIe버스 등
여러 종류가 있다.
PCI: Peripheral Component Interconnect
PCIe: PCI Express
'개인 학습 > 컴퓨터 구조' 카테고리의 다른 글
24 - 장치 컨트롤러와 장치 드라이버 (0) | 2023.02.03 |
---|---|
23 - RAID (1) | 2023.02.02 |
22 - 플래시 메모리 (0) | 2023.02.02 |
21 - 하드 디스크 (0) | 2023.02.02 |
20 - 캐시 메모리 (0) | 2023.01.30 |