221121 TIL

apwierk·2022년 11월 21일
0

TIL

목록 보기
29/33

메모리와 캐시 메모리

RAM의 특징과 종류

주기억장치에는 크게 RAM과 ROM 두 가지가 있고, '메모리'라는 용어는 주로 RAM을 지칭한다.

RAM의 특징

  • 휘발성

RAM의 용량과 성능

RAM의 용량이 많을 수록 기억하고있는 프로그램이 많으므로 성능이 좋다고 말할 수 있다.
RAM의 용량이 클 수록 많은 프로그램들을 동시에 실행하는 데에 유리하다.

RAM의 종류

DRAM, SRAM, SDRAM, DDRSDRAM이 대표적이다.

DRAM

  • Dynamic RAM
  • 시간이 지나면 저장된 데이터가 점차 사라짐
  • 데이터의 소멸을 막기 위해 일정 주기로 데이터를 재활성화 해야됨
  • 이런 단점에도 불구하고 소비 전력이 비교적 낮고, 저렴하고, 집적도가 높기에 대용량 설계에 용이

SRAM

  • Static RAM
  • 시간이 지나도 사라지지 않음
  • DRAM보다 속도가 일반적으로 빠름
  • DRAM보다 집적도가 낮고, 소비 전력이 크고, 비쌈 그러므로 주기억장치에서는 주로 DRAM을 사용
  • 대용량이 필요 없고, 속도가 빨라야 하는 저장 장치인 캐시 메모리에서 사용됨

SDRAM

  • 클럭 신호와 동기화된, 발전된 형태의 DRAM
  • CPU와 정보를 주고 받을 수 있음
  • 즉, 클럭마다 CPU와 정보를 주고받을 수 있음

DDR SDRAM

  • 가장 흔히 사용되는 RAM
  • 대역폭을 넓혀 속도를 빠르게 만든 SDRAM

대역폭
: 데이터를 주고 받는 길의 너비

메모리의 주소 공간

주소에는 물리 주소와 논리 주소가 있다.
물리 주소: 메모리 하드웨어가 사용하는 주소
논리 주소: CPU와 실행 중인 프로그램이 사용하는 주소

물리 주소와 논리 주소

물리 주소의 데이터를 메모리 관리 장치(MMU)를 통해 변화하여 논리 주소에 저장하고 CPU는 논리 주소의 데이터를 이용하여 연산한다.
MMU에서 베이스 레지스터값을 이용하여 저장한다.
예를 들어 A프로그램 100번지에 0을 저장하라는 명령을 수행할 경우
A프로그램의 베이스 레지스터가 10000이라고 가정할 경우
논리 주소 = 100, 베이스 레지스터 = 10000 이므로 물리 주소는 10100이 된다
따라서 물리 주소 10100에 0을 저장한다.

베이스 레지스터: 프로그램의 가장 작은 물리 주소
논리 주소: 프로글매의 시작점으로부터 떨어진 거리

메모리 보호 기법

만약 논리 주소가 메모리 범위 밖의 데이터에 대한 명령을 할 경우는 어떻게 될까?
-> 베이스 레지스터와 값이 더해졌을 경우 엉뚱한 물리 주소의 값이 변경된다.
-> 따라서 한계 레지스터를 이용한다.
즉, 한계 레지스터 값을 지정한다
베이스 레지스터 값 < 프로그램 < 베이스 레지스터 값 + 한계 레지스터 값
이 범위를 벗어나는 논리 주소가 명령될 경우 인터럽트를 발생시켜 실행을 중단한다.

캐시 메모리

CPU가 연산을 아무리 빨리 한다고 해도 메모리에 접근하는 시간이 느리면 CPU의 빠른 연산 속도는 사용할 수 없다. 이를 극복하기 위한 저장 장치가 캐시 메모리이다.

저장 장치 계층 구조

빠르고 용량이 큰 저장 장치는 없다.
저장 장치의 특징

  • CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
  • 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.
    각 저장 장치의 장단점을 잘 조율하여 컴퓨터는 일반적으로 다양한 저장 장치를 사용한다.
    'CPU에 얼마나 가까운가'를 기준으로 계층적으로 나타낸 것이 저장 장치 계층 구조라고 한다.
    레지스터 - 캐시메모리 - 메모리 - 보조기억장치 순으로 빠름 - 느림 순이자 소 - 대 순, 비쌈 - 저렴 순이다.

캐시 메모리

위에서 말했듯 캐시 메모리는 CPU의 연산 속도와 메모리 접근 시간을 최대한 맞추기 위해 만들어졌다.
따라서 CPU와 메모리 사이에 위치하고 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치이다.
굳이 비유를 하자면 메모리는 '물건은 많지만 집과는 멀리 떨어져 있어 오래 걸리는 대형 마트'이고, 캐시 메모리는 '물건이 많지는 않지만 가까이 있는 편의점'이라고 보면 된다.
일반적으로 L1, L2, L3가 있고 L1, L2는 코어 내부에, L3는 외부에 위치해 있다.
1-2-3 순으로 빠름 - 느림 순이자 소 - 대 순이다.
L1, L2는 각 코어마다 고유한 캐시 메모리로 할당되고, L3는 여러 코어가 공유하는 형태
L1캐시는 조금이라도 접근 속도을 빠르게 만들기 위해 L1I과 L1D로 나누는 분리형 캐시가 있다.
L1I는 명령어, L1D는 데이터를 저장한다.

참조 지역성 원리

캐시 메모리에는 무엇을 저장할까 ?
CPU가 사용할 법한 대상을 예측하여 저장한다.

예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우 캐시 히트라고 한다. 반대로 틀려서 메모리에서 직접 가져와야 하는 경우를 캐시 미스라고 한다. 캐시 미스가 일어날 경우 캐시 메모리의 이점을 활용하지 않기에 자주 발생할 경우 성능이 떨어진다.
캐시 히트가 일어나는 비율을 캐시 적중률 이라고한다.

캐시 적중률 = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
참조 지역성의 원리를 이용하여 캐시 메모리는 메모리로부터 가져올 데이터를 결정한다.
1. CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
2. CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
예를 들어
1.번의 경우 -> 변수 생성 시 그 변수를 다시 사용한다. -> 시간 지역성
2. CPU가 Xcode를 실행할 적에는 Xcode 프로그램이 모여 있는 공간 근처를 집중적으로 접근할 것이다. -> 공간 지역성

profile
iOS 꿈나무 개발자

0개의 댓글