| [ 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으로 첨부터 짤 수 있겠지만... 사랑은 아무나 하나... 어느 누가 쉽다고 했나... |