2014-06-10 2 views
-1

일부 x86 어셈블리 코드가 있습니다. 메모리 을로드하는 명령을 식별하여 CPU가 얼마나 많은 고유 한 캐시 라인 블록에 액세스하고 있는지 설정할 수 있습니다..메모리 블록을로드하는 x86 명령어

내가 알아야 할 x86 명령어의 하위 집합은 무엇입니까? 원래 나는 방금 mov으로 시작하는 모든 명령이 qword 또는 dword이고, ptr 참조를 포함한다고 생각했지만 먼저 확인하고 싶습니다.

+0

코드가 SSE 또는 AVX를 사용하는 경우'lddqu' 또는'vlddqu'를 찾을 수도 있습니다. 또한 AVX 인 경우 'vmovXXX'. –

+3

LEA 명령을 제외하고 대괄호가있는 항목. –

+0

전송 메모리를 레지스터에 넣거나 버스를 사용해야하는 모든 종류의 메모리 액세스처럼 "로드"를 의미합니까? –

답변

0

방법론에 결함이 있습니다. 동일한 명령어가 다른 캐시 라인에 액세스 할 수 있습니다. 예 : memcpy은 몇 가지 지침 만 있으면되지만 루프에서 메가 바이트의 메모리를 사용할 수 있습니다.

디스어셈블러 출력의 메모리 피연산자를 찾는 것은 많은 명령어가 동일한 데이터를로드/저장하므로 루프의 일부 명령어가 많은 양의 다른 데이터를로드하거나 저장하기 때문에 아무데도 얻을 수 없습니다.

궁극적 인 질문에 대한 답변을 찾으려면 캐시/메모리 프로파일 러 프로그램이 필요합니다.

관련 문제