06 메모리와 캐시 메모리
06-1 RAM의 특징과 종류
RAM
- 실행할 프로그램의 명령어와 데이터 저장
- 휘발성 저장장치: 전원을 끄면 RAM에 저장된 명령어와 데이터가 모두 날라감, 실행할 대상 저장
- 비휘발성 저장장치: 전원이 꺼져도 저장된 내용 유지, 보관할 대상 저장
- CPU는 보조기억장치에 직접 접근하지 못함
- RAM 용량이 충분히 크다면 보조기억장치에서 많은 데이터를 가져와 미리 RAM에 저장할수 있음 -> 많은 프로그램을 동시에 실행하는데 유리
- 용량이 필요 이상을 커졌을 때 속도가 그에 비례하여 증가하지 않음
DRAM
- Dynamic RAM
- 시간이 지나면 저장된 데이터가 점차 사라지는 RAM
- 일정 주기로 데이터를 재활성화 해야함
- 소비전력이 비교적 낮고, 저렴하고, 집적도가 높기 때문에 대용량으로 설계하기 용이
SRAM
- Static RAM
- 저장된 데이터가 변하지 않는 RAM
- 일반적으로 속도가 빠름
- 집적도가 낮고, 소비전력도 크며, 가격도 더 비쌈
- 대용량으로 만들어질 필요는 없지만 속도가 빨라야하는 저장장치 -> 주로 캐시 메모리
SDRAM
- 클럭 신호와 동기화된, 발전된 형태의 DRAM
- 클럭 타이밍에 맞춰 CPU와 정보를 주고받을 수 있음
DDRAM
- 대역폭을 넓혀 속도를 빠르게 만든 SDRAM
- 대역폭: 데이터를 주고받는 길의 너비
[ 기본 미션 ]
다음 설명을 읽고 SRAM에 대한 설명인지 DRAM에 대한 설명인지 쓰세요
주로 캐시 메모리로 활용됩니다. -> SRAM
주로 주기억장치로 활용됩니다. -> DRAM
대용량화하기 유리합니다. -> DRAM
집적도가 상대적으로 낮습니다. -> SRAM
06-2 메모리의 주소 공간
물리주소
- 메모리 하드웨어가 사용하는 주소
- 정보가 실제로 저장된 하드웨어상의 주소
논리주소
- CPU와 실행중이 프로그램이 사용하는 주소
- 실행중인 프로그램 각각에게 부여된 0번지부터 시작되는 주소
메모리 관리 장치 MMU
- CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환
- 베이스 레지스터: 프로그램의 가장 작은 물리 주소, 프로그램의 첫 물리주소 저장
한계 레지스터
- 다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하기 때문에 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호 담당
- 논리 주소의 최대 크기 저장
- 프로그램의 물리 주소 범위는 베이스 레지스터 값 이상, 베이스 레지스터 값 + 한계 레지스터 값 미만
- CPU가 접근하려는 논리 주소는 한계 레지스터가 저장한 값보다 커서는 안됨
06-3 캐시 메모리
낮은 가격대의 대용량 저장 장치를 원한다면 느린 속도는 감수해야 하고, 빠른 메모리를 원한다면 적은 용량과 비싼 가격은 감수해야 한다
캐시 메모리
- CPU와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치
- CPU의 연산 속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생
- 캐시메모리에 CPU가 필요로 하는 데이터가 있다면 필요한 데이터로의 접근 시간을 줄일 수 있음
- CPU가 사용할 법한 대상을 예측하여 저장
캐시 히트
- 자주 사용될 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우
캐시 미스
- 자주 사용될 것으로 예측하여 캐시 메모리에 저장했지만, 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우
캐시적중률
- 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
참조 지역성의 원리
- 시간지역성: 최근에 접근했던 메모리 공간에 다시 접근하려는 경향
- 공간지역성: 접근한 메모리 공간 근처에 접근하려는 경향
[ 기본미션 ]
다음 보기에 있는 저장 장치들로 저장 장치 계층 구조 도식도를 채우세요
1. 레지스터
2. 캐시 메모리
3. 메모리
4. 보조기억장치
07 보조기억장치
07-1 다양한 보조기억장치
하드디스크
- 자기적인 방식으로 데이터를 저장하는 보조기억장치
- 대용량 저장 장치에 많이 쓰임
플래터
- 하드디스크에서 실질적으로 데이터가 저장되는 곳
- 스핀들: 플래터 회전시킴
- RPM: 스핀들이 플래터를 돌리는 속도, 분당 회전수
- 헤드: 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소
- 디스크 암: 헤드를 원하는 위치로 이동시키는 장치
- 일반적으로 여러 겹의 플래터로 이루어져 있고 플래터 양면을 모두 사용할 수 있음
- 트랙: 플래터를 여러 동심원으로 나누었을 때 그 중 하나의 원
- 섹터: 트랙을 여러 조각으로 나누었을 때 하나의 조각
- 실린더: 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위, 연속된 정보는 보통 한 실린더에 기록됨
- 탐색시간: 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
- 회전지연: 헤드가 있는 곳으로 플래터를 회전시키는 시간
- 전송시간: 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간
플래시메모리
- USB 메모리, SD 카드, SSD
- 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치
- 셀: 플래시 메모리에서 데이터를 저장하는 가장 작은 단위
1) SLC
- 한 셀에 1비트 저장 가능 = 한 셀로 2개의 정보 표현 가능
- 비트의 빠른 입출력 가능
- 수명도 가장 긺
- 용량 대비 가격이 높음
2) MLC
- 한 셀에 2비트 저장 가능 = 한 셀로 4개의 정보 표현 가능
- SLC 타입보다 속도와 수명은 떨어지지만 대용화하기 유리함
3) TLC
- 한 셀에 3비트 저장 가능 = 한 셀로 8개의 정보 표현 가능
- 용량 대비 가격이 저렴함
- 페이지: 셀들이 모여 만들어진 단위
- 블록: 페이지가 모여 만들어진 단위
- 플레인: 블록이 모여 만들어진 단위
- 다이: 플레인이 모여 만들어진 단위
- 플래시 메모리에서 읽기와 쓰기는 페이지 단위로 이루어짐
- 삭제는 블록 단위로 이루어짐
- 페이지는 Free(어떠한 데이터도 저장하고 있지 않아 새로운 데이터를 저장할 수 있는 상태), Valid(이미 유효한 데이터를 저장하고 있는 상태), Invalid(쓰레기값이라 불리는 유효하지 않은 데이터를 저장하고 있는 상태) 상태를 가질 수 있음
- 가비지 컬렉션: 유효한 페이지들만 새로운 블록으로 복사한 후 기존 블록을 삭제하여 공간을 정리하는 기능
07-2 RAID의 정의와 종류
RAID
- 데이터의 안정성 혹은 높은 성능을 위해 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술
RAID 0
- 여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 방식
- 스트라입, 스트라이핑
- 저장된 데이터를 읽고 쓰는 속도가 빨라짐
- 저장된 정보가 안전하지 않음
RAID 1
- 복사본을 만드는 방식
- 미러링
- 복구가 매우 간단함
- 하드 디스크 개수가 한정되었을 때 사용 가능한 용량이 적어짐
RAID 4
- 완전한 복사본을 만든느 대신 오류를 검출하고 복구하기 위한 정보를 저장한 장치를 두는 구성 방식
- 패리트 비트: 오류를 검출하고 복구하기 위한 정보
- 데이터를 안전하게 보관 가능
- 새로운 데이터가 저장될 때마다 패리티를 저장하는 디스크에도 데이터를 쓰게되므로 패리티를 저장하는 장치에 병목 현상이 발생함
RAID 5
- 패리티 정보를 분산하여 저장하는 방식
- RAID 4의 문제인 병목 현상 해소
RAID 6
- 기본적으로 RAID 5와 같으나, 서로 다른 두 개의 패리티를 두는 방식
- RAID 4나 RAID 5보다 안전한 구성
- 새로운 정보를 저장할 때마다 함께 저장할 패리티가 두 개이므로, 쓰기 속도는 RAID 5보다 느림
- 저장 속도가 조금 느려도 데이터를 더욱 안전하게 보관하고 싶을 때 사용
08 입출력장치
08-1 장치 컨트롤러와 장치 드라이버
전송률
- 데이터를 얼마나 빨리 교환할 수 있는지를 나타낸 지표
장치 컨트롤러
- 입출력 제어기, 입출력 모델
- 모든 입출력 장치는 각자의 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고받고, 장치 컨트롤러는 하나 이상의 입출력장치와 연결되어 있음
- 해결하는 문제
1) CPU와 입출력장치 간의 통신 중개
2) 오류 검출
3) 데이터 버퍼링
- 버퍼링: 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
- 내부 구조
1) 데이터 레지스터
- CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터
- 버퍼 역할
2) 상태 레지스터
- 입출력장치가 입출력 작업을 할 준비가 되었느지, 입출력 작업이 완료되었는지, 입출력장치에 오류는 없는지 등의 상태 정보 저장
3) 제어 레지스터
- 입출력장치가 수행할 내용에 대한 제어 정보와 명령 저장
장치드라이버
- 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
08-2 다양한 입출력 방법
프로그램 입출력
- 기본적으로 프로그램 속 명령어로 입출력장치를 제어하는 방법
1) 메모리 앱 입출력
- 메모리에 접근하기 윟나 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법
- 메모리 주소 공간이 축소됨
- 메모리와 입출력장치에 같은 명령어 사용 가능
2) 고립형 입출력
- 메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리하는 방법
- 메모리 주소 공간이 축소되지 않음
- 입출력 전용 명령어 사용
인터럽트 기반 입출력
- 인터럽트를 기반으로 하는 입출력
- 순차적으로 해결
- 우선순위 반영하여 해결
1) 프로그래머블 인터럽트 컨트롤러
- PIC: 여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청들의 우선순위를 판별한 뒤 CPU에 지금 처리해야할 하드웨어 인터럽트는 무엇인지 알려줌
DMA 입출력
- 입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식
- 입출력 버스: 입출력장치와 컴퓨터 내부를 연결 짓는 통로로, 입출력 작업 과정에서 시스템 버스 사용 횟수를 줄여줌
현재 시각 1월 21일 일요일 오후 11시 7분... 해야할 일을 미루지 말고 미리미리 하자..
'CS' 카테고리의 다른 글
[혼공컴운] 혼공단 5주차: 12~13 (1) | 2024.02.04 |
---|---|
[혼공컴운] 혼공단 4주차: 09~11 (1) | 2024.01.28 |
[혼공컴운] 혼공단 2주차: 04~05 (0) | 2024.01.14 |
[혼공컴운] 혼공단 1주차: 01 ~ 03 (0) | 2024.01.07 |
[혼공컴운] 혼공단 0주차 (0) | 2023.12.29 |
댓글