장치컨트롤러(Device controller)
- 입출력장치를 다루는것은 어렵다
- 이유1 입출력장치의 종류가 많다 → 정보를 주고받는 방식의 규격화가 어렵다
- 이유2 입출력장치의 데이터 전송률은 낮다 (일반적으로 CPU와 메모리의 데이터 전송률은 높음)
전송률이란 데이터를 얼마나 빨리 교환하는지 나타내는 지표
- 위와같은 이유로 컴퓨터에 직접연결하지않고 장치컨트롤러라는 하드웨어를 통해 연결함
- 입출력 제어기(I/O controller), 입출력 모듈(I/O module)과 같은 의미
- 입출력장치 연결을 위한 하드웨어적인 통로
- 장치컨트롤러의 기능
- CPU와 입출력장치 간의 통신 중개
- 오류검출
- 데이터 버퍼링
- 버퍼링: 전송률이 높은 장치와 낮은 장치사이에 주고받는 데이터를 버퍼라는 임시저장공간에 저장하여 전송률을 비슷하게 맞추는 방법
- 버퍼에 데이터를 모았다가 한꺼번에 내보내거나 조금씩 내보내는 방법
- 장치컨트롤러 구조
- 데이터 레지스터 : CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터. 버퍼의 역할을 함
- 상태 레지스터 : 입출력장치가 작업을 할 준비가 되었는지, 작업이 완료가 되었는지, 오류가 없는지등 상태정보를 저장함
- 제어 레지스터 : 입출력장치가 수행할 내용에 대한 제어정보와 명령을 저장
장치드라이버
- 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터내부와 정보를 주고받을수 있게 하는 프로그램
- 메모리에 저장되어있음
- 입출력장치 연결을 위한 소프트웨어적인 통로
- 장치드라이버를 인식, 실행하는 주체는 운영체제임
장치컨트롤러와 CPU가 정보를 주고 받는 방법
- 프로그램 입출력
- 인터럽트 기반 입출력
- DMA 입출력
1. 프로그램 입출력
- 기본적으로 프로그램 속 명령어로 입출력장치를 제어하는 방법
- CPU가 명령어를 실행하는 과정에서 입출력 명령어를 만나면 CPU는 입는 입출력장치에 연락된 장치컨트롤로와 작업을 수행함
- CPU가 장치 컨트롤러의 레지스터 값을 읽고 쓰면서 이루어짐
- 과정
1) CPU는 하드디스크 컨트롤러의 제어 레지스터에 쓰기 명령을 보냄
'메모리에 저장된 정보를 하드디스크에 백업한다' = '하드디스크에 새로운 정보를 쓴다'
2) 하드디스크는 디스크 상태를 확인하고 준비된 상태면 상태레지스터에 준비되었다고 표시함
3) CPU는 상태 레지스터를 주기적으로 읽으며 하드디스크의 준비여부 확인함
4) 하드디스크가 준비되었으면 백업할 메모리 정보를 데이터레지스터 씀
5) 백업작업(쓰기작업)이 끝나지 않으면 1번부터 반복
- 명령어 표현 방법과 메모리 저장 방법 두가지
- 메모리 맵 입출력
- 메모리에 접근하기위한 주소공간과 입출력장치를 위한 주소공간을 하나의 주소공간으로 간주하는 방법
- CPU는 메모리의 주소와 장치 컨트롤러의 레지스터들을 똑같이 메모리 주소와 같은 취급을 한다
- 고립형 입출력(isolated I/O)
- 메모리를 위한 주소공간과 입출력장치를 위한 주소공간을 분리하는 방법
- CPU는 메모리접근과는 다른 입출력명령어를 사용함
-
구분 | 메모리 맵 입출력 | 고립형 입출력 |
---|
메모리와 입출력장치 | 같은 주소공간 | 분리된 주소공간 |
메모리의 주소공간 | 축소됨 | 축소되지 않음 |
메모리와 입출력장치 명령어 | 같음 | 다름(입출력장치 전용 명령어) |
2.인터럽트 기반 입출력
폴링이란
- 인터럽트와 비교되는 개념중 하나
- 입출력장치의 상태는 어떤지, 처리할 데이터가 있는지 주기적으로 확인하는 방식
- 인터럽트 방식보다 CPU에 부담이 크다
- 장치컨트롤러에 의해 발생하는 인터럽트 기반 입출력
- 여러입출력 장치에서 인터럽트가 동시발생할 경우에 인터럽트의 우선순위가 높은것부터 처리한다
- 플래그 레지스터속 인터럽트 비트가 활성화된경우 먼저처리
- 인터럽트 비트는 비활성이지만 NMI(무시할수 없는 인터럽트/가장 놓은 우선순위)가 발생한 경우 먼저처리
- 프로그래머블 인터럽트 컨트롤러(PIC Programmable Interrupt Controller)
- 우선순위를 반영해 다중 인터럽트를 처리하는 방법 중 하나
- 하드웨어 인터럽트 요청의 우선순위를 판별해 지금 처리해야 하는 인터럽트를 알려줌
- 여러 장치컨트롤러에 연결되어 있는 하드웨어
- NMI의 우선순위를 판별하지 않음
- 하드웨어인터럽트의 우선 순위를 조정함
- PIC를 두개 이상 계층으로 구성함(훨씬 많은 하드웨이 인터럽트 관리를 위해서)
- 다중인터럽트 처리과정
1) PIC가 장치컨트롤러에서 인터트럽 요청신호를 받아들임
2) PIC는 인터럽트 우선순위를 판단하고 CPU에 먼처처리해야할 인터트럽요청신호를 보냄
3) CPU는 PIC에 인터럽트 확인신호를 보냄
4) PIC는 데이터버스를 통해서 CPU에 인터럽트 백터를 보냄
5) CPU는 인터럽트백터를 통해서 인터럽트 요청 주체를 확인하고 인터럽스 서비스 루틴을 실행함
3. DMA(Direct Memory Access) 입출력
- 입출력장치와 메모리가 CPU를 거치지 않고 상호작용 할 수 있는 입출력방식
- 시스템 버스에 연결된 DMA컨트롤러 하드웨어가 있어야 사용할 수 있음
- CPU는 입출력의 시작과 끝에만 관여함
- 시스템 버스는 동시사용이 불가하기 때문에 CPU가 시스템버스를 사용하지 않을때 사용하거나 허락을 구하고 사용함
- 사이클링 스탈링 : DMA의 시스템버스 이용방법을 의미함 (CPU입장에서 도둑맞는 기분)
- DMA입출력 과정
1) CPU는 DMA컨트롤러에 정보(입출려장치 주소, 수행연산, 읽거나 쓸 메모리 주소)로 입출력 작업을 명령함
2) DMA컨트롤러는 메모리와 상호작용하면서 백업할 정보를 가져옴
3) DAM컨트롤러는 장치컨트롤러와 상호작용하면서 입출력 작업을 수행함
3) 입출력 작업이 끝나면 DMA컨트롤러는 CPU에 인터럽를 걸어서 작업이 끝난것을 알림
- DMA컨트롤러와 입출력버스
- 시스템버스에 자주 접근하는것을 줄이기 위해서 입출력버스와 DMA컨트롤러를 연결함
- 장치컨트롤러가 데이터를 전송할때 입출력버스를 이용하여 시스템버스 사용빈도를 줄임
- 종류 : PCI버스, PCI Express(PCIe)버스
- PCIe슬로 : 여러입출력장치를 PCIe버스와 연결하는 통로
📚마무리문제
P.238~239
1번 장치컨트롤러를 사용하는 이유로 옳은것은? (1)번, (3)번
1) 입출력장치는 종류가 많아 주고받는 정보의 규격화가 어렵다
2) CPU는 모든 입출력장치가 사용하는 데이터 형식등을 알고있기 떄문이다
3) 일반적으로 입출력장치와 CPU간에 전송률의 차이가 크기 떄문이다
4) CPU와 입출력장치 사이에는 중개자가 필요하지 않기 떄문이다
2번 장치컨트롤럴의 기능으로 틀린것은? (2)번
1) CPU 또는 입출력장치간의 통신을 중개한다
2) 전원이 꺼져도 대용량의 데이터를 저장한다
3) 입출력장치의 오류를 검출한다
4) 데이터 버퍼링을 통해 전송률 차이를 완화한다
3번 빈칸넣기
장치드라이버는 (1)장치컨트롤러가 컴퓨터 내부와 정보를 주고받을수 있게하는 (2)프로그램입니다
4번 장치드라이버의 설명중 옳은것은? (2)번
1) 운영체제가 기본적으로 제공하는 장치드라이버는 없음
2) 컴퓨터가 장치드라이버를 인식하고 실행할 수 있으면 해당 입출력장치의 사용이 가능함
3) 컴퓨터가 장치드라이버를 인식하고 실행할수 없어도 해당 입출력장치의 사용이 가능함
4) 장치드라이버는 하드웨어이다
P.255~256
1번 메모리 맵 입출력과 고립형 입출력방식의 설명중 틀린것 (2)번
1) 메모리 맵 입출력은 메모리를 위한 주소공간과 입출력장치에 접근하기 위한 주소공간을 하나의 주고송가능로 간주하는 방법다
2) 고립형 입출력방식은 메모리주소 공간을 축소시키는 방법이다
3) 메모리 맵 입출력방식은 메모리와 입출력장치에 동일한명령어로써 접근한다
4) 고립형 입출력은 분리된 주소공간으로 메모리와 입출력장치를 관리하는 방식이다
2번 빈칸채우기
인터럽트A의 인터럽드 서비스 루틴을 실행하던 도중 우선순위가 더 높은 인터럽트B가 발생했을때 CPU는 인터럽트 (1)의 인터럽트 서비스 루틴을 잠시멈추고, 인터럽트(2)의 인터럽트 서비스 루틴을 실행한다
(1)A (2)B
3번 DMA의 설명중 틀린것은?(3)번
1) DMA작업이 완료되면 DMA컨트롤러는 CPU에 인터럽트 요청을 보낸다
2) DMA컨트롤러와 CPU는 시스템버스를 동시에 사용할수 없다
3) DMA컨트롤러는 CPU를 거치고 메모리와 입출력장치 간의 데이터를 주고받는다
4) DMA는 프로그램 입출력보다 CPU의 입출력 부담이 적다(?) 어디나온건지 찾아보기
4번 메모리 맵 입출력
메모리에 접근하기 위한 주소공간과 입출력장치에 접근하려는 주소공간을 하나로 간주하는 방식은?
5번 고립형 입출력
메모리에 접근하기위한 주소공간과 입출력장치에 접근하려는 주소공간을 별도의 주소공간으로 분리하는 방식은?