Chapter 06 메모리와 캐시 메모리
06-1 RAM의 특징과 종류
1. RAM의 특징
① 휘발성 저장 장치(volatile memory)
-전원을 끄면 저장된 내용이 사라진다.
ex) RAM
② 비휘발성 저장 장치(non-volatile memory)
-전원을 꺼도 저장된 내용이 유지된다.
ex) 하드 디스크, SSD, CD-ROM, USB 메모리와 같은 보조기억장치
③ RAM과 보조기억장치의 활용
-CPU는 보조기억장치에 직접 접근할 수 없다.
→비휘발성 저장 장치(보조기억장치)에 '보관할 대상', 휘발성 저장 장치(RAM)에 '실행할 대상'을 저장
→CPU가 실행하고자 하는 프로그램이 비휘발성 저장 장치에 있다면, RAM에 복사, 저장 후 실행한다.
2. RAM의 용량과 성능
① RAM의 용량
-RAM 용량이 적다면 보조기억장치에서 실행할 프로그램을 복사, 저장하는 횟수가 늘어나서 실행 시간이 길어진다.
-RAM 용량이 크다면 보조기억장치에서 많은 데이터를 미리 가져와 저장할 수 있으므로 실행 시간이 절약된다.
→많은 프로그램을 동시에 실행하는 데 유리하다.
② RAM 용량과 성능
-RAM 용량에 비례하여 성능이 좋아지는 것은 아니다.
3. RAM의 종류
① DRAM(Dynamic RAM)
-데이터가 동적인(사라지는) RAM→데이터 소멸을 막으려면 주기적으로 데이터를 재활성화(다시 저장) 해야 한다.
-소비전력이 비교적 낮고, 가격이 저렴하고, 집적도가 높아 대용량으로 설계하기 용이하여 일반적으로 많이 사용된다.
② SRAM(Static RAM)
-데이터가 정적인(변하지 않는) RAM→시간이 지나도 데이터가 소멸되지 않으므로 데이터를 재활성화할 필요가 없다.
RAM이므로, 전원을 끄면 저장된 내용은 사라진다.
-DRAM과 비교하여 속도는 더 빠르지만, 소비전력이 크고, 가격이 비싸고, 집적도가 낮다.
→대용량으로 만들어질 필요는 없으나 속도가 빨라야 하는 저장 장치(캐시 메모리)에 사용된다.
DRAM | SRAM | |
재충전 | 필요하다 | 필요 없다 |
속도 | 느리다 | 빠르다 |
가격 | 저렴하다 | 비싸다 |
집적도 | 높다 | 낮다 |
소비 전력 | 적다 | 높다 |
사용 용도 | 주기억장치(RAM) | 캐시 메모리 |
③ SDRAM(Synchronous Dynamic RAM)
-클럭과 맞춰 동작하며 클럭마다 CPU와 정보를 주고받을 수 있는 RAM
④ DDR SDRAM(Double Data Rate SDRAM)
-대역폭(data rate, 데이터를 주고받는 길의 너비로 자동차 도로에 비유되곤 한다.)을 넓혀 속도가 빠른 RAM
-한 클럭 당 한 번 데이터를 주고받을 수 있는 SDR SDRAM(Single Data Rate SDRAM, 1차선 도로)
-DDR SDRAM은 SDR SDRAM과 비교하여 대역폭을 두 배로 늘렸고(한 클럭 당 두 번 데이터를 주고 받을 수 있다, 2차선 도로), 전송 속도가 두 배 가량 빠르다.
-최근 가장 흔하게 사용하는 메모리는 DDR4 SDRAM은 대역폭이 SDR SDRAM의 16배 넓다.
확인문제
1. ③, SRAM은 캐시 메모리에 주로 사용된다.
2. ① DDR SDRAM, ② SRAM, ③ DRAM, ④ SDRAM
(기본 미션)3. ① SRAM, ② DRAM, ③ DRAM, ④ SRAM
4. ① 2, ② 2
06-2 메모리의 주소 공간
1. 물리 주소와 논리 주소
① 물리 주소(physical address)
-메모리 하드웨어가 사용하는 주소, 정보가 실제로 저장된 하드웨어상의 주소를 의미
② 논리 주소(logical address)
-CPU와 실행 중인 프로그램이 사용하는 주소, 실행 중인 프로그램 각각에 부여된 0번지부터 시작되는 주소를 의미
-프로그램마다 같은 논리 주소는 얼마든지 있을 수 있다.
-CPU는 논리 주소를 받아들이고, 해석하고 연산한다.
③ 메모리 관리 장치(MMU; Memory Management Unit)
-논리 주소와 물리 주소 간 변환이 필요한 이유 : CPU가 메모리와 상호작용하기 위해서(서로 다른 주소 체계를 가지고 이야기하면 소용없다)
-MMU : 논리 주소와 물리 주소 간의 변환을 수행하는 하드웨어
-CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 물리 주소로 변환한다.
∴베이스 레지스터는 프로그램의 첫 물리 주소를 저장, 논리 주소는 프로그램의 시작점으로부터 떨어진 거리인 셈이다.
2. 메모리 보호 기법
① 한계 레지스터(limit register)
-논리 주소 범위를 벗어나는 명령어 실행을 방지, 프로그램 간 영향을 주고받지 않도록 보호할 방법을 담당한다.
프로그램의 논리 주소 영역을 벗어나는 논리 주소의 데이터를 변경하는 명령어는 다른 프로그램의 데이터까지 변경할 수 있으므로 실행되어서는 안 되기 때문이다.
-논리 주소의 최대 크기를 저장한다. → CPU가 접근하려는 논리 주소는 한계 레지스터에 저장된 값보다 클 수 없다.
-베이스 레지스터 값 ≤ 프로그램의 물리 주소 < 베이스 레지스터 값 + 한계 레지스터 값
-CPU는 메모리에 접근하기 전 논리 주소가 한계 레지스터에 저장된 값보다 작은 지를 검사
→CPU가 한계 레지스터보다 높은 값에 접근하려고 할 시, 인터럽트(트랩)를 발생시켜 실행을 중단한다.
확인문제
1. ③
① 실행되는 프로그램은 실행마다 다른 메모리 주소에 적재된다.
② 논리 주소는 CPU가, 물리 주소는 메모리가 이해하는 주소이다.
④ CPU가 이해하는 주소는 논리 주소이다.
2. ③ 논리 주소는 모든 프로그램의 시작 주소를 0번지로 간주한다.
3. ①
4. ① 한계 레지스터, ② 베이스 레지스터
06-3 캐시 메모리
1. 저장 장치 계층 구조
① 저장 장치 계층 구조(memory hierarchy)
-'CPU에 얼마나 가까운가'를 기준으로 계층적으로 나타낸 모습
2. 캐시 메모리
① 캐시 메모리(cache memory)
-CPU와 메모리 사이에 위치한 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치
-CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위해 만들어졌다.
-컴퓨터 내부에는 여러 개의 캐시 메모리가 있고, CPU와 가까운 순으로 L1(level 1) 캐시, L2(level 2) 캐시, L3(level 3) 캐시이다.
-일반적으로 L1, L2 캐시는 코어 내부에, L3 캐시는 코어 외부에 위치한다.
-분리형 캐시(split cache) : 속도 향상을 위하여 L1 캐시를 명령어만을 저장하는 L1I 캐시와 데이터만을 저장하는 L1D 캐시로 분리하는 경우
3. 참조 지역성 원리
캐시 메모리는 CPU가 사용할 법한 대상을 예측하여 저장한다.
① 캐시 히트(cache hit)
-CPU가 자주 사용할 것으로 예측하여 저장한 데이터를 CPU가 활용할 경우
② 캐시 미스(cache miss)
-CPU가 자주 사용할 것으로 예측하여 저장했으나, 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우
-캐시 미스가 발생하면 캐시 메모리의 이점을 활용하지 못한다. 캐시 미스의 빈도가 높음 = 성능이 떨어진다.
③ 캐시 적중률(cache hit ratio)
-캐시가 히트되는 비율
-캐시 적중률 = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
④ 참조 지역성의 원리(locality of reference, principle of locality)
-캐시 메모리가 메모리로부터 가져올 데이터를 결정하는 원칙
④-1 CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
-CPU가 프로그램 실행 중 변수에 저장된 값을 여러 번 사용하기 위해 여러 번 다시 접근하는 것
-시간 지역성(temporal locality)라고 한다.
④-2 CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
-CPU가 프로그램의 관련 데이터들이 모여있는 공간 근처를 집중적으로 접근하는 것
-공간 지역성(spatial locality)라고 한다.
확인문제
(기본 미션)1. ① 레지스터, ② 캐시 메모리, ③ 메모리, ④ 보조기억장치
2. ④ 캐시 적중률이 낮으면 캐시 메모리의 성능이 떨어진다.
'혼자 공부하는 컴구, 운체' 카테고리의 다른 글
[3주차] Chapter 08. 장치 컨트롤러, 장치 드라이버, 다양한 입출력 방법 (0) | 2023.07.23 |
---|---|
[3주차] Chapter 07. 하드 디스크, 플래시 디스크, RAID (0) | 2023.07.23 |
[2주차] Chapter 05. 클럭, 멀티코어, 멀티스레드, 명령어 병렬 처리 기법, CISC, RISC (0) | 2023.07.16 |
[2주차] Chapter 04. ALU, 제어장치, 레지스터, 명령어 사이클, 인터럽트 (0) | 2023.07.16 |
[1주차] Chapter 03. 소스 코드, 명령어, 명령어 구조 (0) | 2023.07.09 |