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


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

  2. 페이지 크기가 항상 또는 가장 좋은 캐시 라인 크기인지 궁금합니다. 캐시 라인 크기가 64 바이트이고 메모리 페이지 크기가 4KB 인 경우 각 페이지에는 4KB / 64 바이트 == 64 개의 캐시 라인이 있습니다.

  3. 페이지와 캐시 라인이 모두 메모리의 고정 객체입니까? 아니면 메모리의 어느 곳에서나 시작하고 플로팅 할 수있는 특정 크기의 메모리의 연속 블록입니까?

  4. 캐시 라인이 둘 이상의 페이지에 걸쳐있을 수 없는가, 즉 캐시 라인의 일부가 페이지에 있고 캐시 라인의 다른 부분이 다른 페이지에 있는가?

감사.


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

답변:


8
  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/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.