Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cache Memory의 역할 #1

Open
yeonjaee opened this issue Jun 4, 2023 · 1 comment
Open

Cache Memory의 역할 #1

yeonjaee opened this issue Jun 4, 2023 · 1 comment

Comments

@yeonjaee
Copy link
Owner

yeonjaee commented Jun 4, 2023

Cache Memory란 주 메모리와 프로세서 사이에 위치하며 데이터의 엑세스 속도를 향상시키는 데 사용됩니다.

캐시 메모리의 주요 목적은 프로세서가 반복적으로 액세스하는 데이터를 저장하여 더 빠른 액세스를 제공하는 것입니다. 이는 "지역성(Locality)" 원리에 기반하고 있습니다. 프로그램은 일반적으로 데이터나 명령어를 지역적으로 집중적으로 액세스하는 경향이 있으며, 이러한 지역성을 이용하여 캐시 메모리는 빈번하게 액세스되는 데이터를 저장함으로써 액세스 지역성을 활용합니다.

캐시 메모리는 일반적으로 빠르고 작은 용량을 가지며, 주 메모리에 비해 접근 시간이 훨씬 빠릅니다. 따라서 프로세서가 데이터를 요청할 때, 먼저 캐시 메모리를 검사하여 필요한 데이터가 캐시에 있는지 확인합니다. 데이터가 캐시에 존재한다면, 이를 "캐시 히트(Cache Hit)"라고 하며, 프로세서는 빠른 시간 내에 데이터에 접근할 수 있습니다. 반면, 데이터가 캐시에 존재하지 않고 주 메모리에서 가져와야 한다면, 이를 "캐시 미스(Cache Miss)"라고 하며, 프로세서는 주 메모리에서 데이터를 가져와 캐시에 저장한 후에 데이터에 액세스합니다.

캐시 메모리는 데이터의 지역성을 이용하여 캐시 히트 확률을 높이고, 이로 인해 프로세서의 액세스 시간을 줄이는 장점을 제공합니다. 주 메모리보다 빠른 액세스 속도와 더 작은 용량으로 인해, 캐시 메모리는 프로세서와 주 메모리 사이의 데이터 전송을 줄이고 전체 시스템 성능을 향상시킵니다.

캐시 메모리는 계층적 구조로 설계되어 있으며, 여러 수준의 캐시가 있을 수 있습니다. 작은 용량의 L1 캐시부터 시작하여 용량은 더 크지만 액세스 시간이 더 오래 걸리는 L2, L3 캐시 등으로 이어집니다. 이러한 계층구조를 사용함으로써 캐시 메모리는 더 빠른 액세스 속도와 적절한 용량을 제공하면서도 전체적인 시스템 비용을 효율적으로 관리할 수 있습니다.

또한, 캐시 메모리는 프로세서와 주 메모리 간의 데이터 일관성을 유지하는 역할도 수행합니다. 캐시 메모리에 저장된 데이터가 변경되면, 해당 데이터는 주 메모리와 일치하도록 업데이트되어야 합니다. 이를 위해 캐시 일관성 프로토콜이 사용되며, 캐시 메모리는 데이터의 일관성을 유지하면서 프로세서가 항상 최신 데이터에 액세스할 수 있도록 보장합니다.

캐시 메모리는 컴퓨터 시스템의 성능 향상에 매우 중요한 역할을 합니다. 데이터의 지역성을 활용하여 빠른 액세스 속도를 제공하고, 프로세서와 주 메모리 간의 데이터 전송을 최소화하여 전체 시스템 성능을 향상시킵니다. 따라서 컴퓨터 아키텍처와 시스템 설계 과정에서 캐시 메모리의 적절한 구성과 관리에 대한 고려가 필요합니다.

@yeonjaee
Copy link
Owner Author

yeonjaee commented Jun 4, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant