캐시(Cache)는 컴퓨터 아키텍처에서 데이터나 명령어를 미리 복사해 놓는 임시 저장 공간을 말한다. 이 저장 공간은 CPU 내부나 그와 매우 가까운 곳에 위치하여, CPU가 주기억장치(RAM)이나 다른 보다 느린 저장 장치보다 빠르게 데이터에 접근할 수 있도록 돕는다. 캐시의 주된 목적은 시스템의 성능을 향상시키는 것이며, 이는 데이터 접근 시간을 줄임으로써 가능해진다.
캐시는 매우 빠른 속도로 데이터를 제공할 수 있는데, 이는 CPU가 필요로 하는 데이터를 캐시에서 직접 가져올 수 있기 때문이다. 캐시는 주기억장치에 비해 상대적으로 작은 용량을 가지고 있다. 이는 높은 속도의 메모리가 비싸기 때문이다. 캐시는 CPU에 매우 가까이 위치하여 빠른 데이터 전송을 가능하게 한다.
현대의 컴퓨터 시스템에서는 보통 여러 레벨의 캐시(L1, L2, L3)를 사용한다. 이 레벨은 캐시의 속도와 크기, CPU로부터의 거리에 따라 다르다. 캐시는 자주 사용되는 데이터나 명령어를 저장함으로써, CPU가 같은 데이터나 명령어에 대해 반복적으로 느린 주기억장치에 접근하는 것을 방지한다. 이러한 방식으로 시스템의 전반적인 성능을 향상시킨다.
MMU(Memory Management Unit)는 CPU와 메모리 사이에 위치하여 물리적 및 가상 메모리 주소 간의 변환을 담당한다. 가상 메모리 주소를 물리적 메모리 주소로 변환한다. 이는 프로그램이 물리적 메모리 위치를 직접 알 필요 없이 실행될 수 있게 한다.
다른 프로그램의 메모리 영역에 무단으로 접근하는 것을 방지하여 시스템의 안정성과 보안을 유지한다. 가장 효율적인 메모리 접근을 위해 캐시의 사용을 관리한다.
TLB (Translation Lookaside Buffer)는 MMU의 일부로, 가장 최근에 사용된 주소 변환의 결과를 저장하는 작은 캐시다. 가상 주소를 물리적 주소로 변환하는 데 필요한 시간을 줄이기 위해, 자주 사용되는 변환 정보를 저장한다. TLB를 통해 메모리 접근 시간을 줄이고, 시스템의 전반적인 성능을 향상시킨다. TLB가 변환 정보를 가지고 있지 않은 경우에만 MMU가 전체 메모리 변환 과정을 수행한다.

TLB의 효율성은 'TLB hit rate'라는 메트릭으로 측정되는데, 이는 전체 메모리 접근 중 TLB가 변환 정보를 이미 가지고 있어 바로 제공할 수 있는 비율을 의미한다. TLB hit rate가 높을수록 시스템 성능이 더 좋다. MMU와 TLB는 함께 작동하여 메모리 접근 시간을 최적화하고, 프로그램이 효율적으로 실행되도록 한다.
가상 메모리는 컴퓨터 시스템에서 물리적 메모리(주기억장치) 크기를 초과하는 프로그램을 실행할 수 있게 해주는 메모리 관리 기법이다. 이 기술은 물리적 메모리와 보조기억장치(예: 하드 드라이브, SSD)의 일부를 결합해, 마치 더 큰 단일 메모리 공간이 있는 것처럼 운영 체제와 응용 프로그램에게 제공한다.
가상 메모리는 페이지(데이터의 작은 블록)를 기반으로 작동한다. 필요한 페이지는 물리적 메모리로 로드되고, 필요하지 않은 페이지는 보조기억장치로 이동된다. 프로그램은 가상 주소를 사용해 메모리에 접근한다. CPU 내부의 메모리 관리 장치(MMU)는 이 가상 주소를 물리적 주소로 변환한다.
프로그램은 실제 물리적 메모리보다 더 큰 메모리 공간을 사용할 수 있어, 복잡한 작업과 큰 데이터 집합을 처리할 수 있다. 각 프로그램은 독립적인 가상 메모리 공간을 가지므로, 한 프로그램의 오류가 다른 프로그램이나 운영 체제에 영향을 미치지 않는다.
가상 주소를 물리적 주소로 변환하는 과정과 페이지 교체 과정은 시간이 소요되며, 이는 시스템의 전반적인 성능 저하로 이어질 수 있다.
'CS > 메모리 관리' 카테고리의 다른 글
Iteration vs Recursion, Deep copy vs Shallow copy (2) | 2024.03.29 |
---|---|
Page table, Swapping, Page Fault (1) | 2024.03.27 |
Register, RAM, ROM, Disk (0) | 2024.03.26 |
Call by Value vs Call by Reference, Garbage Collection (1) | 2024.03.23 |
Malloc-lab 구현(first-fit, next-fit, best-fit) (1) | 2024.03.23 |