CPU와 주기억장치간 데이터 병목현상을 줄이기 위한 메모리
컴퓨터의 성능에 가장 영향을 많이 미치는 장치 중 하나로, 참조국한성(locality of reference)을 이용한 장치입니다.
참조국한성이란, 자주 사용하는정보는 통계상 한 영역에 국한되어 있음을 의미합니다.
이를 메모리 참조 관점에서 보면, 국한된 영역 및 자주 사용하는 명령어 주변에서만 메모리 참조가 일어나며 참조하는 메모리는 어느 정도 일관성이 있음을 일컫습니다.
locality의 근거로 프로그래밍 패턴 및 루프, 서브루틴의 빈번한 활용 / 순차적 프로그램의 실행 / 데이터 메모리 참조에서도 동일한 경향성 등이 있습니다.
캐시 메모리는 CPU와 주기억장치 중간에 위치하여, 그만큼 컴퓨터 성능에 중대한 영향을 미치는 요소로 중요한 곳에 있습니다.
처리 속도는 CPU만큼 빠르지만, 비용 문제로 인하여 경제적 요소를 고려한 설계로 용량은 작습니다.
캐시메모리를 통해 컴퓨터는 평균 메모리 접근 시간과 전체 프로그램 수행시간을 비약적으로 절약할 수 있습니다.
Hit / Miss
CPU가 메모리 참조를 할 경우 가장 먼저 탐색하는 곳이 캐시메모리입니다.
찾고자 하는 워드가 캐시메모리에서 발견 시(hit) 해당 data를 바로 참조하고, 없을 경우(miss) 주기억 장치에 접근합니다.
이때 주기억장치는 block 단위로(1~16워드) 찾은 정보를 캐시 메모리로 전송하여 기억하게 됩니다.
컴퓨터의 성능을 알 수 있는 수치로, hit 수 / CPU에 의한 메모리 참조 수(주기억장치 포함) 입니다.
히트율은 참조국한성에 의해 약 0.9입니다.
Cache 메모리가 1개 존재할 때
아래와 같은 구조로 메모리가 존재한다고 가정해보겠습니다.
캐시 하나(L1)와 메인 메모리(M) 하나를 가진 CPU가 있습니다.
캐시의 Hit Ratio가 0.5 이고 캐시에 접근하는데 걸리는 시간은 10 ns, 메인 메모리에 접근하는 시간은 800 ns 입니다. (캐시에 데이터가 존재하는지 여부는 캐시에 우선 접근하고 나서 알게 됩니다.)
캐시 접근 후에 데이터 유무를 알 수 있으므로, Cache에 접근하여 데이터를 찾을 확률 + 없는 경우 주기억 장치에서 데이터를 찾을 확률로 평균 메모리 접근 시간을 알 수 있습니다.
평균메모리 접근 시간은 Cache 접근시간 x hit ratio + 주기억장치 접근시간 x miss ratio 입니다.
= 10 x 0.5 + 800 x 0.5 = 405ns
→ 405ns 입니다.
Cahce 메모리가 여러 개 존재할 때
아래와 같은 구조로 메모리가 존재한다고 가정해보겠습니다.
위 시스템에서 캐시와 메인 메모리 사이에 캐시를 두개 더 추가했습니다.
따라서 시스템에는 캐시 L1, 캐시 L2, 캐시 L3, 메인메모리 M이 있습니다.
L1의 접근 시간은 10 ns, L2의 접근시간은 50ns, L3의 접근 시간은 100ns, M의 접근 시간은 800 ns입니다.
L1의 Hit Ratio는 0.5, L2의 Hit Ratio는 0.6, L3의 Hit Ratio는 0.8 입니다.(접근 순서는 L1 → L2 → L3 → M 입니다.)
평균데이터 접근 시간은 캐시메모리를 통해 데이터를 찾은 경우와, 찾지 못하였을 때 주기억 장치에 접근하여 데이터를 찾은 경우가 합산된 수치입니다.
이때 캐시가 다중으로 구성되어 있으므로, 각 캐시히트시간과 미스율 및 미스패널티를 모두 고려해야 합니다.
※미스패널티 = 이전 캐시에서 데이터를 못찾았을 경우 다음 캐시에서 데이터를 찾기까지의 소요시간
Cache 메모리는 많이 있을 수록 성능 개선 효과가 큼
캐시메모리가 1개 존재할 때보다 여러 개 존재할 때 평균 접근 시간이 약 87% 개선되었음을 알 수 있습니다.