필자는 퍼포먼스를 정의하는 데 익숙하지 않지만 일반적인 정의에 따르면로드/저장소 누락은 전체 누락 율 계산을 분해하는 방법이므로 누락 된 액세스를 더 많이 알 수 있습니다. 자주. 로드는 일반적으로 (적어도 현대 x86 CPU에서는) 추측 적으로 수행되는 반면, 저장소는 커밋 시점 이후에 파이프 라인을 따라 훨씬 나중에 수행되므로로드 및 저장이 모두 동일한 영역의 코드조차도 서로 다른 누락을 가질 수 있습니다 요금.
MESI 기반 캐시 프로토콜에서로드는 캐시에 도달하거나 다른 사람이 소유하지 않은 메모리 또는 다음 캐시 레벨에서 라인을 빼고 가져옵니다. 그렇다면 공유 상태에 있습니다. 이 과정에서 캐시에 데이터를 기록합니다. 저장소는 동일한 방식으로 라인을 페치하지만 독점 소유권과 라인 수정 권한을 부여하는 RFO (소유권 판독을위한) 요청을 사용합니다. 그 라인은 여전히 캐시 될 것입니다. 그러나 일단 새로운 데이터가 로컬 (보통 L1 캐시에 있음)에 쓰여지면 수정 될 것입니다. 히트/미스 프로세스는 동일하게 보일 것입니다.
Saman이 대답에서 언급 한 것은 읽기와 쓰기 간의 분류입니다. 로드 및 저장 (및 코드 읽기와 같은 다른 액세스 형식)은 모두 "읽기"부분을 형성하고 쓰기 되돌림 (또는 캐시되지 않는 특수 명령 또는 mem 유형을 사용하는 의도적 인 쓰루 스루)은 "쓰기 부분"을 구성합니다.
위대한! 고마워요. 기본적으로 저장소가 쓰기를 의미한다는 것을 이해하지 못했습니다.로드는 메모리에서 읽는 것을 의미합니다. –
이것이 잘못되었다고 생각합니다. perf가 이러한 이벤트를 정의하는 방법에 익숙하지 않지만 "저장소"와 "로드"는 일반적으로 참조하는 데 사용됩니다. 코드에서 수행하는 실제 작업 – Leeor