본문 바로가기
Programming/Knowledge

캐시 메모리(Cache memory)

by OKOK 2018. 5. 7.

개요 

컴퓨터 시스템의 성능으 향상시키기 위해 주로 CPU 칩 안에 포함되는 빠르고 작고 매우 비싼 메모리입니다. 프로그램에서 직접적으로 읽거나 쓸 수 없고 하드웨어의 메모리 관리 시스템이 내부적으로 제어합니다. 대부분의 프로그램은 한번 사용한 데이터를 다시 사용할 가능성이 높고, 그 주변의 데이터도 곧 사용할 가능성이 높은 데이터 지역성을 가지고 있습니다. 데이터 지역성을 활용하여 메인 메모리에 있는 데이터를 캐시 메모리에 불러와 두고, 시피유가 필요한 데이터를 캐시에서 먼저 찾도록 하면 시스템 성능을 향상 시킬 수 있습니다. 


CPU의 클럭속도가 매우 빨라짐에 따라 디랩과의 속도 차이가 현저하게 증가하였는데, 이 때문에 CPU클럭 속도를 아무리 올려도 DRAM에서 데이터를 빠르게 제공해 주지 못하여 전체 시스템 성능이 증가하기 어렵게 되었습니다. 메모리 기술은 주로 DRAM, SRAM 기술로 나뉘는데, DRAM은 싸지만 속도가 느리고, SRAM은 속도는 빠르지만 가격이 비싸다는 단점이 있습니다.  


캐시 메모리는 데이터 지역성의 원리를 사용합니다. 데이터 지역성은 데표적으로 시간 지역성과 공간 지역성으로 나뉘는데, 시간 지역성이란 for 나 while 같은 반복문에 사용하는 조건 변수처럼 한번 참조된 데이터는 잠시 후에 또 참조될 가능성이 높다는 것이고, 공간 지역성이란 A[0], A[1] 과 같은 데이터 배열에 연속으로 접근할 때 참조된 데이터 근처에 있는 데이터가 잠시 후에 참조될 가능성이 높다는 것 입니다. 실제 캐시 메모리가 없이 클럭 속도가 더 높은 CPU가 클럭 속ㄷ는 낮지만 캐시 메모리가 있는 CPU보다 대체로 더 나쁜 성능을 보여줍니다. 


가장 기본적인 캐시구조. 디램의 여러 주소가 캐시 메모리의 한 주소에 대응되는 다대일 방식입니다. 인데스 필드, 태그 필드라 하고, 기본적으로 태그 비트와 인덱스 비트 뒤에 데이터를 저장하는 데이터 필드가 붙어있는 구조를 갖고 있습니다.