보조기억장치 특징
1.
메모리 휘발성 보완
2.
메모리보다 큰 저장 공간 제공
RAID
오늘날 대중적으로 활용되는 보조기억장치 2가지
1.
하드 디스크 드라이브(하드 디스크)
•
자기적인 방식으로 데이터를 읽고 쓰는 보조기억장치
•
헤드를 통해 플래터에 저장된 데이터 접근 가능
2.
플래시 메모리 기반 저장장치
•
전기적인 방식으로 데이터를 읽고 쓰는 보조기억장치
•
USB 메모리, SD카드, SSD
보조기억장치의 본분 2가지
1.
전원이 꺼져도 데이터를 안전하게 보관하기
2.
CPU가 필요로 하는 정보를 조금이라도 빠른 성능으로 메모리에 전달하기
보조기억장치의 데이터를 안전하고 빠르게 다룰 수 있는 방법이 중요하다 ⇒ RAID 기술을 사용
RAID
•
데이터의 안전 or 성능을 확보하기 위해, 여러 개의 독립적인 보조기억장치를 마치 하나의 보조기억장치처럼 사용하는 기술(SSD, HDD로 RAID를 구성 가능)
•
RAID 레벨 : RAID를 구성하는 방법
RAID0
데이터를 여러 보조기억장치에 단순하게 나누어 저장하는 구성 방식
(데이터가 각 하드 디스크에 번갈아 가며 저장)
•
스트라입(stripe) : 줄무늬처럼 분산되어 저장된 데이터
•
스트라이핑(striping) : 분산하여 저장하는 동작
•
장점 : 빠른 입출력 속도
◦
하나의 대용량 저장장치였다면, 여러 번에 걸쳐 읽고 써야했음
◦
스트라이핑을 하면, 디스크 4개를 한 번에 읽어들일 수 있음(이론상 4배 속도 향상)
•
단점 : 저장된 정보가 안전하지 않음
RAID1
완전한 복사본을 만들어 저장하는 구성 방식(= 미러링)
•
장점 : 복구가 간단 & 안전성이 높음
•
단점 : 쓰기 속도 느려짐 & 복사본이 저장된 크기만큼 사용 가능한 용량이 적어짐
RAID4
패리티 정보를 저장하는 디스크를 따로 두는 구성 방식
•
패리티(parity) : 오류를 검출 가능한 정보
◦
RAID1에 비해 적은 하드 디스크로도 안전하게 데이터 보관 가능
•
단점 : 패리티를 저장하는 장치에 병목 현상 발생
◦
패리티를 저장하는 디스크는 어떤 새로운 데이터가 저장될 때마다 쓰게 됨 → 패리티 정보를 저장하는 디스크는 병목 지점이 될 여지 높음
RAID5
패리티를 분산 저장하는 구성 방식
•
패리티를 분산 저장하여 RAID4의 문제인 병목 현상 보완 가능
RAID6
기본적인 구성은 RAID5와 동일하지만, 서로 다른 2개의 패리티를 두는 구성 방식(= 오류를 검출 및 복구 가능한 수단이 2개가 생긴 셈)
•
RAID4, RAID5보다 안전성 높음
•
새로운 정보를 저장할 때마다 함께 저장할 패리티가 2개 → RAID5보다 쓰기 속도 느림
RAID 레벨마다 각기 다른 장단점 존재 → 무엇을 최우선으로 원하는 지에 따라 최적 RAID 레벨은 달라짐 → 각 RAID 레벨의 대략적인 구성 및 특징을 알고 있는게 중요
입출력 기법
보조기억장치를 포함해 다양한 입출력장치들이 컴퓨터 내부와 정보를 주고받는 방식인 입출력 기법에 대해 설명
장치 컨트롤러 & 장치 드라이버
다양한 외부 장치가 어떻게 컴퓨터 내부와 연결되고 소통하는지를 알기 위해 알아야하는 내용
장치 컨트롤러
CPU와 입출력장치 사이의 통신을 중개하는 중개자 역할의 하드웨어
•
같은 입출력장치라 하더라도 제조사마다 규격 및 작동 방식이 상이 → CPU 입장에서 모든 입출력 장치의 작동 방식을 알기는 어려움 → 입출력장치는 CPU와 직접 연결되어 정보를 주고받지 않고 장치 컨트롤러라는 하드웨어를 통해 연결
•
모든 입출력장치는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 연결되어 정보를 주고받음
참고
장치 드라이버
•
CPU가 실행하는 것은 결국 프로그램이며, CPU가 장치 컨트롤러와 상호작용하며 입출력장치를 작동
◦
이 말은, CPU가 장치 컨트롤러와 상호작용해 입출력장치를 작동시키는 것 또한 CPU가 실행하는 프로그램을 통해 이뤄진다는 말과 동일
•
일반적으로 장치 컨트롤러마다 이를 작동시키는 장치 드라이버라는 프로그램 존재
◦
장치 드라이버 : 장치 컨트롤러의 동작을 알고, 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있도록 하는 프로그램
◦
컴퓨터가 장치 드라이버를 인식하지 못하면, 장치 컨트롤러와 정보를 주고받을 방법을 알 수 없음 → 입출력장치 실행 불가능
참고
입출력 작업 수행 방법
•
CPU와 장치 컨트롤러가 정보를 주고받는 방법
•
대표적으로 3가지 방법 존재 : 프로그램 입출력, 인터럽트 기반 입출력, DMA 입출력
방법 1) 프로그램 입출력
•
프로그램 속 명령어로 입출력 작업을 수행하는 방법
•
CPU가 입출력 명령어를 실행함으로써 장치 컨트롤러와 상호작용 가능하고, 이를 통해 입출력 작업 수행
(EX : “프린터 컨트롤러의 상태 확인하기”, “하드 디스크 컨트롤러에 10을 쓰기”)
방법 2) 인터럽트 기반 입출력 : 다중 인터럽트
가정 : 다중 인터럽트 처리(좀 더 일반적인 상황)
키보드, 마우스, 모니터, 스피커 등의 입출력장치를 동시에 사용하는 상황
•
인터럽트 중에서도 우선순위가 더 높은 인터럽트가 우선적으로 처리되는 경우가 일반적(순차적으로 처리하기 보다는)
◦
플래그 레지스터 속 인터럽트 비트가 활성화되어있는 경우
◦
인터럽트 비트를 비활성화해도 무시할 수 없는 인터럽트인 NMI(Non-Maskable Interrupt)가 발생한 경우
이런 경우에 CPU가 우선순위가 높은 인터럽트부터 먼저 처리
프로그래머블 인터럽트 컨트롤러(PIC : Programmable Interrupt Controller)
•
다중 인터럽트를 처리하기 위해 PIC 하드웨어를 사용
•
PIC는 여러 장치 컨트롤러에 연결되어 있음 → 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청들의 우선순위를 판별한 뒤, CPU에게 지금 처리해야 할 하드웨어 인터럽트가 무엇인지 알려주는 장치
참고) NMI까지 PIC가 우선순위를 판별하지는 않음
방법 3) DMA 입출력
Direct Memory Access : 직접 메모리에 접근할 수 있는 입출력 기능
프로그램 기반 입출력 & 인터럽트 기반 입출력의 공통점
CPU가 입출력장치와 메모리 간의 데이터 이동을 주도해야 하며, 이동하는 데이터들도 반드시 CPU를 거침
if) 입출력장치의 데이터를 메모리에 저장하는 경우
1.
장치 컨트롤러로부터 데이터를 하나씩 레지스터에 적재
2.
적재한 데이터를 하나씩 메모리에 저장
if) 메모리 속 데이터를 입출력장치에 보내는 경우
1.
CPU가 메모리로부터 데이터를 하나씩 읽어 레지스터에 적재
2.
적재한 데이터를 하나씩 입출력장치에 전송
DMA 입출력 등장
•
입출력장치와 메모리 사이에 전송되는 모든 데이터가 반드시 CPU를 거친다 → CPU 부담 증가 → CPU를 거치지 않고도 입출력장치와 메모리가 상호작용하는 입출력 방식(= DMA(Direct Memory Access)) 사용
•
DMA 입출력을 위해서는 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요
◦
DMA 컨트롤러는 시스템 버스에 연결
◦
입출력장치들의 장치 컨트롤러들은 입출력 버스라는 입출력장치 컨트롤러 전용 버스와 연결
DMA 입출력 과정
1.
CPU가 DMA 컨트롤러에게 입출력장치의 주소, 수행할 연산, 연산할 메모리 주소 등의 정보와 함께 입출력 작업을 명령
2.
DMA 컨트롤러가 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업 수행. 이때 DMA 컨트롤러는 필요한 경우 메모리에 직접 접근하여 정보를 읽거나 씀. 입출력장치와 메모리 사이에 주고받을 데이터가 CPU를 거치지 않음
3.
DMA 컨트롤러는 입출력 작업이 끝나면 CPU에게 인터럽트를 걸어 작업이 끝났음을 알림
참고) 사이클 스틸링
•
버스는 공용 자원 → 두 장치가 동시에 한 버스를 이용 불가
◦
DMA 컨트롤러가 시스템 버스를 통해 메모리에 직접 접근이 가능. 그러나 시스템 버스는 동시 사용 불가 → CPU가 시스템 버스를 사용할 때는 DMA 컨트롤러가 시스템 버스를 사용 불가하며, DMA 컨트롤러가 시스템 버스를 사용할 때는 CPU가 시스템 버스를 사용 불가
•
즉, DMA 컨트롤러는 CPU가 시스템 버스를 사용하지 않을 때마다 조금씩 사용하거나, CPU가 시스템 버스 사용을 양보
CPU 입장에서는 버스에 접근하는 사이클을 도둑 맞는 상황 → DMA의 시스템 버스 사용을 사이클 스틸링이라고 함
PCIe(입출력 버스)
대표적인 입출력 버스
•
다양한 입출력장치 연결 가능
•
PCIe와 연결된 장치의 성능과 관련해 알아야하는 내용 2가지
1.
PCIe 버전에 따라 최대 속도가 달라질 수 있음
•
PCIe는 지속적으로 발전하고 있기에 버전이 존재
•
버전에 따라 지원하는 최대 속도가 다름
2.
PCIe 버스가 여러 레인을 이용해 정보를 주고받을 수 있음
•
레인(lane) : PCIe 버스를 통해 정보를 송수신하는 단위
◦
통신을 주고받는 선로의 수와 같은 개념
◦
레인 수가 2개, 4개, 8개 → 한 번에 통신을 주고받을 수 있는 양이 2배, 4배, 8배
•
표기법 : PCIe 버전 x 레인 수
EX) PCIe 4.0 x 4 : 4개의 레인을 활용하는 PCIe 4.0








