-
Notifications
You must be signed in to change notification settings - Fork 0
학습 기록 | w4 지현
#장치 컨트롤러 #장치 드라이버
💡 입출력 장치를 다루기 어려운 이유
- 종류가 너무 많음
- 정보를 주고받는 방식을 규격화하기가 어렵다
- CPU와 메모리의 데이터 전송률은 높지만 입출력 장치의 데이터 전송률은 낮다.
→ 입출력 장치는 컴퓨터와 직접 연결 X
→ 장치 컨트롤러를 통해 연결
device controller
= 입출력 제어기 I/O controller
= 입출력 모듈 I/O module
- 입출력 장치는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고받는다.
장치 컨트롤러의 역할
- CPU와 입출력 장치 간의 통신 중개 (번역가 역할)
- 오류 검출
- 데이터 버퍼링
- CPU와 입출력장치와의 전송률 차이를 버퍼링으로 완화
버퍼링
- 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를
버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
장치 컨트롤러의 구조
- 데이터 레지스터 data register
- 주고받을 데이터가 담기는 레지스터(버퍼)
- RAM을 사용하기도 함
- 상태 레지스터 status register
- 상태 정보 저장
- 입출력 작업을 할 준비 완료, 입출력 작업 완료, 오류
- 상태 정보 저장
- 제어 레지스터 control register
- 수행할 내용에 대한 제어 정보와 명령 저장
device driver
- 장치 컨트롤러의 동작을 감지하고 제어하는
프로그램 - 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 함
- 실행 과정에서 메모리에 저장
-
운영체제가 장치 드라이버를 인식하고 실행
장치 컨트롤러 → 하드웨어적 통로
장치 드라이브 → 소프트웨어적 통로
#프로그램 입출력 #메모리 앱 입출력 #고립형 입출력 #인터럽트 기반 입출력 #DMA 입출력 #입출력 버스
programmed I/O
- 프로그램 속 명령어로 입출력장치를 제어하는 방법
- 입출력 명령어로써 장치 컨트롤러와 상호작용
프로그램 입출력 방식
- CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어짐
| 메모리 맵 입출력 memory-mapped I/O | 고립형 입출력 isolated I/O |
|---|---|
| 메모리와 입출력장치는 같은 주소 공간 사용 | 메모리와 입출력장치는 분리된 주소 공간 사용 |
| 1024 = 메모리 512 + 입출력장치 512 | 1024 = 메모리 1024 = 입출력장치 1024 |
| 메모리 주소 공간이 축소됨 | 메모리 주소 공간이 축소되지 않음 |
| 메모리와 입출력장치에 같은 명령어 사용 가능 | 입출력 전용 명령어 사용 |
interrupt-Driven I/O
-
하드웨어 인터럽트는 장치 컨트롤러에 의해 발생
- 장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에게 인터럽트 요청 신호를 보내면 CPU는 하던 일을 잠시 백업하고 인터럽트 서비스 루틴을 실행
-
우선순위를 반영하여 다중인터럽트를 처리
프로그래머블 인터럽트 컨트롤러(PIC; Programmable Interrupt Controller)
- 여러 장치 컨트롤러에 연결되어 하드웨어 인터럽트 요청들의 우선순위 판별 후 CPU에게 알려줌
- 무시할 수 없는 인터럽트인 NMI까지 우선순위를 판별하지 않음(가장 높아서 판별 불필요)
💡 폴링 polling
- CPU가 주기적으로 장치 컨트롤러의 상태 레지스터를 확인하여 입출력장치의 상태를 확인
- 입출력 장치의 상태는 어떤지, 처리할 데이터가 있는지를 주기적으로 확인하는 방식
Direct Memory Access
- 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용
- 직접 메모리에 접근할 수 있는 입출력 기능
- 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요
- CPU는 입출력 작업의 시작과 끝만 관여
입출력 버스
input/output bus
- 장치 컨트롤러들이 시스템 버스가 아닌 입출력 버스로 DMA 컨트롤러에 연결
- 시스템 버스의 사용 빈도 줄임
ex) PCI(Peripheral Component Interconnect) 버스, PCI Express(PCIe) 버스
- CPU가 사용하는 가상 메모리 주소를 메모리 관리 장치(MMU)가 물리 주소로 변환
- 캐시에 해당 주소에 대한 데이터가 있는지 확인할 때 캐시에 데이터를 저장하는 방식에 따라 물리 주소를 다르게 해석할 수 있음
-
직접 매핑 Direct Mapping
- 메모리의 특정 블록을 특정 캐시에만 매핑
- 캐시 메모리가 대용량인 경우에만 사용
메모리 주소가 1~100일 경우 모듈러 나머지 연산을 사용하여
1 ~ 10 주소 → 1 11 ~ 20 주소 → 2 … 91 ~ 100 → 10- 장점 : 구현이 단순하고 접근속도 빠름
- 단점
- 교체가 자주 일어나 적중률 저조
- 동일한 캐시 블록에 매핑되는 다른 메모리 블록을 번갈아 참조할 때 블록 충돌 발생 (A, B, A, B …)
-
연관 매핑 Assosiative Mapping
-
순서를 일치시키지 않고 관련있는 캐시와 메모리 매핑
-
메모리의 컨텐츠가 캐시의 어느 위치에나 올라갈 수 있음
-
장점 : 적중률이 높음
-
단점 : 접근 속도 느림, 고가의 메모리 필요
-
-
직접 연관 매핑 Set Assosiative Mapping
-
직접 매핑 + 연관 매핑
-
순서를 일치시키고 저장하지만 일정 그룹을 두어 그룹 내에서 연관 매핑
1 ~ 50 → 1 ~ 5 51 ~ 100 → 6 ~ 10 -
장점 : 블록화로 효율적인 검색 가능
- 저장위치에 제약이 있지 않아 적중률이 크게 떨어지지 않음
-
| 직접 매핑 | 연관 매핑 | 직접 연관 매핑 | |
|---|---|---|---|
| 접근속도 | 빠름 | 느림 | 보통 |
| 적중률 | 낮음 | 높음 | 보통 |
DMA 컨트롤러도 PIC 동시에 사용가능?
-
장치 컨트롤러의 역할로 옳지 않은 것을 고르시오.
- CPU와 입출력장치 간의 통신을 중개한다.
- 연결된 입출력장치에 문제가 없는지 오류를 검출한다.
- 데이터 레지스터와 상태 레지스터, 제어 레지스터로 구성된다.
- 버퍼링으로 전송률이 낮은 CPU와의 차이를 완화한다.
-
장치 컨트롤러가 ( A ) 적 통로라면, 장치 드라이브는 ( B ) 적 통로라고 할 수 있다.
-
DMA 컨트롤러는 CPU의 부담을 줄이기 위해 등장했습니다. 이 방식의 한계와 해결하기 위한 방법을 설명하시오.
정답
1. 4
2. 하드웨어적, 소프트웨어적
3. CPU, 메모리, DMA 컨트롤러, 장치 컨트롤러가 같은 버스를 공유할 경우 DMA를 위해 시스템 버스를 두번 사용하게 되는 부작용이 있다.
→ 때문에 입출력 버스 라는 별도의 버스에 연결하여 시스템 버스이ㅡ 사용 빈도를 줄일 수 있다.