지역성의 원리
참조의 지역성(Locality of reference or Principle of locality)라고도 하는데 쉽게 설명하자면 한번 참조한 데이터(명령어)는 다시 참조할 가능성이 높다는 것이다. 다시 참조할 데이터가 공간적으로 인근에 있는 특성을 공간적 지역성(Spatial locality)라 하고, 시간적으로 인근에 있는 특성을 시간적 지역성(Temporal locality)라고 한다. 이 특성은 페이징이나 캐시 도입의 이론적 배경이 된다.
캐시 메모리를 예를들면, CPU가 명령어를 수행하는 과정을 보면 PC(Program Count)가 가르키는 주소의 명령어를 메인 메모리에서 CPU내로 읽어와서 연산한다. 대부분 순차적(Loop나 Goto문은 제외) 불러오게 되는데 만일 1개씩 메인 메모리에서 읽어오는 것보다 한꺼번 10개씩 읽어와 CPU내의 캐시 메모리로 저장했다가 이를 읽어서 연산하는 것이 훨씬 빠를 것이다.
간단한 예를 들면 캐시의 교체 알고리즘 중에 LRU(Least Recently Use)라는 것이 있다. 이는 가장 오랜동안 사용하지 않는 블록(데이터의 집합단위)을 교체 알고리즘으로 시간적 지역성에 근간을 둔 것이다. Loop 또한 시간적 지역성의 대표적이 예이다.
'개인적으로 속도를 높일 수 있는 방법에 유난히 관심히 많이 간다. 인간은 어쩔 수 없이 속도나 효율을 무시할 수 없는가보다'
참조 : http://en.wikipedia.org/wiki/Locality_of_reference
Posted by 좐군


