메모리 계층 구조 (Memory Hierachy)
CPU가 연산에 참조하는 메모리는 극히 일부분인데 반해 전체 메모리 용량은 크므로 메모리의 계층 구조를 나눠서 컴퓨터가 더 효율적으로 메모리에 접근할 수 있도록 설계한 것.
상위로 갈수록 CPU와 가까워지며 빈도/속도/용량은 높아지며 가격은 저렴해진다.
Register
CPU는 연산만 가능하다. -> 따라서 연산에 필요한 데이터를 저장할 수 있는 공간이 필요하다.
Register는 CPU 내부에 위치한 고속 메모리로 CPU 연산에 필요한 소량의 데이터를 저장할 수 있도록 고안됨.
ex. 메모리 주소 레지스터 / 메모리 버퍼 레지스터
-> 레지스터로 메모리의 주소 혹은 값을 저장하여 사용
Cache
메인 메모리와 CPU 사이에 위치한 고속 메모리로 메모리 접근 속도 차이에 따른 병목 현상을 완화시키는 역할을 한다.
Cache는 메인 메모리에서 최근에 사용할만한 데이터를 복사하여 저장해놓는다.
성능 개선이 가능한 이유는 Locality에 있다.
Locality(지역성) : 데이터에 대한 접근이 시간적 혹은 공간적으로 가깝게 발생함.
공간 지역성 : 최근에 사용했던 데이터와 인접한 데이터가 참조될 가능성이 높다는 특성
시간 지역성 : 최근에 사용했던 데이터가 재참조될 가능성이 높은 특성
ex.) 공간적 지역성 : 반복문
int arr[10];
for(int i = 0; i < 10; i++){
arr[i] += 1
}
Main Memory
HDD or SSD
비휘발성 메모리이며 메모리 계층 구조에서 가장 크고 저렴하다.
HDD : 헤드가 물리적으로 돌아가며 데이터 기록 및 조회
SSD : 데이터를 전기적으로 기록 및 조회