저자 github
3주차
- Chapter 06 ~ 08
- p. 185의 확인 문제 3번, p. 205의 확인 문제 1번 풀고 인증하기
- Ch.07(07-2) RAID의 정의와 종류를 간단히 정리해 보기
08 입출력장치
8-1 장치 컨트롤러와 장치 드라이버
장치 컨트롤러
입출력 장치를 연결하기 위한 하드웨어적 통로
전송률(transfer rate): 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표
- 일반적으로 CPU, 메모리의 데이터 전송률은 높지만, 입출력장치의 데이터 전송률은 낮다.
장치 컨트롤러(device controller)의 역할
- CPU와 입출력장치 간의 통신 중개
- 오류 검출
- 데이터 버퍼링:
- 버퍼(임시 저장 공간)에 데이터를 조금씩 모았다가 한꺼번에 내보내거나, 데이터를 한 번에 많이 받아 조금씩 내보내는 방법
- 장치 컨트롤러는 일반적으로 전송률이 높은 CPU와 전송률이 낮은 입출력장치와의 전송률 차이를 데이터 버퍼링으로 완화한다.
장치 컨트롤러의 내부
출처: 영어위키
- data register: CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터
- status register: 입출력 작업할 준비가 되었는가, 작업이 완료되었는가, 오류는 없는가 상태 정보 저장
- control register: 입출력 장치가 수행할 내용에 대한 제어 정보 저장
장치 드라이버(device driver)
- 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
- 입출력장치를 연결하기 위한 소프트웨어적인 통로
- 인식하고 질행하는 주체는 운영체제.
8-2 다양한 입출력 방법
프로그램 입출력, 인터럽트 기반 입출력, DMA 입출력
프로그램 입출력(programmed I/O)
- 프로그램 속 명령어로 입출력 장치를 제어하는 방법
- CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어짐.
CPU는 입출력 장치들의 주소를 어떻게 아는 걸까? 또는 CPU는 장치 컨트롤러의 레지스터들을 어떻게 아는 걸까?
- 메모리 맵 입출력(memory-mapped I/O): 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법. 메모리와 입출력장치에 같은 명령어 사용이 가능하다.
- 고립형 입출력(isolated I/O): 메모리를 위한 주소 공간과 입출력 장치를 위한 주소 공간을 분리하기 위한 방법. 입출력 전용 명령어를 사용해야 한다.
인터럽트 기반 입출력(Interrupt-Driven I/O)
- 입출력장치에 의한 하드웨어 인터럽트는 장치컨트롤러에 의해 발생한다.
1) CPU는 장치 컨트롤러에 입출력 작업 명령
2) 장치 컨트롤러가 입출력장치 제어, 입출력 수행
3) CPU는 다른 일
4) 장치 컨트롤러가 입출력 작업을 모두 끝냈다. CPU에 인터럽트 요청 신호를 보냄
5) CPU는 하던 일을 잠시 백업, 인터럽트 서비스 루틴 실행
여러 입출력장치에서 인터럽트가 동시에 발생한 경우, 인터럽트들을 어떻게 처리할까?
- 순차적으로
- 우선순위 고려
- NMI(Non-Maskable Interrupt): 우선순위 가장 높음. 판별 불필요.
- PIC(프로그래머블 인터럽트 컨트롤러 Programmable Interrupt Controller): 여러 장치 컨트롤러에 연결되어 하드웨어 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 지금 처리해야 할 것이 무엇인지를 알려주는 장치
DMA 입출력
- Direct Memory Access: 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식. 직접 메모리에 접근.
- 시스템 버스에 연결된 DMA 컨트롤러(하드웨어)가 필요하다.
- 시스템 버스는 CPU와 DMA 컨트롤러와 동시 사용이 불가하다. 어떤 것은 기다려야 함. CPU 입장에서는 cycle stealing.
DMA 입출력 가정
- CPU는 DMA 컨트롤러에 입출력 장치의 주소, 수행할 연산, 메모리 주소 등 정보로 입출력 작업을 명령
- DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용, 입출력 작업 수행. 필요한 경우 메모리에 직접 접근하여 메모리를 읽고 쓴다.
- 입출력 장치가 끝나면 DMA 컨트롤러는 CPU에 인터럽트를 걸어 작업이 끝났음을 알린다.
입출력 버스
-
DMA를 위해 DMA 컨트롤러가 시스템 버스를 너무 자주 사용하면 CPU는 시스템 버스를 이용할 수 없다.
-
그래서, 입출력 버스(input/output bus): DMA 컨트롤러와 장치 컨트롤러들을 별도에 버스에 연결함.
-
현재의 컴퓨터는 입출력 버스가 있다.
-
종류
1) PCI 버스(Peripheral Component Interconnect bus): 컴퓨터 메인 보드에 주변 장치를 장착하는 데 쓰이는 컴퓨터 버스의 일종
PCI 확장 슬롯
2) PCI Express(PCle) 버스(Peripheral Component Interconnect express bus)
Two types of PCIe slot on an Asus H81M-K motherboard
숙제
1. 기본숙제: p. 185의 확인 문제 3번
DRAM
- 주로 주기억장치로 활용됩니다(2)
- 대용량화하기 유리합니다(3)
SRAM
- 주로 캐시 메모리에 활용됩니다(1)
- 집적도가 상대적으로 낮습니다(4)
2. 기본숙제: p. 205의 확인 문제 1번
도식도 채우기
3. 추가숙제: Ch.07(07-2) RAID의 정의와 종류를 간단히 정리해 보기
-
정의: 데이터의 안정성 혹은 높은 성능을 위해 여러 개의 물리적 보조 기억 장치를 마치 하나의 논리적 보조 기억 장치처럼 사용하는 기술
-
종류: 대중적으로는 RAID 0, RAID 1, RAID 4, RAID 5, RAID 6
| RAID 0 | RAID 1 | RAID 4 | RAID 5 | RAID 6 |
---|
장점 | 데이터가 분산되어 데이터를 읽고 쓰는 속도가 빠름 | 복구가 매우 간단 | RIAD 1처럼 완전한 복사본을 만드는 대신 parity bit을 두는 방식 | RAID 4 병목현상 해결 | |
단점 | 하드 디스크 중 하나에 문제가 생긴다면 모든 하드 디스크의 정보를 읽는데 문제 발생 | 사용가능한 용량이 줄어든다 | parity bit에서도 데이터를 읽고 쓰면서 병목현상 발생 | | |
[추가적으로 할 일 - 천천히...]
- 사진 출처를 어떻게 정리할 것인지 각주/이미지 타이틀 등 방법 찾아보기
- 직접 컴퓨터 부품들 찾아보기
- 특정 제품 분석하기(intel 세대별 정리라든지, 노트북/데스크탑 별로 어떻게 다르게 들어가는지, windows/Mac 어떤 차이가 있는지)
🤔 어렵기도 하지만 '컴퓨터의 발자취'를 따라가는 것이라 흥미롭다.
RAM만 해도 과거에 고가였던 RDRAM은 이제 쓰지 않고 DDR SDRAM이 대세가 되었다. (유튜브로 봄) 경쟁하는 여러 기술 중에 어떤 건 남고 어떤 건 과거보다 더 발전한 모습이 제일 신기하다. ㅎㅎㅎ
뭐! CS 서적이지만, 컴퓨터의 역사책이구나 싶다.