CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): concerto (#2/1)
날 짜 (Date): 2004년 6월  8일 화요일 오후 03시 12분 07초
제 목(Title): Re: [Q] NOP을 넣는 방법?



 pipeline 기능이 있는 프로세서에서 pipeline이 깨지는 걸 방지하고 위해
 nop를 넣는 경우는 있죠.

 inst1
 inst2
 jmp
 inst3

 위와 같은 코드가 있을 때, pipeline 기능이 있는 프로세서라면 jmp가 실행
 될 때 inst3가 이미 fetch되어 decode되고 있겠죠. 결국은 jmp가 이루어지기
 때문에 inst3는 garbage일테고요. 이렇게 되면 pipeline에 들어가 있던 이
 garbage를 다 flush시키고...새로운 instr...fetch/decode...의 
 pipeline을 시작하게되겠죠.

 이러는 것 보다 아래처럼 nop를 추가하면 jmp후에 nop들이 pipeline중에 
 있기 때문에 pipeline이 깨지지 않게 되죠.

 inst1
 inst2
 jmp
 nop
 nop
 nop
 inst3


 이런 optimization은 inline asm으로 안하고요. 컴파일을 할 때 별도의 
 옵션을 지정해서 asm code가 나오면 그거에서 하죠. 뭐 간단한 프로세서에서야
 asm으로 첨부터 짤 수 있겠지만...



 사랑은 아무나 하나...
 어느 누가 쉽다고 했나...


[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.