장치 컨트롤러와 장치 드라이버
장치 컨트롤러
사용이유
첫째, 입출력 장치에는 종류가 너무나도 많다.
장치가 다양하면 장치마다 속도, 데이터 전송 형식 등도 다양하다
-->다양한 입출력 장치와 정보를 주고받는 방식을 규격화하기 어렵다
둘째,일반적으로 CPU와 메모리의 데이터 전송률은 높지만 입출력장치의 데이터 전송률은 낮다
※데이터 전송률 : 데이터를 얼마나 빨리 교환할 수 있는지를 나타냄
이런 이유로 장치 컨트롤러를 통해 컴퓨터와 연결된다.
장치 컨트롤러의 역할
1 . CPU와 입출력장치 간의 통신을 중개 - 규격화가능!
2 . 오류 검출
3 . 데이터 버퍼링
※데이터 버퍼링 : 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
장치 컨트롤러의 구조
데이터 레지스터 : CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터 (버퍼 역할을 하는 레지스터)
RAM으로 사용하기도 함
상태 레지스터 : 상태 정보 저장
입출력장치가 입출력 작업을 할 준비가 되었는지
입출력 작업이 완료되었는지
입출력장치에 오류는 없는지 등의 상태 정보
제어 레지스터 : 입출력장치가 수행할 내용에 대한 제어 정보와 명령이 저장되는 레지스터.
장치 드라이버
장치 드라이버 : 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램 -소프트웨어적인 통로
※장치 드라이버를 인식하고 실행하는 주체는 운영체제.
다양한 입출력 방법
프로그램 입출력
프로그램 속 명령어로 입출력장치를 제어하는 방법
입출력 명령어로써 장치 컨트롤러와 상호작용
예시 : 메모리에 저장된 정보를 하드디스크에 백업 동작
===> 하드디스크에 새로운 정보 쓰기
1 CPU는 하드 디스크 컨트롤러의 제어 레지스터에 쓰기 명령 내보내기
2 하드 디스크 컨트롤러는 하드 디스크 상태 확인 --> 상태 레지스터에 준비 완료 표시
3 - 1 CPU는 상태 레지스터를 주기적으로 읽어보며 하드 디스크의 준비 여부 확인
3 - 2 하드 디스크가 준비되었다면 백업할 메모리의 정보를 데이터 레지스터에 쓰기
즉 프로그램 입출력 방식은 CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어진다.
프로그램 입출력 방식 : 메모리 맵 입출력 & 고립형 입출력
메모리 맵 입출력
메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 같은 주소 공간으로 간주하는 방법
동작예시 :
516번지 : 프린터 컨트롤러의 데이터 레지스터
517번지 : 프린터 컨트롤러의 상태 레지스터
518번지 : 하드 디스크 컨트롤러의 데이터 레지스터
519번지 : 하드 디스크 컨트롤러의 상태 레지스터
517번지를 읽어 들여라 == 프린터 상태 읽기
518번지에 a를 써라 == 하드 디스크에 a 쓰기
즉 메모리 접근 명령어 == 입출력장치 접근 명령어 으로 명령어가 같아진다.
고립형 입출력
메모리를 위한 주소 공간과 입출력 장치를 위한 주소 공간을 분리됨
따라서 메모리 명령어와 별도의 입출력 전용 명령어를 사용 -- 입출력 읽기/쓰기 제어 버스가 추가적으로 있음
매모리 맵 VS 고립형
인터럽트 기반 입출력
CPU가 하드웨어의 인터럽트 신호를 받아 입출력을 진행함
※ 폴링(polling): CPU가 상태 레지스터를 주기적으로 확인하여 입출력장치의 상태를 확인하는 방식.
동시다발적인 인터럽트 : 입출력장치가 많을 때를 가정해보자
인터럽트 발생 순서대로 처리 A-b
하드웨어 인터럽트의 경우 플래그 레지스터의 인터럽트 비트 상태 비활성화하여 가능함
하지만 현실적이지 않음 우선순위가 높은 인터럽트가 있다.
우선순위 고려하여 인터럽트 처리
NMI가 발생한경우 플래그 레지스터의 인터럽트 비트 활성화하고 인터럽트를 처리한다.
NMI : 무시할 수 없는 인터럽트.
대중적인 방식 : PIC를 사용하여 우선순위 인터럽트를 처리함
PIC : 여러 장치 컨트롤러들에 연결되어 --하드웨어만 판단함 , NMI는 CPU에 다이렉트 연결
장치 컨트롤러의 하드웨어 인터럽트의 우선순위를 판단한 뒤
CPU에게 지금 처리해야 하는 인터럽트가 무엇인지 판단하는 하드웨어
※PIC의 다중 인터럽트 처리 과정
1. 장치 컨트롤러에서 인터럽트 요청 신호 받아들임.
2. 인터럽트 우선순위 판단 후 CPU에 인터럽트 요청 신호 보냄.
3. CPU는 PIC에 인터럽트 확인 신호 보냄.
4. PIC는 데이터 버스를 통해 CPU에 인터럽트 벡터 보냄.
5. CPU는 인터럽트 벡터를 통해 요청 주체를 알고, 해당 장치의 인터럽트 서비스 루틴 실행.
DMA입출력
DMA 컨트롤러를 통해 CPU를 거치지 않고 상호작용할 수 있는 입출력 방식
DAM 입출력 과정
CPU가 DMA 컨트롤러에 입출력 작업 명령
DMA 컨트롤러가 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업 수행, 이때 DMA 컨트롤러가 직접 메모리 접근하여 작업 수행
입출력 작업 종료시 DMA 컨트롤러는 CPU에 인터럽트
CPU는 입출력작업의 시작과 끝에만 관여함
※문제점 : 시스템 버스는 공용자원이기에 동시 사용 불가능 -
CPU가 사용중일 때 DMA컨트롤러는 시스템버스를 사용할 수 없고
DMA컨트롤러가 사용중일 때 CPU는 시스템버스를 사용할 수 없음
해결책 : DMA 컨트롤러는 CPU가 시스템 버스를 이용하지 않을 때 조금씩 시스템 버스 이용
CPU가 일시적으로 시스템 버스를 이용하지 않도록 허락을 구하고 시스템 버스 이용
도둑맞는 느낌이라 사이클 스틸링이라고도 함
입출력 버스
DMA 입출력 방식 사용시 시스템 버스를 불필요하게 두번씩 이용하는것은 비효율적임
따라서 입출력 버스를 따로 구성하여 사용한다면 시스템버스를 불필요하게 점유할 필요가 없어짐 -사용빈도를 낮춤
예시 : PCI 버스, PCI Express 버스
※최근에는 입출력 전용 입출력 프로세서(입출력 채널)가 탑재된 입출력장치들이 출시되어 판매되고 있다.
'컴퓨터 사이언스 > 컴퓨터 구조 & 운영체제' 카테고리의 다른 글
[혼공컴운] 3주차 미션 (0) | 2024.01.22 |
---|---|
[혼공컴운] 컴퓨터구조 3주차 번외편 - 메모리 (0) | 2024.01.22 |
[혼공컴운] 컴퓨터 구조 chapter 7 (0) | 2024.01.20 |
[혼공컴운] 컴퓨터 구조 chapter 6 (0) | 2024.01.18 |
[혼공컴운] 컴퓨터 구조 2주차 미션 (1) | 2024.01.15 |