해결된 질문
작성
·
417
1
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요. 강사님.
강의 잘 보고 있습니다.
질문이 있습니다.
blanch 코드의 경우 pipeline stall이 발생할 수 있다하셨습니다.
아래는 예제입니다.
cmp r0, r1
bge 1f 만약 이 명령어가 실행된다 가정하면
blt 2f
1:
bx lr
2:
mov r0,r1
...
3-stage pipeline일 때 각 단계를 보면 아래처럼 될 것으로 생각이 듭니다.
E bge 1f
D blt 2f
F bx lr
Execute 에서 갑자기 분기를 했으니 그 전에 있던 Fetch Decode 값이 의미가 없다?라고 생각하고 버리겠죠. 이게 pipeline stall로 이해하고 있는데
it 명령어는 왜 pipeline stall이 없는 명령어인지 이해가 되지 않습니다.
다음에 실행될 명령어를 미리 안다? 생각해도 Decode 단계에서 해석을 해야 가능할 것 같은데, 그렇다면 pipeline stall이 발생할 것 같아서요.
제가 잘못 이해하고 있는건가요?
안녕하세요. 김상현님!
파이프라인을 사용하면 다음 명령어를 실행하기 위해 현재 명령어의 실행 결과를 기다릴 필요가 없으므로, 명령어 실행 속도를 높일 수 있습니다.
IT 명령어는 조건부 명령어를 처리하기 위한 것이므로, 조건 코드를 검사한 후에 실행할 명령어의 개수가 결정됩니다. 이때 파이프라인이 멈추지 않는 이유는 IT 명령어 다음에 실행할 명령어를 사전에 파이프라인 버퍼에 적재하기 때문입니다. 따라서 조건 검사 이후 실행할 명령어의 개수가 결정될 때까지 기다릴 필요가 없으므로, 파이프라인이 멈추지 않습니다.