Ch1.5 Caches Matter

Park Choong Ho·2021년 8월 12일
0

1.5 Caches Matter

지금까지 살펴본 예시에서 얻을 수 있는 교훈은 시스템인 데이터를 한곳에서 다른 돗으로 옮기는에 많은 시간을 소비한다는 것입니다. hello 프로그램의 기계 인스트럭션은 디스크에 저장되어 있습니다. 프로그램이 로드될 때, 이 인스트럭션들이 메인메모리에 복사됩니다. 프로세서가 프로그램을 돌리면서, 인스트럭션들은 메인메모리에서 프로세서로 복사됩니다. 이와 유사하게 디스크에 있었던 hello wolrd\n 문자열은 메인메모리에 복사되고 그 다음 메인 메모리에서 디스플레이 장치로 복사됩니다. 프로그래머의 시각에서 보면 이러한 많은 복사는 프로그램 실제 구동을 느리게 하는 overhead입니다. 따라서, 시스템 디자이너의 주요 목표는 이러한 복사를 최대한 빠르게 만드는 것이 될것입니다.

물리적인 법칙으로 인해, 큰 저장 장치는 작은 저장 장치보다 더 느립니다. 그리고 더 빠른 장치는 더 작은 장치보다 만드는데 더 비쌉니다. 예를 들어, 전형적인 시스템의 디스크 드라이브는 메인 메모리보다 1,000배 크지만, 프로세서가 데이터를 읽는 속도는 메인 메모리에서 읽어오는 것보다 10,000,000배 더 느립니다.

유사하게, 전형적인 레지스터 파일은 몇백 바이트의 정보만을 담을 수 있는 반면에, 메인 메모리는 몇 십억 바이트를 저장할 수 있습니다. 하지만, 프로세서는 메모리보다 레지스터 파일에서 데이터를 거의 100배 더 빨리 읽어올 수 있습니다. 그리고 반도체 기술이 점점 고도화되감에 따라, 이러한 processor-memory 차이는 점점 증가하고 있습니다. 메인 메모리를 빠르게 동작하게 하는 것보다 프로세서를 빠르게 만드는 것이 더 쉽고 싼 방법입니다.

processor-memory 차이로 인해, 시스템 디자이너들은 cache memory라 불리는 더 작고 빠른 저장장치를 포함했습니다. 이 캐시 메모리는 프로세서가 가까운 미래에 찾을지도 모르는 정보가 잠깐 머무르는 곳이라 생각하면 됩니다.

위 그림의 전형적인 시스템에서의 캐시 메모리입니다. 프로세서 칩의L1 cache는 거의 레지스트 파일 만큼 빠르게 접근 가능하고 몇 바이트를 담을 수 있습니다. 더 큰 L2 cache는 몇 십만에서 몇 백만 바이트를 담고 있고 특별한 버스로 프로세서와 연결되어 있습니다. 프로세서가 L2 cache에 접근하는 것이 L1 cache에 접근하는 것보다 5배 더 걸리지만 여전히 메인메모리에 접근하는 것보다 5 ~ 10배 가량 빠릅니다. L1, L2 cache는 static random access memory(SRAM)라 불리는 하드웨어 기술로 동작합니다. 최신의 더 강력한 시스템들은 심지어 cache를 3 레벨까지 두기도 합니다.(L1, L2, L3) 캐싱을 뒷바침하고 있는 개념은 시스템이 locality라는 개념을 활용하여 크면서 동시에 빠른 메모리로서의 효과를 가지기 위함에 있습니다. locality란 프로그램이 특정 영역의 데이터와 코드의 접근하는 경향성을 의미합니다. cache가 자주 접근하는 데이터를 가지고 있게 함으로써, 빠른 캐시를 사용하는 대부분 메모리 동작들을 수행할 수 있게 됩니다.

이 책에서 가장 중요한 교훈중 하나는 캐시 메모리를 알고 있는 프로그래머는 캐시를 활용해 크기에 따른 프로그램 성능을 향상시킬 수 있다는 것입니다. 이러한 중요한 장치를 배우고 사용하는 법을 6장에서 배우게 됩니다.

profile
백엔드 개발자 디디라고합니다.

0개의 댓글