메모리 계층
메모리의 범위와 종류
1. 메인(Main) 메모리
메인 메모리인 램(RAM), 좀 더 정확히 말하면 D램(D-RAM) 계열의 메모리
메인메모리가 반드시 램일 필요는 없다
2. 레지스터(Register)
CPU안에 내장되어 있어서 연산을 위한 저장소를 제공
3. 캐쉬(Cache)
캐쉬는 D램보다 빠른 S램(S-RAM)으로 구성, 캐쉬는 CPU와 램 사이에서 중간 저장소 역할을 하는 메모리이다.
4. 하드디스크(Hard Disk)
하드디스크도 당연히 메모리, 크고 작은 파일들을 저장하기 위한 용도로 사용
메모리 계층 구조(Memory Hierarchy)
프로그램이 실행되는 동안에 메모리가 하는 역할은 데이터의 입력 및 출력이다.
그 대상이 레지스터이건, 하드디스크이건, 모두가 동일하다.
다른 메모리들의 차이
가장 큰 차이점은 CPU를 기준으로 얼마나 멀리 떨어져 있는가
CPU와 가까이 있을수록 빠르고, 멀리 있을수록 속도가 느리다.
CPU의 레지스터 접근은 별다른 절차가 필요없다.
하지만 메인 메모리에 접근하기 위해서는 몇몇 복잡한 과정을 거친다.
대표적인 것이 버스 인터페이스 컨트롤이다. 메모리 버스를 거쳐야 하기 때문에 그만큼 더 느리다.
하드 디스크같은 느린 메모리 사용 이유
CPU 근처로 대용량의 메모리를 가져 갈수록 기술적인 문제들도 발생하고 비용도 훨씬 많이 든다.
하드디스크 용량을 수십 기가바이트 늘리는 것보다, 캐쉬 메모리 1M바이트 늘리는 데 드는 비용이 훨씬 크다.
각자 역할
-
하드디스크에 있는 내용은 프로그램의 실행을 위해서 메인 메모리로 이동
-
메인 메모리에 있는 데이터 일부도 실행을 위해서 L2 캐쉬로 이동
-
L2 캐쉬에 있는 데이터 일부는 L1 캐쉬로 이동
-
L1 캐쉬에 있는 데이터에서 연산에 필요한 데이터가 레지스터로 이동
-
즉, 모든 메모리의 역할이 피라미드 구조에서 자신보다 아래에 있는 메모리를 캐쉬하기 위해서 존재하는 것으로 이해
캐쉬 메모리는 높은 성능 향상을 가져다 준다.
메인 메모리를 제외한 L1캐쉬와 L2캐쉬에, 연산에 필요한 데이터가 존재할 확률이 90% 이상 된다.
결국 메인메모리까지 생각하면 하드디스크에서 데이터를 읽어들이는 빈도수는 전체 메모리 접근 빈도수의 불과 몇 퍼센트도 되지 않고
대부분 캐시 부분에서 해결이 된다.
출처 : https://popcorntree.tistory.com/68