SSE 명령어/내장 함수, 예를 들어 256 비트 레지스터를 사용할 때 다음 32 바이트 청크에서 프리 페치 (prefetch) 명령을 사용하여 메모리에서 확장 레지스터를로드하는 데 소요되는 시간을 줄일 수있는 사람이 누구인지, 또는 다른 어떤 기술로? 로드 할 데이터가 이미 메모리에 제대로 정렬되어 있다고 가정합니다.SSE 4 메모리로드 최적화
0
A
답변
0
x86 CPU 성능에 대한 자세한 내용은 x86 태그 위키를 참조하십시오. 하드웨어 프리 페처는 순차 액세스 패턴에 대한 잠금 기능이 뛰어나므로 소프트웨어 프리 페치 지침이 필요하지 않습니다.
넓은 벡터로드를 수행하는 것은 일반적으로 별개의 정수 레지스터에 압축을 풀 때가 아닙니다. 일단 캐시 라인을 만지면, 그로부터 더 많은로드가 발생하고 L1 캐시에서 레지스터로의 처리량이 일반적으로 문제가되지 않습니다. ALU 명령어를 사용하여 256b로드를 별도의 32 또는 64b 정수로 압축하면 더 많은 명령어가 필요하므로 ALU 처리량에서 병목 현상이 발생할 가능성이 높아집니다.
관련 문제
- 1. SSE 코드 최적화
- 2. SSE 마이크로 최적화 명령 주문
- 3. VC++ SSE 본질 최적화 이상한
- 4. SSE/NEON 테이블 조회 최적화
- 5. Netty 4 SSE 업데이트 이벤트
- 6. SSE 내장 함수 - 비교 if/else 최적화
- 7. C++ SLMATH 라이브러리 및 SSE 최적화
- 8. SSE/SSE2 및 asm 최적화 학습
- 9. 파이썬 py2exe - 메모리로드 오류
- 10. JDBM3에서 예기치 않은 메모리로드
- 11. Cuda는 메모리로드 동작을 통합했습니다.
- 12. Powershell 메모리로드 백분율
- 13. 레디 스 및 SSE 레일 4
- 14. glibc 및 SSE 기능
- 15. 고유 코드가 SSE 명령어에 최적화 된 코드인지 여부 확인
- 16. 4 상태 데이터 구조 최적화
- 17. 최적화 번들 및 Umbraco 4
- 18. SSE 행렬 - 행렬 곱셈
- 19. AltiVec에 MMX/SSE 명령어 포팅하기
- 20. 오류 최소화 코드 최적화
- 21. SSE/EventSource가 첫 번째 데이터 묶음 (Rails 4 + Puma + Nginx)
- 22. SSE g ++ 컴파일 문제
- 23. Really basic SSE
- 24. Linux에서 공유 라이브러리를 사용하여 메모리로드 감소
- 25. 네이티브 프로세스에서 .NET PE의 메모리로드 중
- 26. SSE/AVX가있는 OpenMP에서의 감소
- 27. SSE 버전이 다른 결과
- 28. SSE 쌍 선형 보간
- 29. SSE 액세스 위반
- 30. SSE 명령에서 오류가 발생했습니다
x86은 이미 이것을 할 수 있습니다. 논리적 메모리에서 특정 순서로 정렬 된 항목 집합을 가져 오는 경우이 데이터는 아마도 'mov'이전에 L2 캐시에서 발견 될 것입니다. –
"4" 당신의 제목에서 "for"라는 단어를 속기시겠습니까? SSE4의 [MOVNTDQA] (http://www.felixcloutier.com/x86/MOVNTDQA.html)로드 명령어 또는 SSE4와 구체적으로 관련이있는 명령어에 대해서는 언급하지 않는 것 같습니다. (256b 벡터는 AVX 기능입니다). –
특정 명령 세트를 요구하는 상업적 의미에 대해 여전히 논의하고 있기 때문에 다소 모호했습니다. 그래서, 제 질문은 넓은 레지스터로 메모리 대기 시간을 줄이기위한 일반적인 지침을 묻는 질문에 더 가깝습니다. 나는 분명히해야했다. – lhs