메모리 계층구조의 핵심 아이디어는 k 계층의 조금 더 빠르고 작은 저장장치가 k+1 계층의 조금더 크고 느린 저장 장치의 캐시역할을 한다는 것임
Storage TechnologiesLocalitycache friendly하게 코드 작성하는 방법
- 공통적으로 많이 쓰는 부분을 빠르게 만들어라
- 프로그램은 주로 몇개의 핵심 함수에서 대부분의 시간을 사용하게 됨. 그리고 이 함수들은 몇개의 루프에서 대부분의 시간을 잡아먹게 되니 핵심 함수의 내부 루프에 집중해서 그 부분을 개선하기
- 내부루프에서의 cache miss 횟수를 줄이기
프로그램 작성 시 Locality를 최대한 활용하는 방법
- 대부분의 연산과 메모리 접근이 일어나는 내부 루프에 최대한 집중해서 작성하라
- 데이터를 순차적으로 접근함(stride 1, memory에 저장되어 있는 순서대로)으로써 spatial locality를 최대화하려고 노력하라
- 메모리에서 한번 읽어진 데이터는 자주 사용하여 temporal locality를 최대화 하도록 노력하라