2013-02-08 5 views
5

하드웨어 프리 페칭은 페이지 경계를 넘지 않습니다. 나는 소프트웨어 프리 페치가 동일한 제한을 갖고 있는지, 즉 소프트웨어 프리 페치를 사용하여 미래의 TLB 미스를 피할 수 있는지 궁금합니다. 검색을 통해 가능할 것으로 보이지만 문서에서 명확한 내용을 찾을 수 없으므로 참조가 유용 할 것입니다.x86 페이지 경계에서 소프트웨어 프리 페치

저는 특히 네 할렘, 샌디 브릿지 및 웨스트 미어에 관심이 있습니다.

+0

업데이트 : IvyBridge는 페이지 경계에서 HW 프리 페치를 수행합니다. https://stackoverflow.com/a/20758769/224132. 이것은 IvB의 새로운 기능이며, 필자가 읽은 다른 것들에서 SnB 및 이전 인텔이 다음 페이지로 프리 페치하지 않는다고 말하는 것이 정확하다고 생각합니다. 투기 적 TLB로드는 적어도로드/저장 명령어의 추측 실행에 의해 트리거 될 때 문제가됩니다. –

답변

2

인텔의 Optimization Reference Manual에 따르면, 프로세서에 따라 다릅니다. 섹션 7.4.3에서 :

PREFETCH가 데이터 프리 페치를 수행하지 않는 경우가 있습니다. 이들은 다음을 포함합니다 :

  • PREFETCH는 DTLB (데이터 변환 참조 버퍼) 누락을 유발합니다. 이것은 4 개 프로세서 CPUID 서명 가족 15 모델 0, 1 또는 가 DTLB 미스를 해결 4 개 프로세서 패밀리 (15)에 대응하는 CPUID 서명 펜티엄 데이터를 페치 2. PREFETCH 모델 3.
  • 에 대응 펜티엄 적용 오류/예외를 발생시키는 지정된 주소에 대한 액세스. 또는 TLB를 피할 수있다

소프트웨어 프리 페치는 프로세서에 따라 그리워. 페이지 폴트가 발생할 경우 데이터를 가져 오지 않습니다.

TLB 누락을 방지하려면 더미 읽기를 수행하여 프리 페치 명령어 대신 데이터를로드 할 수 있습니다. 이로 인해 페이지 폴트가 페이지에서 스왑 될 수 있습니다. 유스 케이스에 따라 좋거나 나쁠 수 있습니다.

+0

OP에서 언급 한 CPU 계열은 pentium4 클래스 CPU가 아닙니다. – didierc

+0

@didierc 필자는 모르겠지만 필자는 Intel의 설명서에서 직접 복사했으며 [wikipedia] (http://en.wikipedia.org/wiki/List_of_Intel_Pentium_4_microprocessors)는 모델 0을 제외하고 모두 펜티엄 4로 나열합니다. – ughoavgfhw

+0

Good 바늘. OP는 최신 세대의 ia64 CPU (인텔 i5 및 i7 클래스, afaik)에 관심이 있습니다. 나는 너의 대답을 조금씩 풀어 내려고 노력했다. 가혹한 것처럼 들린다면 나쁘다. 내 의도가 아니었다. – didierc

2

현대 프로세서 (Nehalem, Sandy Bridge 및 Westmere)에서 소프트웨어 프리 페치가 실제로 TLB 조회를 트리거합니다. 인텔 최적화 가이드에서

: (섹션 7.3.3) 이전의 마이크로 아키텍처에서

는 프리 페치는 데이터 변환 참조 버퍼 (DTLB) 미스는 삭제 될 것입니다 원인. Nehalem, Westmere, Sandy Bridge 및 최신 마이크로 아키텍처를 기반으로하는 프로세서에서 코어 2 프로세서 및 Intel Atom 프로세서 인 Intel , PREFLOW가 DTLB를 일으키는 경우 페이지 경계를 넘어서 패치를 가져올 수 있습니다.