🎮장치 컨트롤러와 장치 드라이버
🔑장치 컨트롤러
- 종류가 너무나 많다.
- 장치마다 속도, 데이터 전송 형식 등도 다양하다.
- 정보를 주고받는 방식을 규격화하기 어렵다.
- CPU, 메모리는 데이터 전송률이 높지만, 입출력장치는 낮다.
- 전송률 : 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표
- 전송률의 차이는 CPU와 메모리, 입출력장치 간의 통신을 어렵게 함
- 위와 같은 이유로 입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러라는 하드웨어를 통해 연결된다.
장치 컨트롤러의 역할
-
CPU와 입출력장치 간의 통신 중개
일종의 번역가 역할
-
오류 검출
-
데이터 버퍼링
- 버퍼링이란?
전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
장치 컨트롤러의 구조
- 데이터 레지스터
CPU와 입출력장치 사이에 주고받을 데이터 담기는 레지스터 (버퍼)
RAM을 사용하기도 한다.
- 상태 레지스터
상태 정보 저장
입출력 작업 할 준비가 되었는지,
입출력 작업이 완료되었는지,
입출력 장치에 오류는 없는지 등의 정보
- 제어 레지스터
입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장
- 레지스터에 담긴 값들은 버스를 타고 CPU나 다른 입출력장치로 전달되기도 하고, 장치 컨트롤러에 연결된 입출력장치로 전달된다.
🎨장치 드라이버
- 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
- 장치 컨트롤러 : 하드웨어적인 통로
- 장치 드라이버 : 소프트웨어적인 통로
📡다양한 입출력 방법
📺프로그램 입출력
- 프로그램 속 명령어로 입출력장치를 제어하는 방법
- 입출력 명령어로써 장치 컨트롤러와 상호작용
메모리에 저장된 정보를 하드 디스크에 백업하는 상황
-
하드 디스크에 새로운 정보를 쓰는 것과 같다.
CPU는 제어 레지스터에 쓰기 명령을 보낸다.
-
하드 디스크 컨트롤러는 하드 디스크 상태 확인
→ 준비된 상태라면 상태 레지스터에 표시한다.
3 - 1. CPU는 상태 레지스터 주기적으로 읽으며 하드 디스크 준비 여부 확인
3 - 2. 준비되었다면 백업할 메모리의 정보를 데이터 레지스터에 쓰기
백업이 끝나지 않았으면 1번부터 반복, 끝났다면 작업 종료한다.
- 위처럼 CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이뤄진다.
- 그런데 다양한 명령어들은 어떻게 명령어로 표현되고 메모리에 어떻게 저장되어 있을까??
여기에는 크게 두 가지 방식이 있다.
메모리 맵 입출력
- 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법
- 메모리 접근 명령어 == 입출력장치 접근 명령어
고립형 입출력
- 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 분리하는 방법
- 입출력 전용 명령어를 사용해야 한다.
💥인터럽트 기반 입출력
- 하드웨어 인터럽트는 장치 컨트롤러에 의해 발생한다.
여러 입출력장치에서 인터럽트 동시에 발생할 때 처리
-
인터럽트 발생 순서대로 처리
인터럽트 비트를 비활성화한 채 인터럽트 처리
하지만 인터럽트 중에서도 우선순위를 고려해야 한다.
-
우선순위를 반영한 인터럽트 처리
플래그 레지스터 속 인터럽트 비트가 활성화 된 경우,
인터럽트 비트 비활성화해도 무시할 수 없는 NMI가 발생한 경우 사용
- PIC
- 여러 장치 컨트롤러에 연결
- 장치 컨트롤러의 하드웨어 인터럽트의 우선순위 판별
- CPU에게 먼저 처리할 인터럽트가 무엇인지 알려주는 하드웨어
- NMI 우선순위까지 판별하지는 않는다.
프로그램 입출력, 인터럽트 기반 입출력 공통점
- 입출력 장치와 메모리 간의 데이터 이동은 CPU가 주도
- 이동하는 데이터도 반드시 CPU를 거친다.
과정 1 : 입출력장치 데이터를 하나씩 읽어 레지스터에 적재
과정 2 : 적재한 데이터를 메모리에 저장
🔎DMA 입출력
- 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 방식
- 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요하다.
DMA 입출력 과정
- CPU는 DMA 컨트롤러에 입출력 작업 명령
- DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업 수행. 필요한 경우 메모리에 직접 접근하여 정보를 읽거나 쓴다.
- CPU에 인터럽트를 걸어 작업이 끝났음을 알린다.
DMA의 시스템 버스 이용 방법
- CPU가 사용하지 않을 때 조금씩 이용
- CPU에게 허락을 구하고 이용
입출력 버스
- 불필요하게 DMA가 시스템 버스를 사용하는 경우가 있다.
이를 방지하기 위해 입출력 버스라는 별도의 버스에 연결한다.
이를 통해 시스템 버스의 이용 빈도를 낮출 수 있다.
미션
p. 185의 확인 문제 3번
1 : SRAM
2 : DRAM
3 : DRAM
4 : SRAM
p. 205의 확인 문제 1번
1 : 레지스터
2 : 캐시 메모리
3 : 메모리
4 : 보조기억장치
Ch.07(07-1) RAID의 정의와 종류 정리
RAID 정리