728x90
장치 컨트롤러와 장치 드라이버
들어가기 앞서,
입출력장치는 CPU,메모리보다 다루기가 더 까다롭다!!
- 첫째, 입출력장치에는 종류가 너무 많다
- 둘째, 일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다
위의 이유로 장치 컨트롤러를 통해 컴퓨터와 연결 된다
장치 컨트롤러의 역할
- CPU와 입출력장치 간의 통신중개 (일종의 번역가 역할 수행)
- 오류 검출
- 데이터 버퍼링
- 버퍼링 : 전송률이 높은 장치와 낮은 장치 사이에서 주고받는 데이터
- 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
장치 컨트롤러의 역할
- 버스에 연결 되어서 데이터 레지스터,상태 레지스터,제어 레지스터로 구성되어 있다
- 데이터 레지스터
- CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터(버퍼)
- RAM을 사용하기도 한다 - 상태 레지스터
- 상태 정보를 저장
- 입출력 장치가 입출력 작업을 할 준비가 되었는지
- 입출력 작업이 완료되었는지
- 입출력장치에 오류는 없는지 등의 상태 정보 - 제어 레지스터
- 입출력장치가 수행할 내용에 대한 제어 정보
장치 드라이버
- 장치 컨트롤러의 동작을 감지하고 제어하는 프로그램장치 컨트롤러가 입출력장치를 연결하기 위한 하드웨어적인 통로라면,
장치 드라이버는 입출력장치를 연결하기 위한 소프트웨어적인 통로
그렇다면 다양한 입출력 방법은?!
1.프로그램 입출력
- 프로그램 속 명령어로 입출력장치를 제어하는 방법
- 입출력 명령어로써 장치 컨트롤러와 상호작용
- CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어진다
- 근데 CPU가 이 레지스터들(입출력장치의 주소)을 어떻게 알까? - 메모리 맵 입출력
- 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법 - 고립형 입출력
- 메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리하는 방법
- 입출력 전용 명령어 사용
2.인트럽트 기반 입출력
- 하드웨어 인터럽트의 개념
- 하드웨어 인터럽트는 장치 컨트롤러에 의해서 발생 - 플래그 레지스터 속 인터럽트 비트
- 동시다발적인 인터럽트1 : 플래그 레지스터 속 인터럽트 비트를 비활성화한 채 인터럽트를 처리하는 경우,
인터럽트 발생 순서대로 처리 할 수 있다
- 동시다발적인 인터럽트2 : NMI(Non-maskable interrupt)가 발생한 경우,
플래그 레지스터 속 인터럽트 비트가 활성화 되어 있는 경우에는 우선순위가 높은 인터럽트 부터 처리한다 - 인터럽트 요청 신호
- 인터럽트 서비스 루틴
여기서 잠깐,
프로그램 입출력, 인터럽트 기반 입출력의 공통점?
입출력장치와 메모리 간의 데이터 이동은 CPU가 주도하고 이동하는 데이터도 반드시 CPU를 거친다
3.DMA입출력 (Direct Memory Access)
- DMA : CPU를 거치지 않고 입출력장치가 메모리에 직접적으로 접근하는 기능 (쉽게 말해 대행해 준다)
- 과정
- CPU는 DMA에 입출력 장치를 명령
- DMA 컨트롤러는 CPU대신 장치 컨트롤러와 상호작용을 하며 입출력 작업을 수행
- 입출력 작업이 끝나면 DMA컨트롤러는 인터럽트를 통해 CPU에 작업이 끝났음을 알린다
-> DMA과정에서 시스템 버스를 이용
- 시스템 버스는 공용 자원이기에 동시 사용이 불가능
- 즉 CPU가 시스템 버스를 사용할 때 DMA컨트롤러는 시스템 버스를 사용할 수 없고, 그 반대의 경우도 마찬가지
✓ 그래서
- CPU가 시스템 버스를 이용하지 않을 때마다 조금씩 시스템 버스 이용
- CPU가 일시적으로 시스템 버스를 이용하지 않도록 허락을 구하고(request 요청) 시스템 버스 이용
'컴퓨터 구조' 카테고리의 다른 글
RAID란 무엇일까? (0) | 2023.02.04 |
---|---|
보조 기억 장치 (0) | 2023.02.03 |
캐시 메모리 (0) | 2023.02.03 |
메모리의 주소 공간 (0) | 2023.02.03 |
메모리 & 캐시 메모리 - RAM의 특징과 종류 (0) | 2023.02.03 |