728x90
보조기억장치와 입출력장치
보조기억장치와 입출력장치는 완전히 별개의 대상이라고 보긴 어렵다.
단지, 보조기억장치는 보관할 데이터를 저장하는 특별한 형태의 입출력장치라고 보는게 좋다.
(일부 서적은 보조기억 + 입출력 장치를 묶어서 주변장치라고도 한다.)
실무에서 주로 사용되는 보조기억 장치를 뽑아보면 하드디스크와 플래시 메모리이다.
하드디스크와 플래시 메모리
- 하드 디스크 드라이브(HDD)
- 플래시 메모리 기반으로 만든 저장 장치
- 솔리드 스테이트 드라이브
- USB 메모리
- SD 카드
하드 디스크
- LP, CD/DVD 플레이어와 유사
- 플래터: 하드 디스크 상에서 실질적으로 데이터가 저장되는 부분
- 스핀들: 플래터를 회전 시키는 부분
- 헤드: 플래터의 데이터를 읽고 쓰는 부분, 헤드는 미세하게 떠 있는데 충돌이 되었을때 데이터를 잃을 수 있다.
- 디스크 암: 헤드를 옮기는 부분
- 복수의 헤드와 복수의 플래터가 있는 경우가 많음.
- 플래터의 양면을 사용하는 경우가 많음.
하드 디스크의 데이터 단위
- 트랙: 플래터 상의 동심원
- 섹터(sector): 트랙을 나눈 단위( 가장 작은 단위)
- 실린더: 여러개의 트랙을 모은 단위
- 블록: 실제 입출력이 수행되는 단위, 실제로 컴퓨터와 하드디스크가 정보를 주고 받는 단위는 블록이다.
하드 디스크의 지연시간
- 탐색시간: 헤드를 원하는 섹터까지 이동시키는 시간
- 회전지연: 원하는 섹터를 헤더까지 회전시키는 시간
- 전송시간: 실제로 데이터를 송수신하는 시간
- 아래 시간을 비교해놓은 표를 보면 하드디스크 탐색 시간이 엄청 차이나는 것을 볼 수 있다.
플래시 메모리
- 보조기억장치로서 플래시메모리를 사용한다.
- 반도체 기반의 저장 장치
- 매우 범용성 넓은 저장 장치(오늘날 가전제품에 많이 사용됨)
- NAND 플래시 메모리와 NOR 플래시 메모리가 있음: 일반적으로 보조기억장치로서 사용되는 NAND 플래시 메모리
플래시 메모리의 저장 단위
- 셀(cell): 플래시 메모리의 가장 작은 저장 단위
- 한 셀에 몇 비트까지 저장이 가능한지에 따라 성능, 수명, 가격 이 달라짐. 즉, 플래시 메모리의 종류가 나뉨.
- SLC 타입: 한 셀에 한 비트 저장 가능, 비유: 한 집당 한명이 살고 있음. 혼자사는집 월세 비쌈 → 입출력속도가 빠름. 가격 높음.
- MLC 타입: 한 셀에 두 비트 저장 가능, 비유: 한 집당 두명이 살고 있음. 보통
- TLC 타입: 한 셀에 세 비트 저장 가능, 비유: 한 집당 세명이 살고 있음. 월세 저렴 → 가격 저렴, 수명이 짧음.
- QLC 타입: 한 셀에 네 비트 저장 가능, 더 많은 타입이 만들어지고 있다.
- 페이지: 셀이 모인것, 읽기와 쓰기는 페이지 단위로 함.
- 블록: 페이지가 모인것, 삭제는 블록 단위로 함.
- 플레인: 블록이 모인 것
- 다이: 블록이 모인 것
RAID
데이터의 안정성, 높은 성능을 위해 여러개의 보조장치를 사용할때 묶어서 빠르고 안전하게 사용하는 기술
ITB * 5개가 빠를까? 5TB 하나가 더 빠를까?
ITB * 5를 RAID를 구성하면 더 빠르다.
- 보조기억장치에는 수명이 있다. 단순히 저장하는 것만으로 괜찮을까?
- 이 때 사용 가능한 기술 중 하나: RAID
RAID 레벨
- RAID를 구성하는 방법
- 대표적인 방법으로는 주로 사용되는 RAID 0, RAID 1, RAID 4, RAID 5, RAID 6이 있다.
RAID 0
- 데이터를 나누어 저장하는 구성 방식: 성능 개선/ 신뢰성 감소(저장하는 데이터를 나눴는데 하드디스크 하나가 고장나면 모든 데이터가 쓸모 없어진다.)
- 입출력속도가 빨라진다.
- 마치 줄무늬 처럼 저장된 데이터: 스트라입
- 분산하여 저장하는 것: 스트라이핑
RAID 1
- 복사본을 만드는 방식 (미러링)
- 원본과 복사본을 둘 다 변경해야하기 때문에 쓰기 성능의 감소, 복사본이 있으니 저장 공간 감소, 신뢰성 증가(복구 용이), 정말 안정적으로 저장해야할때 사용
RAID 4
- 패리티 비트라는 오류 검출용 비트를 저장하는 장치를 따로 두는 방식
- RAID 1에 비해 적은 하드 디스크로도 신뢰성 증가 가능
- 단, 패리티 비트를 저장한 디스크에 병목 현상이 증가. 어떤 데이터를 접근할때 패리티에 접근해야 하드디스크4에 병목현상시 생길 수 있음.
패리티 비트
- 홀수 패리티: 전체 1의 개수가 홀수가 되도록 패리티 비트를 정하는 방식
- 짝수 패리티: 전체 1의 개수가 짝수가 되도록 패리티 비트를 정하는 방식
- 두 개 이상의 비트에 문제가 생길 경우 오류 검출 불가능
- 원래 패리티 비트는 오류 검출용이었다.
- 하지만 레이드에서는 어느 정도의 복구가 가능이 된다.
RAID 5
- 패리티 비트를 분산하여 저장하는 방식
- RAID 4의 병목을 해소하는 방식
RAID 6
- 패리티를 두 개 두는 방식
- 4,5 보다 더욱 신뢰성이 높아진 방식(단, 쓰기 성능은 감소
nested RAID
- 여러 RAID 구성 방식을 합친 방식
입출력 기법
입출력 장치와 CPU는 어떻게 정보를 주고받을까?
- 입출력 장치는 CPU 입장에서 메모리, 레지스터에 비해 다루기 까다롭다.
- 왜 일까?
- 매우 다양한 입출력장치의 종류
- CPU와 입출력장치 간의 전송률 차이(1초에 10마디 말하는 사람(입출력장치), 1초에 5000마디 말하는 사람(CPU))
장치 컨트롤러
- CPU와 입출력 장치 간의 통신 중개
- 오류 검출
- 데이터 버퍼링을 통한 전송률 차이 완화
- 데이터 버퍼링
- 데이터를 임시로 저장했다가 내보내는 것이 원래 버퍼링을 의미,
- 하지만 여기에서는 한 번에 모았다가 전송률을 맞춰서 출력함.
- 데이터 버퍼링
- 입출력 제어기, 입출력 모듈라고 불리기도 함.
장치 드라이버
- 장치 컨트롤러를 동작시키기 위한 특별한 프로그램
- 운영체제의 일부로 포함되어 있는 경우가 많음.
입출력 과정
- CPU가 장치 컨트롤러와 정보를 주고 받는 것(장치 드라이버)
CPU와 장치 컨트롤러가 정보를 주고받는 방법
- 프로그램 입출력(I/O)
- 입출력 명령어를 기반으로 입출력을 수행하는 방법
- 인터럽트 기반 입출력
- 인터럽트를 기반으로 입출력을 수행하는 방법, CPU의 성능을 아낄 수 있음.
- DMA 기반 입출력(기술 면접에서 자주 등장함)
- DMA 기반으로 입출력을 수행하는 방법
- Direct Memory Access, 직접 메모리에 접근한다.
- DMA가 없다면 장치 컨트롤러 → CPU → Memory로 진행된다.
DMA 컨트롤러를 사용하면 CPU를 들리지 않고 직접적으로 연결이 됨. 직행 CPU 사이클 이득, 하지만 CPU 입장에서는 시스템 버스를 사용할 사이클을 도둑 맞음.(사이클 스틸링)
DMA 컨트롤러가 시스템 버스를 사용하는 것이 좋은걸까?
- 입출력작업이 있을때 마다 시스템 버스를 결국 두번 사용하게 된다.
- 그래서 이런 문제를 해결하기 위해 등장한 입출력 버스, 입출력 전용 버스인 입출력 버스
- PCI, PCI Express(PCIe) 버스
DMA의 발전: 입출력 채널
- 입출력 전용 프로세서
- 입출력 명령어 해석, 실행까지 담당한다. CPU에서 할 역할이 줄어듬.
728x90
'Computer Science > Computer Architecture' 카테고리의 다른 글
[Computer Science] [컴퓨터구조] Memory (2) | 2024.12.23 |
---|---|
[Computer Science] [컴퓨터구조] CPU(2) (0) | 2024.12.16 |
[Computer Science] [컴퓨터구조] CPU (0) | 2024.12.14 |
[Computer Science] [컴퓨터 구조] 데이터 (1) | 2024.12.13 |
[Computer Science] [컴퓨터구조] 명령어 (4) | 2024.12.12 |