Chapter06 메모리와 캐시 메모리
1 RAM의 특징과 종류
2 메모리의 주소 공간
3 캐시 메모리
저장 장치 계층 구조
왜 계층 구조가 필요할까?
모든 사용자들은 빠르고 용량이 큰 저장 장치를 원하지만,
CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다.
따라서, 저장 장치 계층 구조를 구성해서 사용하고 있다.
계층 예시 속도 용량 가격 레지스터 CPU 내부 1ns 1KB 가장 비쌈 캐시 메모리 L1, L2, L3 캐시 10ns 1MB 비쌈 메인 메모리 RAM 100ns 1GB 보통 보조기억장치 SSD, HDD 1ms 1TB 저렴
캐시 메모리(Cache Memory)
CPU의 연산 속도는 빠르지만, 메모리 접근 속도는 상대적으로 느리다.
이 차이를 완화하기 위해 중간 단계인 캐시 메모리가 필요하다.
CPU와 메모리 사이에 존재하면서 자주 사용하는 데이터를 임시 저장해 속도를 높이는 장치이다. 레지스터보다 용량이 크고 메모리(RAM)보다 속도가 빠른 SRAM 기반의 저장 장치이다.
계층 위치 속도 용량 공유 여부 가격 L1 캐시 코어 내부 매우 빠름 작음 코어 전용 비쌈 L2 캐시 코어 내부 빠름 중간 코어 전용 보통 L3 캐시 코어 외부 느림 큼 여러 코어가 공유함 저렴
참조 지역성 원리(Principle of Locality)
캐시 메모리는 메모리보다 용량이 작아서, 모든 데이터를 저장할 수 없다.
따라서, 어떤 데이터를 저장할지 결정할 기준이 필요한데, 그 기준이 바로 참조 지역성이다.
시간 지역성(Temporal Locality)
최근에 접근한 데이터는 다시 접근할 가능성이 높다.public static void main(String[] args) { int num = 2; for (int i = 1; i <= 9; i++) { System.out.println(num + " * " + i + " = " + (num * i)); } }
num과 i라는 변수는 for문 안에서 반복해서 사용되므로 CPU는 최근에 접근했던 메모리 공간을 다시 접근하게 된다..
CPU는 이전에 접근한 변수의 메모리 위치를 다시 접근하므로 시간 지역성이 높다고 볼 수 있다.
공간 지역성(Spatial Locality)
어떤 메모리 공간에 접근하면, 그 근처의 메모리 공간에도 접근할 가능성이 높다. CPU는 하나의 프로그램을 실행할 때 그 프로그램과 관련된 인접한 데이터들도 함께 접근할 가능성이 높다.윈도우 프로세서 실행 시, 해당 기능과 관련된 모듈들이 인접한 메모리 공간에 저장되어 있다.
사용자가 입력 기능을 사용할 때, 입력 관련 기능들이 모여 있는 근처 공간에 집중적으로 접근한다.
캐시 메모리와의 관계
캐시 메모리는 이 두가지 지역성을 고려하여 CPU가 필요로 할 데이터를 미리 불러와 저장한다.
실제로 필요한 데이터가 캐시에 존재하면 캐시 히트
없으면 캐시 미스라고 한다.
캐시 성능과 적중률
캐시 적중률을 높이려면 CPU가 필요로 할 데이터를 잘 예측해야 하며
이는 참조 지역성 원리를 제대로 활용할 때 가능하다.캐시 적중률 = (캐시 히트 수) / (캐시 히트 수 + 캐시 미스 수) * 100
일반적으로 85~95%이면 이상적이다.
Leave a comment