내 자신의 이해에 따르면, CPU에서 데이터를 처리하려면 다음 위치에 배치해야 합니다.램, 그 동안 CPU 자체는캐시 메모리, 이는 데이터에 액세스하는 데에도 사용됩니다. CPU 캐시가 CPU에 '더 가깝고' 다른 어떤 종류의 메모리보다 빠르다는 것은 꽤 잘 알려진 사실입니다. 하지만 처리를 위해 데이터가 CPU 캐시에 있어야 하는지 여부가 다소 불분명합니다. 그렇다면 캐시는 어떻게 대용량의 데이터를 보관할 수 있을까요? (캐시 크기는 RAM에 비해 최대 몇 mb로 작은 경향이 있으며 대개 1보다 작습니다.) 그렇지 않은 경우 CPU는 캐시에 보관할 데이터 부분을 어떻게 결정합니까?
나는 또한 스왑에 대해 약간 혼란스러워했습니다. CPU가 이를 RAM의 일부로 처리하고 거기에 보관된 데이터를 HDD에서 직접 처리할 수 있습니까?
답변1
CPU의 캐시는 데이터를 저장하지 않고 액세스 속도를 높일 뿐입니다.
캐시에 대한 가장 기본적인 설명은 CPU가 RAM에서 특정 바이트를 읽으려고 할 때 해당 데이터도 캐시에 복사된다는 것입니다. 다음에 CPU가 해당 바이트를 읽어야 할 때 메모리 컨트롤러는 해당 바이트가 캐시에 있음을 확인하고 RAM을 느리게 호출하는 대신 CPU에 캐시의 데이터를 전달합니다.
하지만 이 설명에는 두 가지 구체적인 문제가 있습니다.
캐시의 크기는 유한합니다. 이 때문에 데이터가 추가되면 결국 오래된 데이터를 제거(또는 '삭제')하여 공간을 확보해야 합니다. 이를 수행하는 방법에는 여러 가지가 있으며 정확한 방법론은 이 논의에서 그다지 중요하지 않습니다. 그러나 중요한 것은 잠시 후 데이터가 더 이상 캐시에 있지 않을 수 있으며 그런 다음 나가야 한다는 것입니다. 어쨌든 메인 메모리로.
데이터가 기록되면 이전에 해당 주소에 저장된 캐시에서 데이터를 업데이트하거나 제거해야 합니다. 이를 처리하는 세 가지 주요 방법이 있습니다.
- 쓰기 저장(Writeback): 쓰기 저장 방법을 사용하면 데이터가 먼저 캐시에 쓰여진 다음 최종적으로 주 메모리에 쓰여집니다. 이는 성능 면에서 여러 가지 장점이 있지만 일부 상황에서는 문제가 발생할 수 있습니다.
- Writethrough: Writethrough 방법을 사용하면 데이터가 캐시와 주 메모리 모두에 동시에 기록됩니다. 이는 쓰기 저장보다 성능은 낮지만 더 안전합니다.
- Write-around: Write-around 방식을 사용하여 데이터를 메인 메모리에 직접 쓴 후, 같은 위치에 있던 데이터를 캐시에서 제거합니다. 이는 매우 특정한 사용 사례를 제외하고는 거의 사용되지 않습니다.
따라서 RAM과 CPU 캐시에 관한 질문에 대답하려면 기술적으로 둘 다이지만 거의 모든 경우에 데이터는 궁극적으로 RAM에서 나옵니다. 이에 대해 구체적으로 자세히 알아보고 싶다면 다음 두 Wikipedia 기사를 읽어 보시기 바랍니다.
https://en.wikipedia.org/wiki/Cache_(컴퓨팅)
https://en.wikipedia.org/wiki/CPU_cache
이제 스왑 공간 문제는 가상 메모리 및 페이징과 관련된 완전히 다른 개념입니다. 여기에서 설명하려고 하면 대부분의 Wkipedia 기사를 작성하게 되므로 대신 문제의 기사를 직접 알려 드리겠습니다.