기본 미션
p.1854의 확인문제 3번 풀고 인증하기
- 다음 설명을 읽고 SRAM에 대한 설명인지 DRAM에 대한 설명인지 쓰세요.
보기: SRAM, DRAM
- 주로 캐시 메모리로 활용됩니다.
( 1 )
- 주로 주기억장치로 활용됩니다.
( 2 )
- 대용량화하기 유리합니다.
( 3 )
- 집적도가 상대적으로 낮습니다.
( 4 )
정답
(1) SRAM, (2) DRAM, (3) DRAM, (4) SRAM
p.205의 확인문제 1번 풀고 인증하기
- 다음 보기에 있는 저장 장치들로 저장 장치 계층 구조 도식도를 채우세요.
보기: 메모리, 보조기억장치, 캐시 메모리, 레지스터
정답
(1): 레지스터
(2): 캐시 메모리
(3): 메모리
(4): 보조기억장치
선택 미션
ch.07(7-1) RAID의 정의와 종류를 간단히 정리해보기
RAID (Redundant Array of Independent Disks):
주로 하드 디스크와 SSD를 사용하는 기술로, 데이터의 안전성 혹은 높은 성능을 위해 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술
RAID 0
데이터를 단순히 나누어 저장하는 방식
- 장점: 입출력 속도의 향상
- 단점: 저장된 정보가 안전하지 않음
RAID 1
미러링 (mirroring): 데이터를 쓸 때 원본과 복사본 두 군데에 씀 (느린 쓰기 속도)
- 복사본이 만들어지는 용량만큼 사용 불가
-> 많은 양의 하드 디스크가 필요
-> 비용 증가
RAID 4
RAID 1처럼 완전한 복사본을 만드는 대신 패리티 비트 (오류를 검출하고 복구하기 위한 정보를 저장한 장치)를 저장
- 패리티를 저장한 장치를 이용해 다른 장치들의 오류를 검출하고, 오류가 있다면 복구
- 패리티 비트는 본래 오류 검출용 정보지만, RAID에서는 오류 복구도 가능
- 단점: 패리티 디스크의 병목
RAID 5
패리티 정보를 분산하여 저장하는 방식
- RAID 4는 패리티를 저장한 장치를 따로 두는 방식이고, RAID 5는 패리티를 분산하여 저장하는 방식
RAID 6
두 종류의 패리티
- RAID 5보다 안전. 쓰기는 RAID 5보다 느림
- RAID 6는 서로 다른 두 개의 패리티를 두는 방식
내용 정리
6-1. RAM의 특징과 종류
- RAM: 휘발성 저장 장치
- 보조기억장치: 비휘발성 저장 장치
- DRAM (Dynamic RAM)은 시간이 지나면 저장된 데이터가 점차 사라지는 RAM이고, SRAM (Staic RAM)은 시간이 지나도 저장된 데이터가 사라지지 않는 RAM
- SDRAM (Synchronous Dynamic RAM): 클럭과 동기화된 DRAM
- DDR SDRAM (Double Data Rate SDRAM): SDR SDRAM에 비해 대역폭이 두 배 넓음
- 보조기억장치에는 보관할 대상 저장. RAM에는 실행할 대상 저장
- RAM 용량이 크면 많은 프로그램들을 동시에 빠르기 실행하는 데 유리
- 용량이 필요 이상으로 커졌을 때 속도가 그에 비례하여 증가하지는 않음
DRAM과 SRAM의 차이점
6-2. 메모리의 주소 공간
- 물리 주소: 메모리 하드웨어상의 주소
- 논리 주소: CPU와 실행 중인 프로그램이 사용하는 주소
- MMU: 논리 주소를 물리 주소로 변환
- 베이스 레지스터: 프로그램의 첫 물리 주소를 저장
- 한계 레지스터: 실행 중인 프로그램의 논리 주소의 최대 크기를 저장
물리 주소
- 메모리 입장에서 바라본 주소
- 말 그대로 정보가 실제로 저장된 하드웨어 상의 주소
논리 주소
- CPU와 실행 중인 프로그램 입장에서 바라본 주소
- 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소
메모리 관리 장치 (MMU: Memory Management Unit)
- 논리 주소를 물리 주소로 변환
MMU는 CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환
베이스 레지스터: 프로그램의 가장 작은 물리 주소, 즉 프로그램의 첫 물리 주소 저장
논리 주소: 프로그램의 시작점으로부터 떨어진 거리
한계 레지스터: 논리 주소의 최대 크기 저장
베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 값 + 한계 레지스터 값
-> 접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 검사함으로써 메모리 내의 프로그램을 보호할 수 있음
6-3. 캐시 메모리
- 저장 장치 계층 구조: 각기 다른 용량과 성능의 저장 장치들을 계층화하여 표현한 구조
- 캐시 메모리: CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위한 저장 장치
- 캐시 적중률이 높으면 CPU의 메모리 접근 횟수를 줄일 수 있음
- 캐시 메모리는 참조 지역성의 원리에 따라 데이터를 예측하여 캐시 적중률을 높임
저장 장치 계층 구조 (memory hierarchy)
: 각기 다른 용량과 성능의 저장 장치들을 계층화하여 표현한 구조
1. CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
2. 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.
-> 낮은 가격대의 대용량 저장 장치를 원한다면, 느린 속도는 감수해야 하고, 빠른 메모리를 원한다면 작은 용량과 비싼 가격은 감수해야 함.
캐시 메모리
: CPU와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치
- CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생
멀티 코어 프로세서에서의 L1-L2-L3 캐시
- L1 캐시와 L2 캐시는 코어마다 고유한 캐시 메모리로 할당
- L3 캐시는 여러 코어가 공유하는 형태로 사용
- 싱크를 맞추는 게 중요한 문제
- 분리형 캐시: 조금이라도 접근 속도를 빠르게 만들기 위해 명령어만을 저장하는 L1 캐시인 L1I 캐시와 데이터만을 저장하는 L1 캐시인 L1D 캐시로 분리하는 경우도 있음
참조 지역성 원리 (locality of reference, principle of locality)
- CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
-> 시간 지역성 (temporal locality)
- CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
-> 공간 지역성 (spatial locality)
+) 캐시 적중률이 높으면 CPU의 메모리 접근 횟수를 줄일 수 있음
캐시 적중률 (cache hit ratio): 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
- 캐시 히트 (cache hit): 자주 사용할 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우
- 캐시 미스 (cache miss): 자주 사용될 것으로 예측하여 캐시 메모리에 저장했지만, 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우
7-1. 다양한 보조기억장치
- 하드 디스크의 구성 요소에는 플래터, 스핀들, 헤드, 디스크 암이 있음
- 플래터는 트랙과 섹터로 나뉘고, 여러 플래터의 동일한 트랙이 모여 실린더를 이룸
- 하드 디스크의 데이터 접근 시간은 크게 탐색 시간, 회전 지연, 전송 시간으로 나뉨
- 플래시 메모리는 한 셀에 몇 비트를 저장할 수 있느냐에 따라 SLC, MLC, TLC로 나뉨
- 플래시 메모리의 읽기와 쓰기는 페이지 단위로, 삭제는 블록 단위로 이루어짐
하드 디스크
: 자기적인 방식으로 데이터를 저장하는 보조기억장치
하나 이상의 섹터를 묶어 블록(block)이라고 표현하기도 함
플래터는 트랙과 섹터로 나뉘고, 같은 트랙이 모여 실린더를 이룸
하드 디스크가 데이터에 접근하는 시간
- 탐색 시간 (seek time): 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
- 회전 지연 (rotational latency): 헤드가 있는 곳으로 플래터를 회전시키는 시간
- 전송 시간 (transfer time): 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간
플래시 메모리
- 셀: 플래시 메모리에서 데이터를 저장하는 가장 작은 단위
- 하나의 셀에 몇 비트를 저장할 수 있는냐에 따라 플래시 메모리 종류가 나뉨
-> 같은 플래시 메모리라도 내부구조에 따라 수명, 가격, 성능이 다름
- 셀들이 모여 만들어진 단위를 페이지 (page), 페이지가 모여 만들어진 단위를 블록 (block), 블록이 모여 플레인 (plane), 플레인이 모여 다이 (die)가 됨
- 플래시 메모리에서 읽기와 쓰기는 페이지 단위, 삭제는 페이지보다 큰 블록 단위로 이루어짐
- 페이지는 Free, Valid, Invalid 상태를 가질 수 있음
- Free 상태: 어떠한 데이터도 저장하고 있지 않아 새로운 데이터를 저장할 수 있는 상태
- Valid 상태: 이미 유효한 데이터를 저장하고 있는 상태
- Invalid 상태: 쓰레기값이라 부르는 유효하지 않은 데이터를 저장하고 있는 상태
- 플래시 메모리는 하드 디스크와는 달리 덮어쓰기가 불가능하여 Valid 상태인 페이지에는 새 데이터를 저장할 수 없음
- 가비지 컬렉션 (garbage collecion): 유효한 페이지들만을 새로운 블럭으로 복사한 후 기존의 블럭을 삭제하여 공간을 정리하는 기능
-> 블록 X의 모든 유효한 페이지를 새로운 블록 Y로 옮기고 블록 X 삭제
7-2. RAID의 정의와 종류
- RAID: 데이터의 안전성 혹은 높은 성능을 위해 하드 디스크나 SSD를 마치 하나의 장치처럼 사용하는 기술
- RAID 0: 데이터를 단순히 병렬로 분산하여 저장
- RAID 1: 완전한 복사본을 만듦
- RAID 4: 패리티를 저장한 장치를 따로 두는 방식
- RAID 5: 패리티를 분산하여 저장하는 방식
- RAID 6: 서로 다른 두 개의 패리티를 두는 방식
- 보조기억장치들의 성능을 높일 수 있음
- 데이터를 안전하게 보관할 수 있음
8-1. 장치 컨트롤러와 장치 드라이버
- 입출력장치: 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고받음
- 장치 드라이버: 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
컴퓨터 내부와 정보를 주고받기 위해 입출력장치가 장치 컨트롤러를 이용하는 이유
- 입출력장치는 종류가 많아 주고받는 정보의 규격화가 어려움
- 일반적으로 입출력장치와 CPU 간에 전송률의 차이가 크기 때문에
- 전송률 (transfer rate): 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표
장치 컨트롤러의 기능
- CPU와 입출력장치 간의 통신 중개
- 오류 검출
- 데이터 버퍼링
- 버퍼링 (bufferring): 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼 (buffer)라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
-> 장치 컨트롤러는 일반적으로 전송률이 높은 CPU와 일반적으로 전송률이 낮은 입출력장치와의 전송률 차이를 데이터 버퍼링으로 완화
장치 컨트롤러의 간략화된 내부 구조
- 데이터 레지스터 (data register)
- CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레시스터
- 대신 RAM을 사용하기도 함
- 상태 레지스터 (status register)
- 상태 정보 저장
- 입출력장치가 입출력 작업을 할 준비가 되었는지
- 입출력 작업이 완료되었는지
- 입출력장치에 오류는 없는지
- 제어 레지스터 (control register)
- 입출력장치가 수행할 내용에 대한 제어 정보와 명령 저장
장치 드라이버 (device driver)
: 장치 컨트롤러의 동작을 감지하고 제어하는 프로그램
- 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 함
- 장치 컨트롤러: 입출력장치를 연결하기 위한 하드웨어적인 통로
- 장치 드라이버: 입출력장치를 연결하기 위한 소프트웨어 적인 통로
- 컴퓨터가 연결된 장치의 드라이버를 인식하고 실행할 수 있다면 컴퓨터 내부와 정보를 주고받을 수 있음 (장치의 제조사나 생김새 상관없이)
- 장치 드라이버를 인식하거나 실행할 수 없는 상태라면 그 장치는 컴퓨터 내부와 정보를 주고받을 수 없음
8-2. 다양한 입출력 방법
- 프로그램 입출력: 프로그램 속 명령어로 입출력 작업을 하는 방식
- 메모리 맵 입출력: 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 입출력 방식
- 고립형 입출력: 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 별도로 분리하는 입출력 방식
- 인터럽트 기반 입출력: 인터럽트로서 입출력을 수행하는 방법
- DMA 입출력: CPU를 거치지 않고 메모리와 입출력장치 간의 데이터를 주고받는 입출력 방식
- 입출력 버스: 입출력장치와 컴퓨터 내부를 연결짓는 통로로, 입출력 작업 과정에서 시스템 버스 사용 횟수를 줄여줌
프로그램 입출력 (programmed I/O)
: 프로그램 속 명령어로 입출력장치를 제어하는 방법
- 입출력 명령어로서 장치 컨트롤러와 상호작용
- CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어짐
- 메모리 맵 입출력: 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 입출력 방식
- 고립형 입출력: 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 분리하는 입출력 방식
- 메모리 읽기/쓰기 선이 활성화되는 명령어를 실행할 때는 메모리에 접근하고, 입출력장치 읽기/쓰기 선이 활성화되는 명령어를 실행할 떄는 장치 컨트롤러에 접근
- 메모리에 접근하는 명령어와는 다른 (입출력 읽기/쓰기 선을 활성화시키는) 입출력 명령어 사용
인터럽트 기반 입출력 (Interrupt-Driven I/O)
: 인터럽트를 기반으로 하는 입출력
- 장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에게 인터럽트 요청 신호를 보내면 CPU는 하던 일을 잠시 백업하고 인터럽트 서비스 루틴 실행
플래그 레지스터 속 인터럽트 비트를 비활성화한 채 인터럽트를 처리하는 경우
- 입출력 장치에 발생하는 하드웨어 인터럽트에 한함
NMI가 발생한 경우, 플래그 레지스터 속 인터럽트 비트를 활성화한 채 인터럽트를 처리하는 경우
- NMI (Non-Maskable Interrupt): 인터럽트 비트를 활성화해도 무시할 수 없는 인터럽트
- 프로그래머블 인터럽트 컨트롤러 (PIC: Programmable Interrupt Controller)를 사용해 우선순위를 반영하여 다중 인터럽트를 처리
- 여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 지금 처리해야 할 하드웨어 인터럽트는 무엇인지 알려줌
- 1) PIC가 장치 컨트롤러에서 인터럽트 요청 신호를 받아들임
- 2) PIC는 인터럽트 우선순위를 판단한 뒤 CPU에 처리해야 할 인터럽트 요청 신호를 보냄
- 3) CPU는 PIC에 인터럽트 확인 신호를 보냄
- 4) PIC는 데이터 버스를 통해 CPU에 인터럽트 벡터를 보냄
- 5) CPU는 인터럽트 벡터를 통해 인터럽트 요청의 주체를 알게 되고, 해당 장치의 인터럽트 서비스 루틴을 실행함
- PIC가 NMI의 우선순위까지 판별하진 않음
- NMI는 우선순위가 가장 높아 우선순위 판별이 불필요함
- PIC가 우선순위를 조정해 주는 인터럽트는 인터럽트 비트를 통해 막을 수 있는 하드웨어 인터럽트
DMA (Direct Memory Access) 입출력
: CPU를 거치지 않고 메모리와 입출력장치 간의 데이터를 주고받는 입출력 방식
- DMA 입출력을 하기 위해서는 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요
- DMA 입출력 과정
1. CPU는 DMA 컨트롤러에 입출력장치의 주소, 수행할 연산(읽기/쓰기), 읽거나 쓸 메모리의 주소 등과 같은 정보로 입출력 작업을 명령
2. DMA 컨트롤러는 CPU 대신 장치 컨트롤러와 상호작용하며 입출력 작업을 수행. 이떄 DMA 컨트롤러는 필요한 경우 메모리에 직접 접근하여 정보를 읽거나 씀
3. 입출력 작업이 끝나면 DMA 컨트롤러는 CPU에 인터럽트를 걸어 작업이 끝났음을 알림
- DMA는 프로그램 입출력보다 CPU의 입출력 부담이 적음
- DMA 컨트롤러는 CPU를 거치지 않고 메모리와 입출력장치 간의 데이터를 주고 받음
- DMA 컨트롤러와 CPU는 시스템 버스를 동시에 사용할 수 없음
-> DMA 컨트롤러와 장치 컨트롤러들을 입출력 버스 (input/output bus)라는 별도의 버스에 연결하여 해결