CSAPP

[CSAPP 정리] (1. A Tour of Computer Systems) Section 1.5 Caches Matter

minkg3532 2025. 4. 21. 17:04

1.5 Caches Matter

1.5 캐시 문제

 

 

 

 

우리가 전 포스트에서 봤던 코드 한 줄 아래 어떤식으로 컴퓨터가 돌아가, 화면으로 결과를 출력해주는지 관찰한 결과는, 결국 시스템이 정보를 한 장소에서 다른 장소로 이동시키는 데 많은 시간을 소비한다는 것입니다.

 

결국 “우리는 프로그램의 계산이나 로직만 중요하다고 생각하지만, 실제 시스템에서는 데이터를 어디서 어디로 얼마나 빠르게 옮기느냐가 성능에 매우 큰 영향을 준다는 사실"입니다.



예를 들어, hello 프로그램의 명령어는 처음에 디스크에 저장되어 있습니다.

프로그램이 메모리로 로드되면, 이 명령어들이 메인 메모리로 복사됩니다.

그 후, 프로세서가 프로그램을 실행하면서, 메인 메모리에서 프로세서로 명령어를 복사해 사용합니다.

 

또한, 프로그램이 사용하는 "hello, world\n"와 같은 데이터 문자열도 처음에는 디스크에 저장되어 있으며, 메인 메모리로 복사된 후 다시 디스플레이 장치로 복사됩니다.

프로그래머의 관점에서 보면, 이 복사 작업들이 오버헤드를 발생시키며, 프로그램의 실제 작업(즉, 프로그램의 핵심적인 연산)이 느려지게 만듭니다.

따라서, 시스템 설계자의 중요한 목표는 이 복사 작업들을 빠르게 처리할 수 있도록 최적화하여 성능 저하를 최소화하는 것입니다.

 

1. 프로그램이 메모리로 로드
프로그램을 실행하기 위해, 이 명령어들( 객체 파일이 메모리로 로드된 후 실행될 프로그램의 실제 코드를 의미 )은 먼저 메인 메모리로 복사
프로그램이 실행 가능한 상태가 되기 위해 메모리로 로드되는 과정

 

2. 메인 메모리에서 프로세서로 명령어 복사
프로세서는 프로그램을 실행하면서, 메인 메모리에 저장된 명령어들을 읽음
이 명령어들은 프로세서로 복사되어 실행됩니다.

컴퓨터 시스템의 메모리 계층 구조

물리 법칙에 따라, 더 큰 저장 장치는 더 작은 저장 장치보다 느리게 동작합니다.

또한, 빠른 저장 장치는 느린 저장 장치보다 만드는 비용이 더 비쌉니다.

 

예를 들어, 일반적인 시스템의 디스크 드라이브는 메인 메모리보다 1,000배 더 크지만, 프로세서가 디스크에서 워드를 읽는 데 걸리는 시간이 메모리에서 읽는 시간보다 10,000,000배 더 오래 걸릴 수 있습니다.


마찬가지로, 일반적인 레지스터 파일은 몇 백 바이트의 정보만 저장하는 반면, 메인 메모리는 수십억 바이트의 데이터를 저장합니다.

하지만 프로세서는 레지스터 파일에서 데이터를 읽는 속도가 메모리에서 읽는 속도보다 약 100배 더 빠릅니다.

 

더욱 문제되는 건, 반도체 기술이 발전함에 따라, 프로세서와 메모리 간의 속도 차이가 계속해서 증가한다는 점입니다.

프로세서를 더 빠르게 만드는 것이 메인 메모리를 더 빠르게 만드는 것보다 쉽고 더 저렴합니다.


프로세서와 메모리 간의 속도 차이 문제를 해결하기 위해, 시스템 설계자들은 캐시 메모리(cache memory)라고 불리는 작고 빠른 저장 장치를 시스템에 포함시킵니다.

캐시는 프로세서가 가까운 미래에 필요로 할 가능성이 높은 정보들을 임시로 저장하는 공간 역할을 합니다.

 

그림 1.8은 일반적인 시스템에서의 캐시 메모리 구조를 보여줍니다.

Figure 1.8


캐시 메모리란?

캐시 메모리는 프로세서와 주기억장치(메인 메모리) 간의 속도 차이를 해결하기 위해 도입된 빠르고 작은 메모리입니다. 이 메모리는 프로그램이 자주 접근할 가능성이 있는 데이터를 임시로 저장하여 프로세서가 빠르게 데이터를 접근할 수 있게 도와줍니다.

 

캐시 메모리의 주요 구성 요소

  • L1 캐시:프로세서 칩 위에 직접 내장되어 있으며, 수만 바이트의 데이터를 저장할 수 있습니다.
    이 캐시는 레지스터 파일만큼 거의 빠르게 접근할 수 있습니다.
  • L2 캐시: 수십만에서 수백만 바이트의 용량을 가지고 있으며, 특수한 버스를 통해 프로세서에 연결되어 있습니다.
  • L3 캐시: L2보다 더 큰 캐시로, 더 큰 용량과 더 많은 데이터를 저장할 수 있습니다. 고급 시스템에서 주로 사용됩니다.

속도 차이 문제 해결

프로세서가 L2 캐시에 접근하는 데는 L1 캐시보다 5배 더 오래 걸릴 수 있지만, 그래도 이는 메인 메모리에 접근하는 것보다 5~10배 더 빠릅니다.

요즘 나오는 고성능 컴퓨터 시스템들은 L1, L2, L3의 세 가지 단계의 캐시 메모리를 갖추고 있습니다.

이들 캐시는 속도와 용량에 따라 층별로 구성되어, 데이터를 더 빠르게 처리할 수 있도록 돕습니다.

캐시의 여러 단계(L1, L2, L3)는 속도와 용량에 따라 최적화되어 있으며, 이를 통해 데이터 접근 속도를 획기적으로 개선할 수 있습니다.


캐시의 핵심 개념은 시스템이 지역성(locality)을 활용하여 매우 큰 메모리와 매우 빠른 메모리의 두 가지 장점을 동시에 얻을 수 있다는 것입니다.

여기서 지역성이란, 프로그램이 특정 지역의 데이터나 코드를 집중적으로 자주 접근하는 경향을 의미합니다.


그래서 시스템은 자주 사용될 가능성이 높은 데이터를 캐시에 미리 저장해두고, 이후 대부분의 데이터 접근을 느린 메인 메모리 대신 빠른 캐시를 통해 처리합니다.

이렇게 하면 전체적인 프로그램 실행 속도가 훨씬 빨라집니다.


캐시의 핵심은, 프로그램이 자주 접근하는 데이터나 코드를 빠르게 처리할 수 있도록 캐시 메모리를 사용하여, 대용량 메모리와 빠른 메모리의 장점을 동시에 얻는 것입니다.

이를 위해 지역성을 활용하는데, 프로그램이 자주 사용하는 데이터나 코드를 미리 캐시에 저장해두어 빠르게 처리할 수 있게 합니다.


이 책에서 가장 중요한 교훈 중 하나는, 캐시 메모리를 이해하는 애플리케이션 프로그래머가 이를 활용하여 프로그램 성능을 몇 배 향상시킬 수 있다는 점입니다.

여러분은 이 중요한 장치들에 대해 더 많이 배우고, 이들을 활용하는 방법을 6장에서 배울 것입니다..