캐시 라인과 메모리 페이지 간의 관계

  1. 내가 맞다면 메인 메모리의 페이지가 데이터 전송을위한 가장 작은 단위입니다. 주 메모리와 하드 디스크와 같은 외부 저장 장치 사이. 메인 메모리의 캐시 라인은 메인 메모리와 CPU 캐시 사이에서 데이터를 전송하는 가장 작은 단위입니다.

  2. 페이지 크기가 항상인지 아니면 가장 좋은지 궁금합니다. 캐시 라인 크기의 자연수? 캐시 라인 크기가 64 바이트이고 메모리 페이지 크기가 4KB이면 각 페이지에는 4KB / 64 바이트 == 64 캐시 라인이 있습니다.

  3. 페이지와 캐시 라인은 둘 다 메모리에 고정 된 개체입니까? 아니면 특정 크기의 연속적인 메모리 블록일까요? 메모리 내 어느 곳에서나 시작하고 부동 할 수 있습니까?

  4. 캐시 라인은 항상 한 페이지, 즉 캐시 라인의 일부가 페이지에 있고 캐시 라인의 다른 부분이 다른 페이지에 있습니까?

감사합니다.

의견

  • 귀하의 질문에 대한 답변은 CPU 아키텍처에 따라 다릅니다.

답변

  1. 캐시 라인은 물리적 메모리를 만질 수있는 가장 작은 단위입니다. 즉, 1 바이트를 읽고 쓸 때이를 포함하는 전체 캐시 라인을 cpu 캐시로 읽고 다시 기록합니다. 쓰기 위해 캐시를 우회하는 명령어 (임시 스트리밍 명령어)도 캐시 라인 크기에 기록합니다. CPU에 따라 캐시 라인 크기는 일반적으로 32/64/128 바이트입니다. 메모리 페이지가 디스크에 기록 될 때 전체적으로 기록됩니다. 이는 메모리 압력이 너무 높거나 최대 절전 모드 프로세스 (및 다른 용도로 사용) 일 때 발생합니다. 또한 다시 필요할 때 전체를 읽습니다. 이것은 주로 커널이 페이지가 부분적으로 또는 완전히 사용되었는지 알 수있는 방법이 없기 때문입니다. 다른 외부 저장소 읽기 / 쓰기 작업은 임의의 세분성을 가질 수 있습니다 (예 : fwrite (..)).

  2. 페이지 크기는 CPU / GPU에 따라 다릅니다. 대부분의 CPU에서 페이지 크기는 4KB 이상이며 일반적으로 4KB / 64KB / 2MB / 4MB / 16MB / 1GB의 혼합을 지원합니다 (동시에 모두 지원되지 않을 수도 있음). 크기는 항상 2의 제곱입니다.

  3. 페이지와 캐시 라인은 모두 연속적이며 각각의 크기에 맞춰야합니다. 64 바이트 캐시 라인은 항상 64 바이트로 정렬되고 2MB 페이지는 항상 2MB로 정렬됩니다.

  4. # 3 때문에 캐시 라인은 페이지 크기가 2 페이지에 걸쳐있을 수 없습니다. 항상 캐시 라인보다 크고 항상 캐시 라인 크기의 배수입니다.

메모리에 관한 풍부한 정보는 다음 훌륭한 소스를 참조하십시오. http://lwn.net/Articles/250967/

댓글

  • 이 답변은 2020 년에도 여전히 관련이 있습니까? 크기가 변경 되었나요?
  • 내가 아는 한이 값은 오늘날에도 관련성이 있습니다. 모든 최신 x86 및 x64 CPU는 캐시 라인 당 64 바이트를 사용하며 4KB는 Windows 및 Linux에서 가장 일반적인 페이지 크기로 남아 있습니다. 임베디드 장치의 경우 지원되는 항목에 대한 자세한 내용은 프로세서 내부 설명서를 확인하십시오.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다