2011-12-13 1 views
1

메모리에 값을 쓰고 다시 읽지 않는 경우 메모리 위치가 인접하지 않으면 성능에 영향을 줍니까? (즉,하지 쓰기 캐시)메모리 지역이 쓰기에 중요한 영향을 줍니까?

프로세서가이 기회를 가지고, 또는 캐시 문제의 원인을 수행하는 백그라운드에서 메모리에 기록 할 수 있습니까? 의 CPU에서

답변

3

대부분의 캐시가 캐시 공간에 대한 경쟁이, 그리고 뭔가 플러시해야 될 때까지 쓰기가 메모리 계층 구조의 다음 단계로 전파되지 않습니다 것을 의미, 다시 쓰기입니다 잘 알고 있었다. 단일 임의 작성을 수행하면 성능 효과는 거의 볼 수 없지만 지속적인 임의 쓰기를 수행하면 순차 작성보다 성능이 크게 떨어집니다. 이 메모리의 세그먼트에 액세스 할 수있는 유일한 일이 될 가능성이 있기 때문에 임의 쓰기를 만들기

, 캐시 라인의 할당을 필요로 할 가능성이있다. 쓰기 작업이 충분 해지면 데이터 캐시에 하나의 유효한 단어가 포함 된 행을 채우게되고 행 중 하나를 플러시해야합니다. 메모리가 구성되고 액세스되는 방식 때문에 전체 메모리를 플러시하는 것보다 플러시가 빠르지 않아 랜덤 쓰기가 연속 쓰기의 32 바이트 (일반 라인 크기)와 거의 같은 속도가됩니다.

이 테스트를 위해 자체 프로그램을 작성하는 것이 좋습니다. 마지막 레벨 캐시보다 훨씬 큰 메모리를 할당하고 동일한 수의 임의 및 순차 32 비트 쓰기 시간을 맞 춥니 다. 랜덤 쓰기가 순차의 1/8과 1/4 사이 어딘가에있을 거라고 확신합니다.

또 다른 요인, 당신이 메모리에 액세스하지 않는 다른 계산에 임의 쓰기의 상대적 균형이 때문이다. 드문 경우 예, 그들은 백그라운드에서 꽤 많이 흘러 나옵니다. 성능에 영향을 미칠 수있는 병목 현상이 발생한 경우에만 해당됩니다. 동일한 문제는 순차적 쓰기에서 발생하지만 심각하지는 않습니다.