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 |
댓글