Fetch -> Decode -> Execute -> Fetch -> Decode -> ... pipe line을 이용하여 CPU 효율 극대화

jmp를 사용할 경우 pipe line의 성능을 저하시킨다.

jmp 다음에 실행될것이 어떤것인지는 Execute를 해봐야 하므로 미리 Fetch, Decode 가 된 다음 명령어는 무용지물이 되면서 jmp로 점프하면서 다시 pipe line을 시작하게 된다.

 



위의 소스 코드에서는 각 for문이 1000번씩 반복된다. 이런 반복문은 어셈블리로 보면 조건문과 jmp문으로 이루어져 있다. 때문에 pipe line 성능에 큰 영향을 미친다. 따라서 이러한 영양을 최소화 하기 위해서는 반복하는 횟수를 최소화 하는 것이다.

 



 




와 같이 하면 두번째 반복문은 250번만 반복하므로 pipe line에 영향도 1/4로 줄어 들게 된다.

하지만 이와 같은 경우 만약 반복이 1002가 되면 짜투리인

result += data[i];

result += data[i+1];

을 따로 적어 줘야 한다.

이런 경우 프로그래머는 잊어 버리고 안 쓸수도 있으므로 아래와 같은 방법을 사용하면 간단하게 해결된다.

 


크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)

트랙백을 보내세요

트랙백 주소 :: http://www.cipher.pe.kr/tt/cipher/trackback/120

댓글을 달아 주세요

[로그인][오픈아이디란?]
비밀글 (Serect)
댓글 달기 (Submit)