레지스터와 L1케시에 성능에 대해서???
글쓴이: kkb110 / 작성시간: 화, 2005/03/15 - 2:29오전
float의 덧셈 asm 명령어 성능측정을 해봤는데요
1. fadd 레지스터1 += 레지스터2
2. fadd 메모리 += 레지스터1
이런꼴로 테스트를 해봤습니다.
#include <iostream> inline unsigned int getcycle(void) { __asm { cpuid rdtsc } } int main() { int u,v,N; N = 10000; __asm { fld dword ptr [esp]; fld dword ptr [esp]; } getcycle(); getcycle(); u = getcycle(); for(int i = 0; i < N; ++i) { __asm { fadd st,st(1) ; fadd st,st(1) ; fadd st,st(1) ; fadd st,st(1) ; fadd st,st(1) ; fadd st,st(1) ; fadd st,st(1) ; fadd st,st(1) ; } } v = getcycle(); std::cout << "first : " << (((double)(v-u))/N) << "\n\n\n"; getcycle(); getcycle(); u = getcycle(); for(int i = 0; i < N; ++i) { __asm { fadd dword ptr [esp] ; fadd dword ptr [esp] ; fadd dword ptr [esp] ; fadd dword ptr [esp] ; fadd dword ptr [esp] ; fadd dword ptr [esp] ; fadd dword ptr [esp] ; fadd dword ptr [esp] ; } } v = getcycle(); std::cout << "second : " << (((double)(v-u))/N) << "\n\n\n"; std::cin >> N; __asm { fstp st(0); fstp st(0); } return 0; }
그런데 이상하게도 결과는 거의 같더군요.
이벤치가 사실이라면 연산시킬때 일부 스택을 temp로 이용해도 된단 소리인데..
혹시 좀더 상세하게 알수 없을까요?
아니면... 제컴은 p4 1.8A 이였는데..
저소스코드로 테스트좀 부탁들입니다 ^^;
Forums:
댓글 달기